
Wiki
Vehicle MC Wiki
Vehicle configuration, rig backends, service systems, terrain handling, and combat-ready admin workflows.
Getting Started
Start here for the real first-boot checks, module setup, and the runtime surfaces that affect every server.
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.
YML File Guides
Jump straight into the exact YAML file guide you need when you already know the filename and want the public explanation fast.
Vehicle Content
Build readable vehicle families, terrain behavior, browse layers, and driver feedback.
Service and World
Handle vehicle servicing, repair tools, fuel tanks, spawnpoints, and station behavior.
Combat and Ecosystem
Connect Vehicle MC to Duck Shot and the combat stack without losing control of performance or readability.
Vehicle MC does not only decide how a vehicle drives in a vacuum. It also lets the world change how that vehicle feels.
The most important files for that layer are:
surfaces.ymlfx.ymlaudio_limits.ymlvfx_limits.yml
Together they decide how terrain changes handling, how movement reads visually, and how far you can push those effects before they become noisy.
surfaces.yml
surfaces.yml is where terrain starts to matter.
This file controls:
- how wheel contact is sampled
- how surface profiles are matched
- how speed, accel, traction, and slip are modified
- how tire or terrain particles are emitted
Sampling mode
The sampling block decides how the plugin figures out what the vehicle is driving on.
sampling:
everyTicks: 5
mode: WEIGHTED_AVERAGE
hysteresisTicks: 8
yOffset: 0.15
wheelMode: AUTO_FROM_HITBOX
anchorsPrefix: "wheel_"Important choices:
WEIGHTED_AVERAGEfeels smoother on mixed terrainMAJORITYgives stronger dominant-surface behaviorAUTO_FROM_HITBOXis the easiest baseline- anchor or explicit offset modes are better when the rig has deliberate wheel points
Surface profiles
Surface profiles are the real handling modifiers.
Example:
surfaces:
sand:
priority: 2
match:
materials:
- SAND
- RED_SAND
multipliers:
maxSpeedMul: 0.85
accelMul: 0.80
tractionMul: 0.75
slipMul: 1.25This is where you teach the world to feel different:
- roads can feel clean and fast
- gravel can feel loose
- sand can feel bogged down
- ice can feel slippery and dangerous
Surface particles
The particle layer is not just decoration. It is part of player feedback.
particles:
enabled: true
mode: EVENT
everyTicks: 4
minSpeed: 0.05
emitOnSurfaces:
- sand
- gravel
- grass
- roadsUse this to reinforce terrain feel:
- dust on sand
- cleaner motion on roads
- skid feedback on looser terrain
fx.yml
fx.yml is the broader motion-and-feedback library.
It already covers:
- engine event cadence
- collision and skid event thresholds
- pitch curves for vehicle audio
- sound profiles
- exhaust and tire particles
- projectile impact feedback
Example profile shape:
profiles:
dirtbike:
sounds:
start:
id: minecraft:vehicles.bike.start
loop:
id: minecraft:vehicles.bike.loop
skid:
id: minecraft:vehicles.skid
particles:
exhaust:
enabled: true
type: CLOUD
tires:
enabled: true
type: SMOKEThis means each vehicle family can have its own:
- engine personality
- startup feel
- skid feel
- collision feel
- exhaust character
Audio and VFX budgets
The support limit files matter when a server becomes busy.
audio_limits.yml
This file controls budgets like:
- sounds per player per second
- sounds per chunk per second
- priority classes
vfx_limits.yml
This file controls budgets like:
- particles per player per tick
- tracers per tick
- casings per vehicle
- near, mid, and far distance thresholds
These files are what keep a polished server from turning into a wall of spam.
Suggested order
- Create one road profile and one bad-terrain profile first.
- Make sure the driver can feel the difference before adding more surfaces.
- Build one strong FX profile per vehicle family.
- Add limits only after the feedback library is working.
- Keep effects readable, not just loud.

