Skip to main content
Vehicle MC wiki

Wiki

Vehicle MC Wiki

Vehicle configuration, rig backends, service systems, terrain handling, and combat-ready admin workflows.

Vehicle Authoring

Learn the top-down YAML flow so you know what belongs in config.yml, vehicles.yml, service files, and player-side UI files.

Service and World

Handle vehicle servicing, repair tools, fuel tanks, spawnpoints, and station behavior.

Getting Started

Core Config, Runtime, and Rig Backends

Understand the plugin-wide config surface for modules, cadence, cleanup, pickup safety, and rig rendering.

config.yml decides how Vehicle MC behaves as a plugin across the whole server.

If every vehicle feels wrong in the same way, start here before touching vehicles.yml.

What belongs in config.yml

Use config.yml for plugin-wide behavior:

  • module toggles
  • runtime cadence
  • collision and landing thresholds
  • water rules
  • entity cleanup
  • default rig backend
  • seat switching
  • pickup and anti-dupe rules
  • permissions and safety

Use vehicles.yml when the change belongs to one vehicle family, one controller, or one variant.

Good editing order for this file

Do not try to tune every section at once.

A clean order is:

  1. modules
  2. runtime cadence
  3. rig backend defaults
  4. pickup and storage safety
  5. input and seat switching
  6. combat and bridge toggles only if you are ready for them

That order keeps your first pass readable and stops you from solving rig polish before the server rules are even stable.

Module toggles come first

The first global question is which systems are even live:

YAML
modules:
  storage:
    enabled: true
  ui:
    enabled: true
  fx:
    enabled: true
  surfaces:
    enabled: true
  fuel:
    enabled: true
  combat:
    enabled: false
  weapons:
    enabled: false

This matters because many other files depend on these toggles:

  • surfaces.yml does nothing useful if surfaces are disabled
  • armed-vehicle files do not matter if combat or weapons are off
  • UI tuning is not urgent if the UI module is disabled

Runtime cadence

The runtime cadence lives under runtime.tick.pipeline.

Those values decide how often the plugin updates:

  • controllers
  • collisions
  • FX
  • UI
  • autosave

Useful baseline snippet:

YAML
runtime:
  tick:
    enabled: true
    targetTps: 20
    pipeline:
      controllerEveryTicks: 1
      collisionEveryTicks: 1
      fxEveryTicks: 3
      uiEveryTicks: 2
      storageAutosaveEverySeconds: 30
      storageAutosaveSkipWhileOccupied: true

Interpretation:

  • controller and collision stay fast for feel
  • FX and UI can be a little slower without ruining control
  • autosave can stay active without constantly fighting occupied vehicles

Rig backend defaults

Vehicle MC deliberately separates:

  • vehicle physics
  • how the rig is rendered

The global rig backend lives here:

YAML
entities:
  rig:
    backend: DISPLAY

The current global options are:

  • DISPLAY
  • ARMOR_STAND
  • MODELENGINE

For most public setups, DISPLAY is the clean starting point.

The main Display tuning lives here:

YAML
entities:
  rig:
    backend: DISPLAY
    display:
      baseScale: 0.625
      viewRange: 128.0
      teleportDurationTicks: 3
      interpolationDurationTicks: 3

Use that block to fix:

  • rigs looking too large or too small
  • long-range visibility
  • visible jitter
  • correction timing

If you are building custom wheels, offsets, and hybrid rigs, continue into:

Cleanup, pickup, and anti-dupe safety

The server-safety side of Vehicle MC lives under:

  • entities.cleanup
  • safety.antiDupe
  • pickup

These settings matter just as much as movement if your players are supposed to store and redeploy vehicles safely.

YAML
pickup:
  enabled: true
  maxSpeed: 0.10
  requireEmptyVehicle: true
  preserveTrunkContents: true
  preserveHealth: true
  preserveFuel: true

Interpretation:

  • vehicles cannot be scooped up at speed
  • occupied vehicles do not disappear into storage
  • the stored item keeps the state you actually care about

Input and seat switching

The global input surface is small, but important:

YAML
input:
  provider: PACKETEVENTS
  packetEvents:
    useSteerVehicle: true
    useRotationPackets: true
    useEntityActionSneak: true
 
seats:
  switchSeat:
    enabled: true
    maxSpeed: 0.12

If players report wrong seat behavior, rubberbanding, or control weirdness across every vehicle, start here before editing an individual base vehicle.