
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.
When a Vehicle MC rig looks wrong, you need to figure out which layer is actually broken:
- the vehicle controller
- the visual rig math
- the ModelEngine state layer
- the hitbox or interaction layer
This page is the public debug workflow for that.
The first three debug questions
Before changing values at random, ask:
- Is the vehicle driving wrong, or only looking wrong?
- Is the problem in one part, one wheel, or the whole rig?
- Is the problem happening in native DISPLAY logic, ModelEngine logic, or both?
That simple split saves a lot of wasted edits.
/vehicle debug command lane
The source already exposes a useful runtime debug command surface:
/vehicle debug
/vehicle debug on
/vehicle debug off
/vehicle debug toggle
/vehicle debug status
/vehicle debug reset
/vehicle debug state <key|clear>
/vehicle debug play <animationId> [lerpinticks] [lerpoutticks] [speed] [force]
/vehicle debug stop <animationId>
/vehicle debug stopallWhat these are for:
/vehicle debugshows the target vehicle info and backend stateon|off|toggle|status|resetcontrols runtime diagnostics without making a permanent config editstate <key|clear>is useful for testing ModelEngine state routingplay,stop, andstopallare useful for raw animation testing on a ModelEngine-backed rig
This is especially helpful when a hybrid or ModelEngine rig is selecting the wrong animation state.
Config-side debug toggles
Vehicle MC also exposes config-side diagnostics:
debug:
enabled: false
hitboxParticles:
enabled: false
everyTicks: 2
rigTransforms:
enabled: false
everyTicks: 20
logLevel: INFO
Â
modelengine:
rotationSync:
enabled: false
smoothingTicks: 0
debug: falseHow to use them:
debug.enabledturns on the broad runtime debug lanehitboxParticles.enabledis for seeing collision boxes and impact math in the worldrigTransforms.enabledis for logging part-level transform math when wheels or parts are driftingmodelengine.rotationSync.debughelps when the ModelEngine body is not following Vehicle MC pose the way you expect
Do not leave these on permanently in production unless you actively need them.
When to use rigTransforms
Turn on debug.rigTransforms.enabled when:
- a wheel appears to orbit instead of spin
- the steering angle looks correct but the wheel translation is wrong
- a hybrid ModelEngine body is fine, but the native wheel layer is drifting
- a rotor or animated part is snapping to the wrong place
This is the right tool when the problem is transform math, not gameplay balance.
Hitbox particles are for collision questions, not art questions
Turn on debug.hitboxParticles.enabled when:
- players are colliding too early or too late
- a vehicle feels wider or taller than it looks
- impacts make no sense compared to the visible model
Leave it off when the issue is only visual alignment. Hitbox particles do not solve wheel-pivot problems.
Wheel pivots: use the included pivot calculator
Vehicle MC's source docs already point at a wheel helper tool:
docs/wheel_tools/vmc_pivotcalc.pyUse that when:
- a wheel spins around an invisible point
- a wheel or axle was exported off-center from Blockbench
- you need a starting
pivotOffsetinstead of guessing by hand
The source docs describe the intended workflow:
- export the wheel or axle model JSON
- run the pivot calculator against that model
- copy the suggested
pivotOffsetVehicleMCintorig.wheels[item].pivotOffset - if it is an axle model, also use the suggested left and right probe offsets for
wheels[item].axle
That is the cleanest starting point for native wheels.
When the right pivot mode is the real problem
Sometimes the wheel math is fine and the wrong pivot mode is the actual issue:
- use
pivot: SELFwhen the wheel should turn in place like a normal car wheel - use
pivot: ROOTwhen the wheel should orbit around a steering-column point, like a bike front assembly
If a car wheel is swinging like a motorcycle fork, the pivot mode is likely wrong.
If a motorcycle front wheel is staying flat in place while the handlebars swing away from it, the pivot mode is likely wrong.
ModelEngine state debugging
Use the ModelEngine debug commands when:
- the vehicle is choosing the wrong animation state
- the body should be in
drive,reverse, orturn_leftbut remains idle - you need to test an animation directly before tuning the automatic state logic
A practical sequence:
- confirm the rig backend really is
MODELENGINE - use
/vehicle debugto inspect backend state - force a state with
/vehicle debug state <key> - if needed, test a raw animation with
/vehicle debug play <animationId>
That tells you whether the problem is the animation file, the state name, or the route into the state machine.
Good live-debug order
- Confirm the controller and base movement feel correct.
- Confirm the rig backend is the one you intended.
- Fix obvious root offset mistakes.
- Fix wheel
pivotOffsetand pivot mode problems. - Add suspension and axle roll after the core wheel motion works.
- Only then debug ModelEngine state routing or premium body polish.
That order prevents you from debugging animation layers before the vehicle itself is even behaving correctly.

