ConfigReference - AntonIT99/Flans-Mod-Ultimate-2.0 GitHub Wiki

Config Reference

This page documents the legacy content-pack .txt parameters read by the classes in com.flansmodultimate.common.types.

The source of truth for this page is the current Java parser code. Some legacy keys are aliases for the same internal field; those aliases are shown together.

Parser Rules

  • Keywords are case-insensitive.
  • Most scalar values use Key value. Key = value is also accepted for scalar reads.
  • Boolean values accept true, false, 1, or 0.
  • Repeated scalar keys usually use the last non-empty value.
  • Repeated line-list keys, such as Ammo, Paintjob, AddRound, AddGun, AddAmmo, AddToAmmoGroup, and UseAmmoGroup, are accumulated.
  • Resource names are sanitized before use. Prefer lower-case names without spaces.
  • Unless a table says otherwise, times are in ticks.
  • ~ means unset, empty, or not configured.
  • Vector keys read with readVector accept bracketed, parenthesized, or bare three-component vectors. Both [1,2,3] and [1 2 3] are valid; compact comma vectors and decimal commas are also accepted where unambiguous. Keys that explicitly say float float float use whitespace-separated values.

Type Inheritance

Concrete type files inherit every parameter from their parent type.

InfoType
|-- PaintableType
|   |-- AttachmentType
|   |-- GunType
|   `-- DriveableType
|       |-- VehicleType
|       |-- PlaneType
|       `-- MechaType
|-- ShootableType
|   |-- BulletType
|   `-- GrenadeType
|-- BlockType
|   |-- ArmorBoxType
|   `-- GunBoxType
|-- AAGunType
|-- ArmorType
|-- GloveType
|-- ItemHolderType
|-- MechaItemType
|-- PartType
|-- ToolType
|-- PlayerClass
|-- Team
|-- RewardBox
`-- LoadoutPool
Config folder Class Inherits
aaguns AAGunType InfoType
armorFiles ArmorType InfoType
armorBoxes ArmorBoxType BlockType, InfoType
attachments AttachmentType PaintableType, InfoType
bullets BulletType ShootableType, InfoType
gloves GloveType InfoType
grenades GrenadeType ShootableType, InfoType
guns GunType PaintableType, InfoType
boxes GunBoxType BlockType, InfoType
itemHolders ItemHolderType InfoType
mechaItems MechaItemType InfoType
parts PartType InfoType
tools ToolType InfoType
vehicles VehicleType DriveableType, PaintableType, InfoType
planes PlaneType DriveableType, PaintableType, InfoType
mechas MechaType DriveableType, PaintableType, InfoType
classes PlayerClass InfoType
teams Team InfoType
rewardBoxes RewardBox InfoType
loadouts LoadoutPool InfoType

Common Formats

Format Meaning
string One token. Spaces are not preserved unless the key uses a text-line reader.
text line The full text after the key. Used by Name and Description.
resource Sanitized content-pack resource or short name.
sound Sanitized sound id registered by the mod.
bool true, false, 1, or 0.
enum One of the enum values listed in the table description.
vector Bracket vector, for example [0,1,2].
effect line <effectId> [duration] [amplifier] [ambient] [visible]. Duration defaults to 250, amplifier to 0; ambient/visible defaults depend on the caller.
amount/item pairs <amount> <item> [<amount> <item> ...].
item/amount pairs <item> <amount> [<item> <amount> ...].

InfoType

Inherited by every concrete type.

Identity, Assets, And Rendering

Key Format Default Purpose
Name text line "" Display name read from the full remainder of the line.
ShortName resource ~ Content-pack id for this type entry.
Description text line "" Description text.
Icon resource ~ Icon texture/item name used by generated items and paintjobs.
Texture resource ~ Main skin or item texture name.
Overlay resource ~ GUI/scope overlay texture.
Model string ~ Legacy model class name stem.
ModelScale float 1.0 Scale applied to the model.
TranslucentRendering bool false Enables translucent rendering mode.
AdditiveBlending bool false Enables additive blending for rendering.
DisableCulling bool false Forces face culling off for this type, overriding client culling defaults.
DisableFrustumCulling bool false Entities holding this item in either hand are not frustum culled, so oversized parts such as long laser beams stay visible when the holder is off-screen. The normal render distance still applies. On guns it applies only while powered on; on attachments only while the attachment is active on the held gun.
Colour / Color int int int 255 255 255 RGB color packed into the internal color field.

Loot, Recipes, And Drops

Key Format Default Purpose
DungeonProbability / DungeonLootChance int 1 Relative chance for dungeon loot handling.
RecipeOutput int 1 Output stack count for generated crafting recipes. On 1.21.1, the generated count is limited to the output item's maximum stack size; durable fuel parts therefore produce one item.
SmeltableFrom resource ~ Item id used to generate a smelting recipe.
CanDrop bool true Whether the item can be dropped.
Recipe Recipe <char> <item> ..., followed by 3 shape rows none Defines a shaped crafting recipe. Key tokens are character/item pairs; the next 3 lines are the grid.
ShapelessRecipe <item> [item ...] none Defines a shapeless crafting recipe.

Both maintained versions use the same .txt recipe generator and write both JSON layouts: data/<namespace>/recipes/ for 1.20.1 and data/<namespace>/recipe/ for 1.21.1. The compatibility layer writes legacy crafting outputs as result.item and smelting outputs as a string; modern outputs use result.id and a smelting result object with id. Modern crafting counts are limited to the output item's stack size; legacy counts preserve RecipeOutput. Loading an existing content pack fills missing counterparts without replacing authored recipes and regenerates definition-backed recipes when a generated layout is missing or the modern crafting count is invalid.

PaintableType

Inherited by AttachmentType, GunType, and the currently unregistered DriveableType.

Key Format Default Purpose
Paintjob <icon> <texture> [<dye> <amount> ...] default paintjob from Icon/Texture Adds a paintjob. Dye rainbow marks the paintjob as legendary.
AdvPaintJob <name> <icon> <texture> [<dye> <amount> ...] none Adds a named paintjob.
AddPaintableToTables <bool> or <texture> <bool> true Enables/disables all paintjobs for paint tables, or toggles a specific paintjob texture.

BlockType

Inherited by ArmorBoxType and GunBoxType.

Key Format Default Purpose
TopTexture resource ~ Top block texture.
BottomTexture resource ~ Bottom block texture.
SideTexture resource ~ Side block texture.

ShootableType

Inherited by BulletType and GrenadeType.

Item And Ammo Mapping

Key Format Default Purpose
AddAmmoFor resource line, repeatable none Adds this shootable as extra ammo for the named gun or AA gun short name.
AddToAmmoGroup group name, repeatable none Adds this shootable to the named ammo group. The group is declared by its first mention.
StackSize / MaxStackSize int 1 Maximum item stack size. The parsed value is raised to at least RecipeOutput for shootables.
DropItemOnShoot resource ~ Item to drop when fired.
DropItemOnReload resource ~ Item to drop when reloaded.
DropItemOnHit resource ~ Item to drop when the projectile hits.
RoundsPerItem int 0 Number of rounds contained in one ammo item.
NumBullets int 0 Ammo-side bullet count override. 0 defers to the gun.

Physics And Direct Hit Damage

Key Format Default Purpose
Accuracy / Spread float -1.0 Ammo-side spread value or multiplier.
Dispersion float degrees unset Alternative angular spread input. Converted internally.
FallSpeed float 1.0 Gravity/fall speed multiplier.
ThrowSpeed / ShootSpeed float 1.0 Legacy grenade throw speed; grenade launch velocity is 0.5 blocks/tick per unit (10 m/s).
ThrowSpeedMs float m/s unset Grenade throw speed in metres per second. Overrides ThrowSpeed and ShootSpeed regardless of definition or category order; divided by 20 for launch velocity. 0 drops the item. Always shown in grenade tooltips.
HitBoxSize float 0.5 Projectile hitbox size.
Mass / MassKg float grams / float kilograms 0.0 Enables kinetic damage when greater than 0, including against normalized-health vehicles. Damage uses a 9 g anchored mass^(2/3) progression; a missing mass uses fixed Damage as the normalized-vehicle compatibility fallback. Grenades and bomb-type bullets use getDeltaMovement() at impact; other bullets use firing velocity. The two keys are the same stat at different scales, so set one, not both.
Damage / DamageVsEntity / HitEntityDamage float 1.0 Base direct-hit damage.
DamageVsLiving float inherits Direct-hit damage against living entities.
DamageVsPlayer / DamageVsPlayers float inherits Direct-hit damage against players.
DamageVsVehicle / DamageVsVehicles / DamageVsDriveable / DamageVsDriveables float inherits Direct-hit damage against driveables/vehicles.
DamageVsPlane / DamageVsPlanes float inherits Direct-hit damage against planes.
IgnoreArmorProbability float 0.0 Chance or factor used by armor ignoring logic.
IgnoreArmorDamageFactor float 0.0 Damage factor used when armor is ignored.
BreaksGlass bool false Whether impact can break glass.
Bounciness float 0.0 Motion multiplier after impact. GrenadeType changes the absent-key default to 0.9.
HasLight bool false Full-bright projectile rendering.
HasDynamicLight bool false Dynamic light around the projectile.

Damage fallback after reading:

  • If base Damage is absent, it is derived from the first available specific value in this order: living, vehicles, players, planes.
  • Missing DamageVsLiving falls back to Damage.
  • Missing DamageVsPlayer falls back to DamageVsLiving.
  • Missing DamageVsVehicle falls back to Damage.
  • Missing DamageVsPlane falls back to DamageVsVehicle.

Detonation

Key Format Default Purpose
Fuse int 0 Detonation delay. 0 means no fuse condition.
DespawnTime int 0 Quiet despawn time. 0 means no despawn timeout.
ExplodeOnImpact / DetonateOnImpact / CringeExplodeOnImpact / CringeDetonateOnImpact bool false Detonate on hit. The Cringe spellings are the Labjac Edition names for the same flag.
LivingProximityTrigger float -1.0 Mine/proximity trigger radius for living entities.
VehicleProximityTrigger float -1.0 Mine/proximity trigger radius for driveables.
DamageToTriggerer float 0.0 Damage dealt to the triggering entity.
PrimeDelay / TriggerDelay int 0 Minimum delay before detonation can occur.
FireRadius / Fire float 0.0 Radius for spreading fire.
ExplosionBreaksBlocks / ExplosionsBreaksBlocks / ExplosionBreakBlocks / ExplosionsBreakBlocks bool true Whether the explosion can break blocks.
ExplosiveMassTNTg / ExplosiveMassTNTKg float grams / float kg TNT equivalent 0.0 Enables the new explosion system when greater than 0 and supplies the TNT mass used by armoured-vehicle overpressure checks. The two keys are the same stat at different scales, so set one, not both.
ExplosionRadius / Explosion float 0.0 Explosion radius.
ExplosionPower float 1.0 Explosion power multiplier.
BlastRadius float 0.0 Blast radius.
FragType enum DEFAULT Casing preset: DEFAULT (none), LOW_FRAG, STD_FRAG, SLEEVE_FRAG, HIGH_FRAG, IED_SHRAPNEL, HE_SHELL, HE_GRENADE, GP_BOMB, THICK_CASE, AIRBURST_AP, PREFORMED. Supplies typical metal mass when Mass is absent, effective fragment size/count, energy retention and peak fragment damage. Requires a positive ExplosiveMassTNTg/Kg. See Fragmentation Damage.
FragPattern enum RADIAL RADIAL, HORIZONTAL_BAND, FORWARD_FAN, or FORWARD_CONE. Controls solid angle and which targets can be hit. Forward patterns follow the projectile's travel direction while moving, or its facing when stopped.
FragMetalMassg float grams derived Optional metal mass available to form fragments. Normally derived from Mass minus TNT-equivalent charge, or from the casing preset when Mass is absent. This changes count and energy retention, not blast damage.
FragCount float derived Optional effective fragment count; useful for preformed balls or subprojectiles. It replaces the count derived from metal mass and preset fragment size.
FragBurstHeight float blocks 0 For grenade entities such as bounding mines: move the detonation point this far upward if the space is clear. Blast, fragments, sound, fire and visual effects all use that actual raised point. A ceiling leaves the burst at the grenade position.
DropItemOnDetonate resource ~ Item to drop when detonating.
DetonateSound string "" Detonation sound name.
powerShake float 10 Explosion camera-shake strength (0–100). Applied only when this shootable produces an explosion; clients independently control intensity and duration. No effect on aim.
rangeShake float 32 Explosion-shake recipient radius in blocks (0–4096). All recipients receive the authored strength, matching Labjac. Both shake fields must be positive.

Explosion Damage

The same damage inheritance rules used for direct-hit damage also apply to blast and frag damage groups.

Key Format Default Purpose
BlastDamage / ExplosionDamage / ExplosionDamageVsEntity float 1.0, then scaled Base blast damage. The loaded blast stats are scaled by 8 * ExplosionRadius + 1.
ExplosionDamageVsLiving float inherits Blast damage against living entities.
ExplosionDamageVsPlayer / ExplosionDamageVsPlayers float inherits Blast damage against players.
ExplosionDamageVsVehicle / ExplosionDamageVsVehicles / ExplosionDamageVsDriveable / ExplosionDamageVsDriveables float inherits Blast damage against driveables/vehicles.
ExplosionDamageVsPlane / ExplosionDamageVsPlanes float inherits Blast damage against planes.
FragDamage / FragDamageVsEntity float preset peak for a non-default FragType; otherwise 1.0 Peak fragment damage before hit probability and retained energy. TNT mass does not multiply it.
FragDamageVsLiving float inherits Fragment damage against living entities.
FragDamageVsPlayer / FragDamageVsPlayers float inherits Fragment damage against players.
FragDamageVsVehicle / FragDamageVsVehicles / FragDamageVsDriveable / FragDamageVsDriveables float inherits Fragment damage against driveables/vehicles.
FragDamageVsPlane / FragDamageVsPlanes float inherits Fragment damage against planes.

Particles

Key Format Default Purpose
FlareParticleCount int 0 Smoke/flare particle count.
DebrisParticleCount int 0 Debris particle count.
TrailParticles / SmokeTrail bool false Enables projectile trail particles.
TrailParticleType string smoke Trail particle type id.
NumExplodeParticles / ExplodeParticles int 0 Number of detonation particles; the latter alias wins.
ExplodeParticleType string largesmoke Detonation particle type id.
SmokeTime int ticks 0 Keeps a detonated bullet or grenade as a smoke source for this duration. A bullet shell stops at its impact point while smoking.
SmokeParticles / SmokeParticleType string explode Particle type emitted by the active smoke source.
SmokeParticlesCount int common config smokeParticlesCount Particles emitted by the smoke source each tick.
SmokeRadius float 5.0 Radius in which the smoke applies its effects.
SmokeEffect effect line, repeatable none Potion effect applied to unprotected living entities within SmokeRadius; ambient/visible default to false.

These smoke keys are shared by bullets and grenades. A smoke shell should use a physical projectile (BulletSpeed or MuzzleVelocity) so its projectile entity can remain at the impact point for SmokeTime.

Ammo Groups

An ammo group is a named set of ammo items. It saves repeating the same ammo list in every gun, AA gun, and driveable that shares a calibre, and it lets a content pack extend an existing weapon's ammo selection without editing that weapon's definition.

A group has no definition file of its own. It is declared implicitly the first time a shootable type claims membership, and every later claim of the same name joins the same group:

// bullets/762x39_ball.txt
AddToAmmoGroup 762x39

// bullets/762x39_ap.txt
AddToAmmoGroup 762x39

Guns, AA guns, and driveables then pull the whole group in with UseAmmoGroup:

// guns/ak47.txt
UseAmmoGroup 762x39
Key Used by Format Purpose
AddToAmmoGroup ShootableType (BulletType, GrenadeType) group name, repeatable Adds this ammo item to the named group, declaring the group if it does not exist yet.
UseAmmoGroup GunType, AAGunType, DriveableType group name, repeatable Accepts every ammo item in the named group, exactly as if each had been listed with Ammo (guns and AA guns) or AddAmmo (driveables).

Notes:

  • Group names are case-insensitive and may contain spaces, for example UseAmmoGroup 7.62 x 39 mm. Trailing // comments are stripped, and repeated whitespace inside a name collapses to a single space.
  • Group names are global: a group declared in one content pack can be used from another.
  • Both keys are repeatable, so one ammo item may belong to several groups and one weapon may use several groups.
  • Ammo pulled in from a group is merged with the weapon's own Ammo / AddAmmo entries and with any AddAmmoFor mappings. Duplicates are ignored, and the weapon's own entries keep their order and priority, so the default ammo of a weapon that lists both is still its first Ammo / AddAmmo entry.
  • Driveables only accept BulletType members of a group; other shootables in the group are ignored there.
  • UseAmmoGroup naming a group that no ammo item ever joined is reported in the log and contributes no ammo.
  • A weapon can restate what a shared group member does out of its own barrel with the per-ammo statistic overrides below, instead of forking the ammo item.

Per-Ammo Statistic Overrides

Generic ammunition is deliberately shared. One 75mm AP Tank Shell item is loaded by a dozen different vehicles, and one belt is fed to several guns, so the ammunition item cannot describe every barrel that fires it. These keys let the firing weapon restate what a shared round does out of its own barrel, without splitting the content pack's item into a dozen near-duplicates.

They are read by GunType, AAGunType, and DriveableType, and they apply to ammunition reached through Ammo, AddAmmo, or UseAmmoGroup alike.

Key Format Purpose
AmmoMass / AmmoMassKg <ammoShortName> <grams> / <ammoShortName> <kilograms> Replaces the round's projectile mass. Both spellings write the same gram-based value; a later line wins.
AmmoMuzzleVelocity <ammoShortName> <metresPerSecond> Replaces the round's muzzle velocity. Divided by 20 internally, exactly like MuzzleVelocity.
AmmoExplosiveMassTNTg / AmmoExplosiveMassTNTKg <ammoShortName> <gTntEquivalent> / <ammoShortName> <kgTntEquivalent> Replaces the round's bursting charge, and with it the derived blast radius, power and damage.
AmmoPenetrationAt100m <ammoShortName> <millimetres> Replaces the round's armour penetration.
AddRoundForAmmo <ammoShortName> <name> <count> <massG> [explosiveMassG] [muzzleVelocityMps] [penetrationMm] Replaces the round's whole AddRound belt for this weapon.
// vehicles/panther_g.txt — the shared 75 mm shell, fired from a KwK 42 L/70
AddAmmo 44_75APShell
AmmoMass              44_75APShell 6800
AmmoMuzzleVelocity    44_75APShell 935
AmmoExplosiveMassTNTg 44_75APShell 29
AmmoPenetrationAt100m 44_75APShell 188

The same item loaded by a Panzer IV would carry the KwK 40's 770 m/s and 143 mm instead, from that vehicle's own definition. Neither vehicle has to fork the shell item.

Rules

  • The short name is the ammunition's own ShortName, as written in its definition, before any duplicate-resolution renaming. Matching is case-insensitive.
  • Each ammunition is overridden strictly individually. Declaring a mass for one short name says nothing about any other ammunition the same weapon accepts.
  • Resolution is against the weapon that actually fires the shot. A driveable firing a shell from its own bank uses the driveable's overrides. The same driveable firing through an AddGun / PilotGun mount uses that gun's overrides, because the gun is what declared the ammunition. Overrides never cascade from a driveable down into its mounted guns.
  • Every key is repeatable, once per ammunition. A later line for the same key and the same ammunition replaces the earlier one; AddRoundForAmmo instead accumulates into that ammunition's replacement belt, in declaration order.
  • AddRoundForAmmo replaces rather than appends. As soon as a weapon declares one round for an ammunition, that ammunition's own AddRound lines are ignored for this weapon. This is the opposite of AddRound, which accumulates.
  • Values must be finite and non-negative. A malformed or negative value is reported as an ordinary content warning and dropped, leaving the ammunition's own value in place; it never aborts loading.
  • An override may give a mass to a round that had none, which puts that round on the kinetic damage and penetration scale for this weapon only.
  • Overrides are resolved from the weapon type at fire time and are never written into the projectile, so they survive world reloads and cost nothing in save data.

Precedence

Per field, highest first:

1. the weapon's AmmoMass(Kg) / AmmoMuzzleVelocity / AmmoExplosiveMassTNTg(Kg) / AmmoPenetrationAt100m
2. the matching field of the weapon's AddRoundForAmmo belt
3. the matching field of the ammunition's own AddRound belt
4. the ammunition's own top-level value
5. for velocity only, the firing weapon's BulletSpeed, then the default bullet speed

A weapon may therefore override one field and leave the rest of the round untouched. The ammunition's BulletSpeedMultiplier still applies on top of an overridden velocity.

Removing Ammunition

RemoveAmmo refuses ammunition a weapon would otherwise accept. It is read by GunType, AAGunType and DriveableType.

Key Format Purpose
RemoveAmmo <ammoShortName> [<ammoShortName> ...] Drops those rounds from the weapon's accepted ammunition.
// A cruiser's 20.3 cm main battery, wrongly handed the ship's 2 cm AA shell
Ammo       ships_shell_german20cmhe
RemoveAmmo ships_shell_german20mmaa
  • It is applied last, after Ammo, AddAmmo and every UseAmmoGroup, so it always takes precedence over all three. Order within the file does not matter.
  • The short name is the ammunition's own ShortName, matched case-insensitively, exactly as for the per-ammo overrides above.
  • The key is repeatable, and one line may name several rounds.
  • Naming ammunition the weapon never accepted is harmless and silent.
  • Use it to correct an obviously wrong inherited entry, or to deliberately narrow what a weapon accepts, without having to fork a shared ammunition group.

AAGunType

Inherits InfoType.

Combat

Key Format Default Purpose
Damage float 0.0 Multiplier applied to ammo damage for display and use.
ReloadTime int ticks 0 Reload time, scaled by the heaviest loaded ReloadTimeMultiplier. The wait after the round that empties a barrel is this or the cadence, whichever is longer. A multi-barrel mount reloads every barrel together, and only once all of them have run dry. See Fire Rate and Reloading.
Recoil float 5.0 Recoil value.
Accuracy / Spread float 0.0 Barrel/projectile spread.
Dispersion float degrees unset Alternative angular spread input. Converted internally.
SpreadPattern enum CIRCLE Spread pattern: CIRCLE, CUBE, TRIANGLE, HORIZONTAL, VERTICAL.
ShootDelay float ticks 0.0 Legacy delay between firing events. With neither this nor RoundsPerMin stated, the gun fires once per tick.
RoundsPerMin float RPM 0.0 Firing-event rate. When nonzero, overrides ShootDelay as 1200 / RPM ticks. Fractional delays are kept, so rates above 1200 RPM put several events into one tick. With alternating barrels one barrel fires per event; otherwise every loaded barrel fires per event.
NumBullets int 1 Number of projectiles per shot.
Ammo resource line, repeatable none Allowed ammo short name.
UseAmmoGroup group name, repeatable none Allows every ammo item in the named ammo group. Individual members can be restated with the per-ammo overrides.
Health int 0 Entity health, retained as the fallback when mass-normalized health is disabled or invalid.
RealMassKg / MassKg float kilograms, greater than 0 unset Complete firing/operational mass used by UseRealisticVehicleHealth.
UseRealisticVehicleHealth bool false Derives the AA gun's single health pool as realisticVehicleHealthScale * RealMassKg^(2/3), rounded to the nearest integer. Invalid mass retains authored Health.
CanShootHomingMissile bool false Allows homing missile behavior.
CountExplodeAfterShoot int -1 Counter for explode-after-shoot behavior.
IsDropThis bool true Whether this AA gun drops itself.

Barrels And Positioning

Key Format Default Purpose
NumBarrels int 1 Number of barrels, clamped to 1..16.
Barrel <id> <x> <y> <z> all 0 Barrel origin for the given barrel id. The id is a whole number; the position may be fractional (1.7.10 read whole pixels only). Used until a client reports the model's measured muzzles.
GunnerPos <x> <y> <z> 0 0 0 Gunner eye position in model pixels; the seated gunner's feet go 1.62 blocks below it.
HitBoxSize float 2.0 Width and height, in blocks, of the AA gun's physical and targetable box.
HitBoxWidth float HitBoxSize Width and depth in blocks, with a minimum of 0.0625 and no upper cap. The single square box is centred on the gun, turns with gun yaw, and controls hits, walking into it, and standing on it.
HitBoxHeight float HitBoxSize Height in blocks, with a minimum of 0.0625 and no upper cap. The axis-aligned entity box only encloses the rotating box for broad queries.
TopViewLimit float 75.0 Upward view limit.
BottomViewLimit float 0.0 Downward view limit.
SideViewLimit float 180.0 Horizontal view limit.
TraverseSpeed float degrees per second 0 (unlimited) Caps yaw and pitch traverse per axis for mounted gunners and sentries. Mouse sensitivity still controls the input amount; this value sets the mount's maximum rate. Omitted or 0 retains legacy instant rider aiming.
FireAlternately bool false Fires one barrel per firing event when true. When false, every loaded barrel fires in the event.
ShareAmmo bool false All barrels share one ammo slot when true.

Sentry Targeting And Sounds

Key Format Default Purpose
TargetMobs bool false Enables mob targeting.
TargetPlayers bool false Enables player targeting.
TargetVehicles bool false Enables vehicle targeting.
TargetPlanes bool false Enables plane targeting.
TargetMechas bool false Enables mecha targeting.
TargetDriveables bool false Alias that sets vehicles, planes, and mechas together.
TargetRange float 10.0 Sentry targeting radius.
ShootSound sound "" Shooting sound.
ReloadSound sound "" Reload sound.
SoundLength / ShootSoundLength int 0 Shoot sound length.
GunSoundRange int -1 Gunshot sound range. -1 uses the mod config gunFireSoundRange. Ignored while overridePackSoundRanges is enabled.
ReloadSoundRange int -1 Reload sound range. -1 uses the mod config reloadSoundRange. Ignored while overridePackSoundRanges is enabled.

ArmorType

Inherits InfoType.

Armor Identity And Texture

Key Format Default Purpose
Type enum/synonym helmet if missing or invalid Armor slot. Accepted groups: helmet, hat, head; chestplate, chest, body; leggings, legs, pants; boots, shoes, feet.
ArmourTexture / ArmorTexture resource inherited Texture Armor texture name. The runtime appends _1 or _2 depending on the slot.
CapeTexture resource none Cape drawn on any player or humanoid mob wearing the piece, from textures/skins/<name>.png of the same pack (a vanilla-layout 64x32 cape sheet). It replaces the wearer's own cape and ignores their cape display setting. Ignored with a warning if the file does not exist. When several worn pieces declare one, the first of chest, helmet, leggings, boots wins. Hidden while an elytra is worn or the wearer is invisible.

Defense And Durability

Key Format Default Purpose
DamageReduction double 0.0 Legacy ratio-based damage reduction.
Defence / Defense double 0.0 Legacy ratio by default. Can be treated as armor points by common config.
OtherDefence / OtherDefense double 0.0 Always legacy ratio-based reduction.
BulletDefence double inherits effective defense Bullet-specific legacy defense.
PenetrationResistance float unarmoured value of the slot Cost in penetrating power of defeating this piece, and the reference used to scale bullet damage. Defaults to 1.0 for helmets and chestplates, 0.65 for leggings and 0.35 for boots, so an armour piece is never worse than bare skin. Requires useNewPenetrationSystem. See Penetration System.
DamageReductionAmount / ArmorPoints double 0.0 Vanilla Minecraft armor points.
Toughness int 0 Vanilla armor toughness.
Durability int 0 Item durability. 0 means no durability.
Enchantability int 0 Enchantability. If absent, config defaults may be used elsewhere.

Modifiers And Effects

Key Format Default Purpose
MoveSpeedModifier / Slowness float 1.0 Movement speed multiplier.
JumpModifier float 1.0 Jump modifier.
KnockbackReduction / KnockbackModifier float 0.2 Knockback modifier/resistance value.
NightVision bool false Applies night vision behavior.
Invisible / Playermodel bool false Makes the wearer invisible while the piece is worn: the wearer's body is not drawn, and the armor itself stays visible. Players and mobs get the invisibility effect; NPCs of the NPC module are drawn without their skin.
NegateFallDamage bool false Prevents fall damage.
FireResistance bool false Prevents fire damage.
WaterBreathing / Submarine bool false Allows breathing underwater.
SmokeProtection bool false Protects from smoke grenade effects.
OnWaterWalking bool false Lets the wearer stand and walk on the surface of still (source) water. A wearer who is already deeper than ankle-deep swims normally.
Hunger bool false Applies hunger debuff behavior.
Regenerate bool false Applies regeneration behavior.
EquipSound sound "" Sound played when equipped.
AddEffect / AddPotionEffect / PotionEffect effect line none Potion effects applied by the armor. Ambient defaults to true, visible defaults to false.

AttachmentType

Inherits PaintableType and InfoType.

Attachment Role And Function

Key Format Default Purpose
AttachmentType enum GENERIC Attachment slot: BARREL, SIGHTS, STOCK, GRIP, GADGET, SLIDE, PUMP, ACCESSORY, GENERIC.
Silencer bool false Muffles gunshot sounds.
DisableMuzzleFlash / DisableFlash bool false Disables muzzle flash model rendering.
Flashlight bool false Enables flashlight behavior.
FlashlightRange float 10.0 Flashlight range.
FlashlightStrength int 12 Flashlight strength, usually 0..15.
Toggleable bool value of Flashlight Lets the toggle key (default G) switch the attachment on and off. The state is stored on the gun and shared by all of its toggleable attachments. While off, a flashlight casts no light and the model's toggleModel parts (laser beams and the like) are hidden. Stat modifiers are unaffected.
ToggleOnSound / ToggleOffSound sound ~ Sounds played when the toggle key switches the attachment on or off. The gun's own toggle sounds take precedence, and the fallback is switchfiringmode.
ModeOverride fire mode ~ Overrides the gun fire mode. Values: SEMIAUTO, FULLAUTO, MINIGUN, BURST.

Gun Modifiers

Key Format Default Purpose
MeleeDamageMultiplier float 1.0 Multiplies melee damage.
DamageMultiplier float 1.0 Multiplies gun damage.
SpreadMultiplier float 1.0 Multiplies spread.
RecoilMultiplier float 1.0 Multiplies recoil.
RecoilControlMultiplier float 1.0 Multiplies recoil return-to-center force. Lower is stronger control.
RecoilControlMultiplierSneaking float 1.0 Sneaking recoil-control multiplier.
RecoilControlMultiplierSprinting float 1.0 Sprinting recoil-control multiplier.
BulletSpeedMultiplier float 1.0 Multiplies bullet speed.
ShootDelayMultiplier float 1.0 Multiplies shoot delay.
MovementSpeedMultiplier / MoveSpeedModifier float 1.0 Multiplies player movement speed while used.

Secondary Fire

Key Format Default Purpose
SecondaryMode bool false Enables secondary/underbarrel fire.
RenderOnlyOnMode bool false Grip model and its ammunition mesh are visible only in secondary mode or during a switch. Does not change gameplay or hide the attachment as an inventory item. Other attachment slots ignore this flag, matching the fork.
SecondaryAmmo resource ~ Ammo short name for secondary fire.
SecondaryDamage float 1.0 Secondary fire damage.
SecondarySpread / SecondaryAccuracy float 1.0 Secondary fire spread.
SecondaryBulletSpeed float 5.0 Secondary projectile speed.
SecondaryShootDelay int 1 Secondary shoot delay.
SecondaryReloadTime int 1 Secondary reload time.
SecondaryNumBullets int 1 Secondary projectile count.
LoadSecondaryIntoGun int 1 Secondary ammo stacks loaded into the gun.
SecondaryFireMode fire mode SEMIAUTO Secondary fire mode.
SecondaryShootSound sound ~ Secondary shoot sound.
SecondaryReloadSound sound ~ Secondary reload sound.
ModeSwitchSound sound ~ Sound played when toggling the grip's secondary fire on or off.

Scope

Key Format Default Purpose
MinZoom float 1.0 Minimum variable zoom.
MaxZoom float 4.0 Maximum variable zoom.
ZoomAugment float 1.0 Zoom step/change amount.
ZoomLevel float 1.0 Scope zoom level.
FOVZoomLevel float 1.0 FOV zoom level.
ZoomOverlay resource inherited Overlay Scope overlay texture. Value none clears it.
HasNightVision bool false Gives night vision while scoped.
HasThermalVision / HasThermal bool false Shows the white-hot generation 3 thermal image while fully zoomed through this scope, and lights the view like night vision so the image stays readable at night. Night vision alone does not enable it.

BulletType

Inherits ShootableType and InfoType. Bullet files also reread Accuracy, Spread, and Dispersion using the same meanings as ShootableType.

Projectile And Hit Behavior

Key Format Default Purpose
BulletSpeed float 0.0 Bullet speed override. Runtime fallback may use 3.0 when a default speed is required.
MuzzleVelocity float m/s 0.0 Alternative speed input. Converted to blocks/tick by dividing by 20.
BulletSpeedMultiplier float 1.0 Multiplies projectile speed.
PenetrationAt100m float millimetres 0.0 Perpendicular-plate penetration rating used at every range. The historical key name is retained for pack compatibility. Required to directly damage a vehicle face with physical armour greater than 0 mm.
HEAT bool false Marks a shaped-charge (HEAT) warhead. PenetrationAt100m is then tested against a face's protection against HEAT, the round stops at the first vehicle part it strikes, and on realistic-health vehicles a penetration deals damage from the explosive charge rather than the round's speed. Same key as the Labjac edition. See HEAT ammunition.
HESH bool false Squash-head explosive ammunition. Stops at the first driveable part or entity using driveable armour; uses kinetic protection and existing direct damage, without a HEAT jet. Existing explosion settings still apply. See Special ammunition.
FlakParticles int 0 Number of flak particles on explosion.
FlakParticleType string largesmoke Flak particle type.
SetEntitiesOnFire bool false Sets hit entities on fire.
HitSoundEnable bool false Enables hit sound.
EntityHitSoundEnable bool false Enables entity-hit sound.
HitSound sound ~ Hit sound. Blank HitSound lines are ignored.
HitSoundRange float Mod config bulletHitSoundRange (64 by default) Hit sound range. Ignored while overridePackSoundRanges is enabled.
FlyBySound, missNoise string unset Per-ammunition near-miss sound. Unset keeps the generic bullet fly-by sound; blank or None disables it. If both aliases occur, FlyBySound wins.
FlyBySoundRange float 5 Maximum near-miss sound distance from the actual travelled segment, in blocks (0–32). Zero disables it. Applies to flying and hitscan rounds; each player hears at most one sound per round.
Suppression float 16 Near-miss impulse multiplier on the Labjac scale (16 = neutral; 0 = disabled; capped at 160). Enabled by default; the server can disable nearMissSuppression; no aim, accuracy or damage penalty is applied.
SuppressionRange float 3 Maximum near-miss suppression distance in blocks (0–32), before the server range multiplier. Zero disables it. Stopping impacts, cover, shooter/owner exclusions and direct hits are respected.
DragInAir float 0.99 Air drag, clamped to 0..1.
DragInWater float 0.8 Water drag, clamped to 0..1.
TrailTexture resource defaultbullettrail if blank Bullet trail texture.
FancyDescription bool true When false, the ammo tooltip shows only the pack name and description, without the hold-for-details statistics.
BlockHitFXScale float computed Block-hit particle velocity scale. If absent, computed from explosion radius.
AddPotionEffect / PotionEffect effect line none Potion effects applied on hit. Ambient defaults to false, visible defaults to false.

Tracer Beams And Mixed Belts

A round with a tracer beam leaves a glowing 3D beam behind it every tick, drawn at full brightness and fading over 3 ticks, so the beams blend into one streak. Above 15 blocks per tick the beam grows with the square root of the speed, up to three times its length. Colours and alpha are fractions from 0 to 1. Beams are drawn by every client from the round's own state, so other players see them too.

A mixed belt makes every AlternateBulletLoad-th round fired from one ammunition item an alternate round, counted from the first round of the item, for guns, driveable weapons, AA guns and mechas alike. As in the Labjac Edition, alternate rounds exist only with HasAlternateModel true. They can use their own model, texture, beam and trail particles, and fall back to the ordinary ones for anything they do not set.

Key Format Default Purpose
TracerBeam bool false Draws a tracer beam behind every round.
TracerBeamColor <r> <g> <b> 0.1 1.0 0.15 Beam colour.
TracerBeamLength float blocks 4.0 Beam length behind the round.
TracerBeamWidth float blocks 0.04 Beam core half-width; a wider, fainter halo is drawn around it.
TracerBeamAlpha float 0.9 Beam opacity.
HasAlternateModel bool false Enables alternate rounds.
AlternateBulletLoad int 0 Every n-th round is an alternate round. 1 or less disables them.
AlternateModel model none Model of alternate rounds. Without it they keep the ordinary model.
AlternateTexture resource none Texture of alternate rounds. Without it they keep the ordinary texture.
AlternateTracerBeam bool false Alternate rounds draw this beam instead of TracerBeam.
AlternateTracerBeamColor / Length / Width / Alpha as for TracerBeam as for TracerBeam Settings of the alternate beam.
AlternateTrailParticles bool false Alternate rounds leave trail particles even when TrailParticles is off.
AlternateTrailParticleType particle smoke Trail particle of alternate rounds.
AlternateTrailParticleCount int 10 Trail particles per tick of alternate rounds.

Penetration

Key Format Default Purpose
Penetrates bool true Enables penetration. If set false, penetrating power is forced to 0.7 and the kinetic derivation is skipped.
Penetration / PenetratingPower float 1.0 Penetrating power. Ignored when the ammunition declares a Mass, because penetrating power is then derived from muzzle kinetic energy.
PenetrationDecay float 0.0 Penetration lost per tick.
BlockPenetrationModifier float -1.0 Block penetration modifier.
PlayerPenetrationDamageEffect float 0.0 How player penetration loss affects damage.
EntityPenetrationDamageEffect float 0.0 How entity penetration loss affects damage.
BlockPenetrationDamageEffect float 0.0 How block penetration loss affects damage.
PenetrationDecayDamageEffect float 0.0 How decay affects damage.

PenetrationAt100m is the separate, range-independent physical millimetre value used by vehicle armour. Penetration / PenetratingPower, decay, and block penetration remain legacy abstract-scale mechanics and are not converted to millimetres.

When the ammunition declares a projectile Mass, meaning it uses the kinetic damage system, penetrating power is derived from muzzle kinetic energy instead of from the authored Penetration / PenetratingPower:

penetratingPower = kineticPenetrationReference * cbrt(0.5 * massKg * muzzleVelocityMps^2)

AddRound belts derive it per round. See Penetration System for the resulting scale, the velocity resolution order, and what spends the budget.

Guidance, Lock-On, And Driveable Use

Key Format Default Purpose
Bomb optional bool false Sets WeaponType to BOMB. A key with no value counts as true.
Shell optional bool false Sets WeaponType to SHELL. A key with no value counts as true.
Missile optional bool false Sets WeaponType to MISSILE. A key with no value counts as true.
WeaponType enum GUN One of MISSILE, BOMB, SHELL, MINE, GUN. Overrides the legacy bool keys.
LockOnToDriveables bool false Sets plane, vehicle, and mecha lock-on flags together.
LockOnToVehicles bool false Lock on to vehicles.
LockOnToPlanes bool false Lock on to planes.
LockOnToMechas bool false Lock on to mechas.
LockOnToPlayers bool false Lock on to players.
LockOnToLivings bool false Lock on to living entities.
MaxLockOnAngle float 45.0 Maximum lock-on acquisition angle.
LockOnForce / TurningForce float 1.0 Homing turn force.
MaxDegreeOfLockOnMissile int 20 Maximum lock-on missile turn degree.
TickStartHoming int 5 Tick when homing begins.
EnableSACLOS bool false Enables SACLOS guidance.
MaxDegreeOFSACLOS int 5 Maximum SACLOS turn degree.
MaxRangeOfMissile int 256 Maximum missile range.
CanSpotEntityDriveable bool false Enables spotting driveable entities.
ShootForSettingPos bool false Uses a configured/top-attack position behavior.
ShootForSettingPosHeight int 100 Height used by setting-position shots.
IsDoTopAttack bool false Enables top-attack behavior.
ManualGuidance bool false Enables manual guidance.
LaserGuidance bool false Enables laser guidance.
MaxRange int -1 Maximum projectile range. -1 means unset.
KnockbackModifier float 0.0 Bullet knockback modifier.

VLS, Dead Zone, And Submunitions

Key Format Default Purpose
VLS / HasDeadZone bool false Enables vertical launch/dead-zone behavior.
DeadZoneTime int 0 Dead-zone duration.
FixedTrackDirection bool false Uses a fixed tracking direction.
GuidedTurnRadius float 3.0 Guided turn radius.
GuidedPhaseSpeed float 2.0 Boost/guided phase speed.
GuidedPhaseTurnSpeed float 0.1 Boost/guided phase turn speed.
BoostParticle string ~ Boost phase particle type.
Torpedo bool false Enables torpedo behavior.
depthCharge bool false Enables depth-charge sinking and water-only server detonation. Forces a projectile entity even if no muzzle velocity is authored. Takes precedence over Torpedo motion. See Special ammunition.
activationDepth float 20 Depth in blocks below the sea-level reference; detonation requires water and depth strictly greater than this value. Clamped to 0–4096; nonfinite values revert to 20. Prime delay, fuse and lifetime still apply.
DepthChargeLifetime int 2400 Maximum depth-charge lifetime in ticks (120 seconds), replacing the normal 600-tick projectile limit only when depthCharge is enabled. Clamped to 1–72000. A positive Fuse may still detonate it earlier.
DepthChargeSeaLevel int dimension sea level Optional absolute Y coordinate used only for depth charges. Supports negative Y. Omitted values use the current dimension's sea level.
HasSubmunitions bool false Enables submunitions.
Submunition resource "" Submunition bullet short name.
NumSubmunitions int 0 Number of submunitions.
SubmunitionDelay int 0 Delay before deploying submunitions.
SubmunitionSpread float 1.0 Submunition spread.
DestroyOnDeploySubmunition bool false Destroys parent projectile when submunitions deploy.
AddRound <name> <count> <massG> [explosiveMassG] [muzzleVelocityMps] [penetrationAt100m] none Adds per-round stats when RoundsPerItem > 1.

GrenadeType

Inherits ShootableType and InfoType.

Throwing And Physics

Grenades use the same per-tick simplified projectile drag as bullets: velocity is retained at 0.99 in air, 0.8 in water, and 0.6 in lava, followed by gravity (9.81/400 blocks/tick squared times FallSpeed). Thrown guns use these same medium factors and the same 9.81/400 gravity.

Key Format Default Purpose
MeleeDamage int 1 Damage from melee-hitting with the grenade item.
ThrowDelay int 0 Delay between throws.
ThrowSound string "" Sound name played when thrown.
DropItemOnThrow resource ~ Item dropped when thrown.
CanThrow bool true Whether right-click throwing is allowed.
PenetratesBlocks bool false Whether thrown grenade penetrates blocks.
BounceSound sound "" Sound played on bounce.
Bounciness float 0.9 if absent Overrides inherited bounciness. If the key is absent or has no value, grenade bounciness becomes 0.9.
HoldToThrow bool false Labjac Edition hold-to-throw. Hold and release attack to throw overhand, hold and release use to toss underhand. The grenade is spent only on release, which the server validates, so its fuse starts then. Switching items, opening a screen or entering a vehicle puts it away without throwing. Right-click does not throw these grenades.
OverhandThrowSpeedMultiplier float 1.0 Speed multiplier of an overhand throw, which also lobs half again as high as an ordinary throw.
UnderhandThrowSpeedMultiplier float 0.45 Speed multiplier of an underhand toss, which climbs at 0.6 times the rate plus 0.08 x ThrowSpeed.
GrenadeGroundFriction float 1.0 Horizontal speed kept after bouncing off a floor or ceiling.
GrenadeAirDrag float 1.0 Extra speed kept per tick in flight and after bouncing off a wall, on top of the normal drag.
GrenadeStopSpeed float 0.03 with HoldToThrow, else 0 A grenade slower than this after a bounce comes to rest.

Sticky, Remote, And Flash

Key Format Default Purpose
Sticky bool false Sticks to surfaces.
StickToThrower bool false Sticks to the thrower.
StickToEntity bool false Sticks to entities.
StickToDriveable bool false Sticks to driveables.
StickToEntityAfter bool false Delayed entity sticking behavior.
AllowStickSound bool false Allows stick sound playback.
StickSoundRange int Mod config grenadeStickSoundRange (10 by default) Stick sound range. Ignored while overridePackSoundRanges is enabled.
StickSound sound ~ Stick sound.
SpinWhenThrown bool true Whether the model spins when thrown.
Remote bool false Can be detonated by remote tools.
DetonateWhenShot bool false Can be detonated by being shot.
FlashBang bool false Enables flashbang behavior.
FlashTime int 200 Flash duration.
FlashRange int 8 Flash radius/range.
FlashSoundEnable bool false Enables flash sound.
FlashSoundRange int Mod config grenadeFlashSoundRange (16 by default) Flash sound range. Ignored while overridePackSoundRanges is enabled.
FlashSound sound ~ Flash sound.
FlashDamageEnable bool false Enables flash damage.
FlashDamage float 0.0 Flash damage.
FlashEffects bool false Enables the configured flash potion effects. Effects are applied by the flash-damage path, so FlashDamageEnable must also be enabled.
FlashEffectsID / AddFlashEffect effect line, repeatable none Adds a flash potion effect. The keys are exact aliases and may be repeated or mixed. Omitted duration and amplifier use FlashEffectsDuration and FlashEffectsLevel; ambient/visible default to false.
FlashEffectsDuration int 0 Default duration for flash effect lines that omit duration.
FlashEffectsLevel int 0 Default amplifier for flash effect lines that omit amplifier.

Flash effects use the standard effect-line format and support multiple entries:

FlashEffects true
FlashDamageEnable true
FlashEffectsDuration 100
FlashEffectsLevel 0

FlashEffectsID 15
FlashEffectsID 2 200 1
AddFlashEffect 18 80 0

In this example, the first effect inherits duration 100 and amplifier 0. Values supplied on an individual line override those defaults. FlashEffectsID and AddFlashEffect behave identically.

Deployable Bag

Key Format Default Purpose
DeployableBag optional bool false Enables bag behavior. A key with no value counts as true.
NumUses int 1 Uses before the bag runs out.
HealAmount float 0.0 Amount healed per use.
AddPotionEffect / PotionEffect effect line none Potion effects applied to the user. Ambient/visible default to false.
NumClips int 0 Number of clips supplied for the user's current gun.

GunType

Inherits PaintableType and InfoType.

Damage, Reload, Fire Rate, And Ammo

Key Format Default Purpose
Damage float 0.0 Gun damage multiplier. Multiplied with ammo damage.
MeleeDamage float 1.0 Melee damage. Also affects inferred primary/secondary functions.
MeleeDamageDriveableModifier float 1.0 Melee damage modifier against driveables.
CanForceReload bool true Allows reload key reloads.
ReloadTime int ticks 0 Whole-magazine reload, scaled by attachment multipliers and the loaded ammunition's ReloadTimeMultiplier, and divided across NumAmmoSlots so only the slots actually refilled are paid for. The wait after the round that empties the gun is this or the cadence, whichever is longer. See Fire Rate and Reloading.
TacticalReloadTime float ticks -1 Live-ammunition reload duration. Positive values override the base duration; -1 derives it using TacticalReloadMultiplier; 0 disables the tactical bonus. Explicit positive values also enable tactical timing for internal/multiple-slot ammunition. Selection happens before reload scheduling. The existing attachment, ammunition and enchantment multipliers still apply.
TacticalReloadMultiplier float 0.8 Derived tactical-duration factor (0–2), used only when TacticalReloadTime is negative. Automatic selection requires one loaded ammo slot with live multi-round ammunition. Use 1 to preserve ordinary reload timing. Shipped reviewed belt-fed categories use 1. Secondary attachment reloads keep SecondaryReloadTime.
SecondarySwitchTime / SecondaryUnSwitchTime float ticks 8 each Entering/leaving secondary mode blocks shots and reload attempts for this server-selected duration. Rounded up, bounded 0–1200; zero disables the delay in that direction. Requests during cooldown or reload are rejected.
SecondarySwitchMovement bool true Cosmetic first-person dip during secondary-mode changes. Disable this independently of the server delay. This does not load glTF switch clips.
ConsumeBulletType int 1 Digital ammo type consumed by reloads.
BulletsPerReload double 30.0 Digital ammo amount consumed per reload.
ShootDelay float ticks 0.0 Legacy delay between shots. Falls back to 2 ticks (600 RPM) when neither this nor RoundsPerMin is stated.
RoundsPerMin float RPM 0.0 Fire rate in RPM; overrides ShootDelay as 1200 / RPM ticks. Fractional delays are kept, so rates above 1200 RPM fire more than once per tick.
NumBullets int 1 Projectiles fired per shot.
NumAmmoSlots / NumAmmoItemsInGun / LoadIntoGun int 1 Number of ammo stacks loaded into the gun.
NumBurstRounds int 3 Shots per burst.
AllowSpreadByBullet bool false Uses loaded ammo spread when available.
AllowNumBulletsByBulletType bool true Allows ammo to override projectile count.
BulletSpeed float or instant 5.0 Bullet speed. instant sets speed to 0.
MuzzleVelocity float m/s 0.0 Alternative speed input. Converted to blocks/tick by dividing by 20.
ThrowSpeedMs float m/s unset With SecondaryFunction Throw, overrides BulletSpeed and MuzzleVelocity as the thrown weapon's launch speed. Converted to blocks/tick by dividing by 20; always shown as Throw Speed in its tooltip.
Ammo resource line, repeatable none Allowed ammo short name.
UseAmmoGroup group name, repeatable none Allows every ammo item in the named ammo group. Individual members can be restated with the per-ammo overrides.
Mode fire mode list effective default FULLAUTO One or more values: SEMIAUTO, FULLAUTO, MINIGUN, BURST. First value becomes the default allowed mode. If absent, mode is SEMIAUTO but allowed/default stack mode currently remains FULLAUTO.

Spread And Recoil

Key Format Default Purpose
Accuracy / Spread float 0.0 Gun spread.
Dispersion float degrees unset Alternative angular spread input. Converted internally.
SpreadPattern enum CIRCLE CIRCLE, CUBE, TRIANGLE, HORIZONTAL, or VERTICAL.
ADSSpreadModifier float -1.0 ADS spread modifier. -1 uses common config.
ADSSpreadModifierShotgun float -1.0 ADS spread modifier for multishot guns. -1 uses common config.
Recoil float 0.0 Vertical recoil.
RecoilYaw float 0.0 Horizontal recoil. Divided by 10 after reading.
RandomRecoilRange float 0.5 Random extra vertical recoil range.
RandomRecoilYawRange float 0.3 Random yaw recoil range.
CounterRecoilForce float 0.8 Return-to-center coefficient. Higher means slower return.
CounterRecoilForceSneaking float 0.7 Sneaking return coefficient.
CounterRecoilForceSprinting float 0.9 Sprinting return coefficient.
DecreaseRecoil float 0.0 Deprecated sneaking recoil reduction.
DecreaseRecoilYaw float 0.5 if absent or non-positive Deprecated yaw reduction/divisor.
RecoilWalkingMultiplier float 1.0 Walking recoil pitch multiplier.
RecoilWalkingMultiplierYaw float 1.1 Walking recoil yaw multiplier.
RecoilSprintingMultiplier float 1.0 Sprinting recoil pitch multiplier.
RecoilSprintingMultiplierYaw float 1.2 Sprinting recoil yaw multiplier.
RecoilSneakingMultiplier float -1.0 Sneaking recoil pitch multiplier. -1 preserves legacy behavior.
RecoilSneakingMultiplierYaw float 0.8 Sneaking recoil yaw multiplier.
FancyRecoil <vertical> [horizontal] [recovery] [recoveryScope] [fall] [increase] [sneak] [speed] off Enables extended recoil. Tokens may also be written as name=value; only the value after = is used.
HasScreenShake bool false Labjac Edition infantry screen shake: every shot narrows the shooter's field of view by up to 10 degrees, recovering over the next ticks, and optionally kicks the camera up. It only changes the view, never the aim. Players can turn it off with the gunScreenShake client setting.
ScreenShakeStyle Sustained or Clean Sustained Sustained makes the punch grow with sustained fire, up to about 2.4 times during long bursts; Clean keeps it constant.
ScreenShakeIntensity float 1.0 Punch per shot, and a multiplier on the camera kick.
CameraRecoil float vertical FancyRecoil, else 0 Camera kick strength, about 2.8 degrees per unit, fading to a fifth every tick. Drawn only with view bobbing on, as in 1.7.10.
ScreenShakeCameraKick bool true Whether a screen-shaking gun also kicks the camera.

Targeting, Movement, And Use Rules

Key Format Default Purpose
CanLockAngle int 5 Lock-on angle setting.
LockOnToDriveables bool false Sets planes, vehicles, and mechas together after reading.
LockOnToVehicles bool false Allows vehicle lock-on.
LockOnToPlanes bool false Allows plane lock-on.
LockOnToMechas bool false Allows mecha lock-on.
LockOnToPlayers bool false Allows player lock-on.
LockOnToLivings bool false Allows living entity lock-on.
MaxRangeLockOn int 80 Lock-on range.
Knockback float 0.0 Shooter knockback per shot.
WalkSpreadModifier / WalkSpreadMultiplier float 1.8 Spread multiplier while walking.
SneakSpreadModifier / SneakSpreadMultiplier float 0.63 Spread multiplier while sneaking.
SprintSpreadModifier / SprintSpreadMultiplier float 7.0 Spread multiplier while sprinting.
AirborneSpreadModifier / AirborneSpreadMultiplier float 1.5 Spread multiplier while airborne.
AllowRearm bool true Allows ammo from ammo magazines/supply behavior.
ConsumeGunOnUse bool false Consumes the gun after use.
ShowCrosshair bool true Shows crosshair while holding the gun.
DropItemOnShoot resource ~ Item dropped when shooting.
MinigunStartSpeed float 15.0 Spin speed needed before minigun fires.
CanShootUnderwater bool true Allows firing underwater.
CanSetPosition bool false Allows setting guided/launcher target position.
OneHanded bool true Allows one-handed/dual-wield behavior.
ForceAimPose bool false Keeps this gun's holding arm raised in the aiming pose even when the holder uses dynamic aiming. Applies to players and humanoid mobs; the other hand follows its normal pose rules.
MirrorInLeftHand bool false Mirrors the custom gun model across its side axis in first- and third-person left-hand views. Right-hand, inventory, and dropped-item views are unchanged.
UsableByPlayers bool true Allows player use.
Toggleable bool false Lets the toggle key (default G) power the weapon itself on and off, as with lightsabers. While off it cannot shoot or melee, its melee damage and idle and melee sounds are disabled, and the model's toggleModel parts are hidden. New stacks start switched on. Toggleable attachments make the key usable even when this is false.
UsableByMechas bool true Allows mecha use.
ItemUseAction enum BOW Minecraft UseAnim value.
HipFireWhileSprinting bool unset If absent, uses common config. If present, true force allows and false force denies.
MoveSpeedModifier / Slowness float 1.0 Movement speed modifier while held.
KnockbackReduction / KnockbackModifier float 0.0 Knockback resistance modifier while held.
SwitchDelay float 0.0 Delay when switching to the gun.

Deployable And Melee

Deployable guns keep the direction chosen at placement across world reloads. Their barrel can traverse within SideViewLimit while operated, then returns to the placed direction when unoccupied. They move an operator who mounts from the front to a clear position behind the gun. They cannot be mounted without room there. An obstruction to either side stops the operator from moving farther around the emplacement, while the weapon can continue traversing through its normal yaw range. A configured FlashModel or MuzzleFlashModel is drawn for two ticks at the deployed model's automatically measured muzzle and follows its yaw and pitch. The client's muzzleFlashStyle preference selects the model when both are declared. When that muzzle can be measured, projectiles start there and first-person view height follows the model with enough clearance to see over the weapon. Unmeasurable legacy models retain normal standing eye height and use PivotHeight for firing. The bundled conventional machine guns use consistent envelopes: bipod guns use 30 degrees up, 10 degrees down and at most 40 degrees to either side; tripod and heavy guns use 20 degrees vertically and at most 40 degrees to either side.

Key Format Default Purpose
Deployable bool false Places a deployed gun instead of normal firing.
DeployedModel string "" Model for deployed gun.
DeployedTexture resource "" Texture for deployed gun.
StandBackDistance float 1.5 Player distance behind a deployed gun. The standing player follows the gun around the emplacement until an obstruction blocks further movement, and follows the ground surface, dismounting if no support is within one block below the gun.
TopViewLimit float -60.0 Upward view limit. Positive configured values are negated.
BottomViewLimit float 30.0 Downward view limit.
SideViewLimit float 40.0 Horizontal view limit, capped at 40 degrees when loaded.
PivotHeight float 0.375 Compatibility projectile origin in blocks above the gun's block position, matching its 1.7.10 meaning. A successfully measured deployed model fires from its actual muzzle instead. This value does not control the operator's standing position or eye height.
MeleeTime int 1 Delay between custom melee attacks.
AddNode <x> <y> <z> <pitch> <yaw> <roll> none Adds a melee path node. Position values are divided by 16.
MeleeDamagePoint / MeleeDamageOffset <x> <y> <z> none Adds melee damage point. Values are divided by 16.
UseCustomMeleeWhenShoot bool false Makes shooting use custom melee behavior.
UseCustomMelee optional bool false Enables custom melee. A key with no value counts as true.
PrimaryFunction enum inferred, usually SHOOT shoot, fire, zoom, melee, custommelee, custom_melee; otherwise defaults to ADS_ZOOM. throw is refused here with a content warning and falls back to SHOOT.
SecondaryFunction enum inferred, usually ADS_ZOOM Same accepted values as PrimaryFunction, plus throw: holding the use button draws the throwing arm back over the shoulder, like the vanilla spear pose, while the other arm keeps the pose it had (a shield stays raised, and a free arm that supported the raised weapon keeps pointing ahead), and releasing it after ThrowChargeTime throws the item itself, trident-style. The thrown item keeps its NBT, sticks where it lands and can be picked up again (it despawns after 5 minutes, like a dropped item; creative throws are not consumed and cannot be picked up). Its speed is ThrowSpeedMs when present, otherwise the gun's MuzzleVelocity / BulletSpeed, its spread the gun's Dispersion / Accuracy including movement modifiers, and RoundsPerMin / ShootDelay becomes an item cooldown after each throw. ShootSound replaces the vanilla trident throw sound. In flight it is drawn with the item's flat icon, tip first, sized by ModelScale.
ThrowMass float, grams 0 With SecondaryFunction Throw: a positive mass derives the hit damage kinetically from the mass and the throw speed, with the same formula as ammunition Mass; otherwise the gun's Damage is dealt. The result is rounded to the nearest half point. Hits use the shootable damage type, so armour BulletDefence applies.
ThrowChargeTime int, ticks 10 With SecondaryFunction Throw: how long the throw must be held before releasing it throws. Negative values become 0.

Display And Sounds

Key Format Default Purpose
ShowAttachments bool true Shows attachments in the item GUI/tooltips.
ShowDamage bool true Shows damage stat.
ShowRecoil bool true Shows recoil stat.
ShowAccuracy bool true Shows spread/accuracy stat.
ShowReloadTime bool true Shows reload stat.
ShowShootDelay bool true Shows shoot delay stat.
ShowBulletSpeed bool true Shows bullet speed stat.
ShowMode bool true Shows fire mode.
DistortSound bool true Randomizes pitch for shots, reloads, and melee swings. Set to false to preserve the sound's original pitch.
SoundLength int 0 Shoot sound length.
IdleSoundLength int 0 Idle loop length.
WarmupSoundLength int 20 Warmup sound length.
LoopedSoundLength / SpinSoundLength int 20 Looped/spin sound length.
IdleSoundRange int -1 Idle sound range. -1 uses the mod config gunActionSoundRange. Ignored while overridePackSoundRanges is enabled.
MeleeSoundRange int -1 Melee sound range. -1 uses the mod config meleeSoundRange. Ignored while overridePackSoundRanges is enabled.
ReloadSoundRange int -1 Reload sound range. -1 uses the mod config reloadSoundRange. Ignored while overridePackSoundRanges is enabled.
GunSoundRange int -1 Gunshot sound range. -1 uses the mod config gunFireSoundRange. Ignored while overridePackSoundRanges is enabled.
DistantSoundRange int -1 Distant shoot sound range. -1 uses 1.5 times the mod config gunFireSoundRange. Ignored while overridePackSoundRanges is enabled.
ShootSound sound ~ Shot sound.
BulletInsertSound sound defaultshellinsert Shell insert/reload sound.
ActionSound sound ~ Pump/action sound.
LastShootSound sound ~ Sound for the last round.
SuppressedShootSound sound ~ Suppressed shot sound.
LastSuppressedShootSound sound ~ Suppressed last-round shot sound.
ReloadSound sound ~ Reload sound.
EmptyReloadSound sound ~ Empty reload sound.
EmptyClickSound sound ~ One-shot empty click sound.
EmptyClickSoundRepeated sound ~ Repeated empty click sound.
ModeSwitchSound sound switchfiringmode Sound played when the fire mode is cycled (fire mode key). Use None or leave the value empty to disable it.
IdleSound sound ~ Idle/held sound. Playback follows the entity emitting it in world space, with direction and distance attenuation for all listeners, including the holder. Use mono audio for positional sound. Changing the held item immediately stops that hand's idle playback for nearby listeners; holding the weapon again starts playback immediately without waiting for the old loop timer. Switching a toggleable weapon off also stops playback; switching it on restarts playback.
ToggleOnSound / ToggleOffSound sound ~ Sounds played when the toggle key switches the weapon or its toggleable attachments on or off. Falls back to the attachment's toggle sounds, then to switchfiringmode.
MeleeSound sound ~ Melee swing sound.
MeleeHitSound sound ~ Played when a melee hit with this weapon damages its target. Applies to vanilla swings and custom melee paths alike, using MeleeSoundRange.
ShieldHitSound sound ~ Played when a melee hit with this weapon is stopped by a shield: a Flan's shield's ShieldBlockChance, a vanilla shield, or a held item's hitbox met by a custom melee path, which also ends that swing. Uses MeleeSoundRange.
WarmupSound string ~ Loop warmup sound.
LoopedSound / SpinSound string ~ Main looping sound. Enables looping sound behavior when set.
CooldownSound string ~ Loop cooldown sound.
LockOnSound sound "" Lock-on sound.
LockOnSoundTime int 0 Lock-on sound interval/time.
DistantSound / DistantShootSound sound "" Distant shot sound.

Scope, Models, Particles, Attachments, And Shield

Key Format Default Purpose
Scope resource inherited Overlay Scope overlay. none clears it.
ZoomLevel float 1.0 Default scope zoom.
FOVZoomLevel float 1.5 Default FOV zoom.
AllowNightVision bool false Allows night vision while scoped.
HasThermalVision / HasThermal bool false Shows the white-hot generation 3 thermal image while fully zoomed through the gun's own scope. A scope attachment uses its own setting instead.
HasVariableZoom bool false Enables variable zoom.
MinZoom float 1.0 Minimum variable zoom.
MaxZoom float 4.0 Maximum variable zoom.
ZoomAugment float 1.0 Variable zoom step/change.
CasingModel string "" Casing model.
CasingTexture resource "" Casing texture.
FlashModel string "" Three-frame flash model drawn at the muzzle for two ticks after each shot, including on Deployable guns whose DeployedModel has measurable gun geometry. DefaultFlash selects the built-in flash (Warfare 44 geometry), which needs no FlashTexture; its frames are centred on the origin, so animMuzzleFlashPoint is the hand-held muzzle position divided by the flash scale. Deployable placement is measured automatically.
FlashTexture resource "" Flash texture. Optional with FlashModel DefaultFlash, which defaults to the built-in texture.
MuzzleFlashModel string "" Alternative single-frame muzzle flash model; DefaultMuzzleFlash selects the built-in 1.12.2 flash. A gun may declare both this and FlashModel: the client setting muzzleFlashStyle selects one, falling back to the available model for older packs. With both declared, the hand-held muzzle position follows the FlashModel flash-scaled coordinate convention for either style; a MuzzleFlashModel-only pack retains ordinary unscaled model coordinates. The 1.12.2 flash geometry retains its fixed model size. On deployable guns it is placed at the automatically measured DeployedModel muzzle.
HitTexture resource "" Hit marker texture.
MuzzleFlashParticle string flansmod.muzzleflash Muzzle flash particle type.
MuzzleFlashParticleSize float 1.0 Muzzle flash particle size.
ShowMuzzleFlashParticleFirstPerson bool false Shows muzzle flash particles in first person.
MuzzleFlashParticleShoulderOffset vector [0,0,0] Shoulder-fire particle offset.
MuzzleFlashParticleHandOffset vector [0,0,0] Hand-fire particle offset.
ShowMuzzleFlashParticle bool true Shows muzzle flash particles.
AllowAllAttachments bool true Allows all attachments without checking restrictions.
AllowAttachments resource list none Specific allowed attachment short names.
AllowBarrelAttachments bool false Allows barrel slot.
AllowScopeAttachments bool false Allows scope/sights slot.
AllowStockAttachments bool false Allows stock slot.
AllowGripAttachments bool false Allows grip slot.
AllowGadgetAttachments bool false Allows gadget slot.
AllowSlideAttachments bool false Allows slide slot.
AllowPumpAttachments bool false Allows pump slot.
AllowAccessoryAttachments bool false Allows accessory slot.
NumGenericAttachmentSlots int 0 Number of generic attachment slots.
Shield <absorb> <originX> <originY> <originZ> <sizeX> <sizeY> <sizeZ> none Adds a shield hitbox. Coordinates and size are divided by 16; absorption is 0.0..1.0. Bullets crossing the hitbox lose that much penetrating power; other non-melee damage from the front is reduced by that fraction. Melee and blockable projectiles are handled by ShieldBlockChance instead.
ShieldBlockChance float 0.0..1.0 0.5 Chance that a shield held in either hand blocks a melee hit (vanilla attacks, mob attacks and custom melee) or a projectile (vanilla projectiles such as arrows and tridents, and guns thrown with SecondaryFunction Throw) coming from the front half-circle; for a projectile, the front is judged from the direction it flies in. Flan's bullets and grenades are not rolled for: they meet the shield hitbox instead. A blocked hit is cancelled entirely: no damage, no knockback, and a shield-block sound. The best chance among both hands applies.
ShieldMaxBlockableMeleeDamage float 10 Melee hits stronger than this cannot be blocked. It is compared with the Flan's weapon's MeleeDamage, whether swung or thrown, with the attack damage attribute of any other melee attacker, and with the damage dealt by any other projectile.

Gun Animation Keys

All keys in this subsection are read by GunAnimationConfig from gun type files on the client. Defaults are unset, meaning the model/default animation values are used.

Key Format Purpose
animMinigunBarrelOrigin vector Minigun barrel origin.
animBarrelAttachPoint / animScopeAttachPoint / animStockAttachPoint / animGripAttachPoint / animGadgetAttachPoint / animSlideAttachPoint / animPumpAttachPoint / animAccessoryAttachPoint vector Attachment points.
animDefaultBarrelFlashPoint / animMuzzleFlashPoint vector Flash/muzzle points, in model blocks; the flash is scaled by animFlashScale before this translation. animDefaultBarrelFlashPoint is added only while no barrel attachment is fitted.
animHasFlash / animHasArms / easyArms bool Flash and arm-rendering toggles.
armScale vector Global arm scale.
animLeftArmPos / animLeftArmRot / animLeftArmScale vector Left arm transform.
animRightArmPos / animRightArmRot / animRightArmScale vector Right arm transform.
animRightArmReloadPos / animRightArmReloadRot / animLeftArmReloadPos / animLeftArmReloadRot vector Reload arm transforms.
animRightArmChargePos / animRightArmChargeRot / animLeftArmChargePos / animLeftArmChargeRot vector Charge arm transforms.
animStagedRightArmReloadPos / animStagedRightArmReloadRot / animStagedLeftArmReloadPos / animStagedLeftArmReloadRot vector Staged reload arm transforms.
animRightHandAmmo / animLeftHandAmmo bool Hand ammo display toggles.
animGunSlideDistance / animAltGunSlideDistance / animRecoilSlideDistance / animRotatedSlideDistance / animShakeDistance / animRecoilAmount float Slide, recoil, and shake movement amounts.
animCasingAnimDistance / animCasingAnimSpread / animCasingRotateVector / animCasingAttachPoint vector Casing animation vectors.
animCasingAnimTime / animCasingDelay int Casing timing.
animCasingScale / animFlashScale float Casing and flash scale.
animChargeHandleDistance / animChargeDelay / animChargeDelayAfterReload / animChargeTime float/int Charge handle movement and timing.
animCountOnRightHandSide / animIsBulletCounterActive / animIsAdvBulletCounterActive bool Ammo counter options.
animTiltGunTime / animUnloadClipTime / animLoadClipTime float Reload timing stages.
animScopeIsOnSlide / animScopeIsOnBreakAction bool Scope attachment movement flags.
animNumBulletsInReloadAnimation float Number of bullets represented in reload animation.
animPumpDelay / animPumpDelayAfterReload / animPumpTime / animHammerDelay int Pump and hammer timing.
animPumpHandleDistance / animEndLoadedAmmoDistance / animBreakActionAmmoDistance float Pump/end-loaded/break-action movement.
animGripIsOnPump / animGadgetsOnPump bool Attachment-on-pump flags.
animBarrelBreakPoint / animAltBarrelBreakPoint vector Break-action pivot points.
animRevolverFlipAngle / animRevolver2FlipAngle / animBreakAngle / animAltBreakAngle float Revolver and break-action angles.
animRevolverFlipPoint / animRevolver2FlipPoint vector Revolver flip points.
animSpinningCocking bool Spinning cocking behavior.
animSpinPoint / animHammerSpinPoint / animAltHammerSpinPoint vector Spin/hammer points.
animHammerAngle / animAltHammerAngle float Hammer angles.
animIsSingleAction / animSlideLockOnEmpty bool Single-action and slide-lock behavior.
animLeftHandPump / animRightHandPump / animLeftHandCharge / animRightHandCharge / animLeftHandBolt / animRightHandBolt bool Handedness flags for pump, charge, and bolt actions.
animPumpModifier / animGunOffset / animCrouchZoom / animRotateGunVertical / animRotateGunHorizontal / animTiltGun float General first-person transform modifiers.
animChargeModifier / animTranslateGun vector Charge/gun translation vectors.
animFancyStance / animStagedReload / animStillRenderGunWhenScopedOverlay bool Stance, reload, and scoped rendering toggles.
animTranslateClip vector Current code reads this for both stance translate and clip translate.
animStanceRotate vector Stance rotation.
animRotateClipVertical / animStagedRotateClipVertical / animRotateClipHorizontal / animStagedRotateClipHorizontal / animTiltClip / animStagedTiltClip float Clip rotation and tilt.
animStagedTranslateClip / animThirdPersonOffset / animItemFrameOffset vector Staged clip, third-person, and item-frame offsets.
animAdsEffectMultiplier float ADS visual effect multiplier.
animAnimationType NONE, BOTTOM_CLIP, PISTOL_CLIP, TOP_CLIP, SIDE_CLIP, P90, SHOTGUN, RIFLE, REVOLVER, END_LOADED, RIFLE_TOP, BULLPUP, ALT_PISTOL_CLIP, GENERIC, BACK_LOADED, STRIKER, BREAK_ACTION, any of those prefixed CUSTOM, or CUSTOM Replaces the reload animation the gun model declares. As in 1.7.10, REVOLVER2 and CUSTOMREVOLVER2 resolve to REVOLVER and CUSTOMREVOLVER.
animMeleeAnimation DEFAULT, NONE, BLUNT_SWING, BLUNT_BASH, STAB_UNDERARM, or STAB_OVERARM Replaces the melee animation field the gun model declares. As in 1.7.10, the built-in renderer does not act on it; custom model code can read it.

GunBoxType

Inherits BlockType and InfoType.

GUI

Key Format Default Purpose
GuiTexture file-name resource default gun box GUI Custom GUI texture.
GunBoxNameColor hex string 404040 Gun box title color.
PageTextColor hex string FFFFFF Page text color.
ListTextColor hex string 404040 Item list text color.
ItemTextColor hex string 404040 Item text color.
ButtonTextColor hex string FFFFFF Button text color.
ButtonTextHighlight hex string FFFFA0 Button hover text color.

Entries

Key Format Default Purpose
Page / SetPage text line Default Starts or names a page. Pages hold up to 8 guns; overflow creates another default page.
AddGun / AddType <shortName> [<amount> <item> ...] none Adds a gun/item entry and its required parts.
AddAmmo / AddAltType / AddAltAmmo / AddAlternateAmmo <shortName> [<amount> <item> ...] none Adds ammo to the most recently added gun entry.

ArmorBoxType

Inherits BlockType and InfoType.

Key Format Default Purpose
GuiTexture file-name resource default armor box GUI Custom GUI texture.
AddArmour / AddArmor <shortName> <display name...> followed by 4 armor lines none Adds one armor set page. The following four lines are parsed as helmet, chest, legs, and boots.

Armor set lines after AddArmor use:

<armorShortName> [<item> <amount> ...]

The recipe parser uses item/amount pairs for those four armor lines.

PartType

Inherits InfoType.

Key Format Default Purpose
Category enum COCKPIT COCKPIT, WING, ENGINE, PROPELLER, BAY, TAIL, WHEEL, CHASSIS, TURRET, FUEL, MISC.
StackSize int 0 Item stack size.
FuelConsumption float 1.0 Engine fuel consumption.
EngineSpeed float 1.0 Engine speed/thrust multiplier.
EnginePower float 10.0 Engine power output.
UseRF / UseRFPower bool false Uses RF power instead of Flan's Mod fuel.
RFDrawRate int 1 RF draw per tick.
Fuel int 0 Fuel amount for fuel parts.
WorksWith one or more of plane, vehicle, mecha all three Restricts the driveable kinds the part can power and for which it can be selected as a default engine.
CanBeDefaultEngine bool true Allows an engine to be selected automatically or through a configured default-engine override.
IsAIChip bool false Marks the part as an AI chip.
PartBoxRecipe current parser starts amount/item pairs at the third token none Part box recipe ingredients. The first two tokens after the key are currently skipped by code.

RF engines are not eligible for automatic/default-engine selection, even when CanBeDefaultEngine is enabled.

ToolType

Inherits InfoType.

Key Format Default Purpose
Parachute bool false Deploys a parachute on use.
ExplosiveRemote bool false Detonates remote explosives.
Key bool false Marks the tool as a key.
Heal / HealPlayers bool false Enables player healing.
Repair / RepairVehicles bool false Enables driveable repair.
HealAmount / RepairAmount int 0 Heal/repair amount per use.
ToolLife / ToolUes / ToolUses int 0 Number of uses. 0 means infinite. ToolUes is the supported legacy typo; ToolUses is the corrected alias.
DestroyOnEmpty bool true Destroys the tool when depleted.
Food / Foodness int 0 Hunger restored when eaten/used as food.
RechargeRecipe current parser starts amount/item pairs at the second token none Shapeless recharge ingredients. The first token after the key is currently skipped by code.

GloveType

Inherits InfoType.

Key Format Default Purpose
Enchantability int 20 Glove enchantability.
Durability int 200 Glove durability. 0 means no durability.

ItemHolderType

Inherits InfoType.

ItemHolderType currently reads no additional parameters beyond the shared InfoType keys.

MechaItemType

Inherits InfoType. Loaded from mechaItems.

Key Format Default Purpose
Type mecha item type NOTHING Attachment slot/type.
ToolType mecha tool type SWORD Tool function.
Speed / ToolHardness / Reach float, at least 0 1.0 Tool speed, mining hardness, and reach. A mecha digs one block at a time with one combined rate, as in 1.7.10: it starts at 1 and is multiplied by the Speed of every tool in an intact arm whose ToolType suits the block and whose ToolHardness is at least the block hardness. Each tick adds a tenth of that rate, divided by the block hardness, to the break progress, so two effective tools work much faster together than either alone.
Armour float 0.0 Damage resistance supplied by the item.
SpeedMultiplier float, at least 0 1.0 Mecha movement-speed multiplier.
EnergyShield int, at least 0 0 Energy-shield strength.
LightLevel int, clamped to 0..15 0 Light emitted by the equipped item.
Floatation / StopMechaFallDamage / ForceBlockFallDamage bool false Floating and fall-damage modifiers.
AutoFuel / ItemVacuum / IronRefine / Nanorepair bool false Automatic fuel, item collection, iron refining, and repair abilities.
RocketPack / DiamondDetect / InfiniteAmmo / ForceDark / WasteCompact / FlameBurst bool false Optional special abilities.
NanorepairAmount / RocketPower float, repair at least 0 1.0 Repair amount and rocket strength.
CoalMultiplier / DiamondMultiplier / EmeraldMultiplier / IronMultiplier / RedstoneMultiplier float 1.0 Resource yield multipliers.
SoundEffect / DetectSound sound "" Ability and detector sounds.
SoundTime float, at least 0 0.0 Sound interval/duration.

PlayerClass

Inherits InfoType. Loaded from classes for the Teams system.

Key Format Default Purpose
UnlockLevel int, at least 0 0 Level required to select the class.
RequiredPrestigeLevel int, at least 0 0 Prestige level required to select the class, on top of UnlockLevel.
ClassLimit int -1 Most players of one team who may use the class at once. Negative means no limit.
ClassLimitPercent / ClassLimitPercentage float, up to 100 -1 Largest share of a team that may use the class at once, rounded up to whole players. Negative means no limit. When ClassLimit is also set, the smaller of the two applies.
SkinOverride resource/string "" Optional player skin override.
Hat / Helmet item short name none Starting head armour; the second alias wins when both are present. none clears the slot.
Chest / Top item short name none Starting chest armour.
Legs / Bottom item short name none Starting leg armour.
Shoes / Boots item short name none Starting foot armour.
AddItem <item[+attachment...]> [amount] [damage] [Paintjob=id], repeatable none Adds a starting item. Amount defaults to 1 and damage to 0; gun attachments use +shortName. For paintable items, append Paintjob=id after amount and damage to select a paintjob (0 is the default; additional paintjobs are numbered from 1 in definition order). Missing, malformed, negative, or unknown IDs use the default paintjob; non-paintable items ignore this option. Example: AddItem romanScutumImperial 1 0 Paintjob=2 gives the first blue imperial scutum.

The SkinOverride texture is read from the pack's skins folder and is only applied when its size matches a player skin layout, otherwise it is ignored with a warning in the log:

  • A square sheet (64x64, or any whole multiple of it for HD skins) is used as it is.
  • A 2:1 sheet (64x32, or any whole multiple of it) is read as the old skin format and rebuilt into the modern layout before use, the same way Minecraft treats old skins: the left arm and the left leg are filled with horizontally mirrored copies of the right ones, only the head keeps a second layer, and a hat layer painted fully opaque, which is how old editors wrote "no hat", is dropped.

Clients only draw the override when enablePlayerClassSkinOverrides is on, and never on players another mod renders with its own player renderer or model.

Team

Inherits InfoType. Loaded from teams.

Key Format Default Purpose
TeamColour int int int 255 255 255 RGB team colour.
TextColour formatting colour name white Chat/display colour. Also accepts orange, light-colour legacy spellings, and Grey spellings.
AllowedForRoundsGenerator bool false Allows automatic round generation to choose the team.
HasVictorySound bool true Whether a round this team wins is announced with victory and defeat sounds.
VictorySound sound name victory Sound the team's members hear when it wins. Where no pack provides a sound of that name, clients play a vanilla fanfare instead.
DefeatSound sound name defeat Sound the team's members hear when it loses. Silent unless a pack provides it.
VictoryFlagTexture skin texture name "" Texture from the pack's skins folder shown beside the round result and flown on the capture points the team holds. Without one the flag is plain, in the team colour.
Hat / Helmet, Chest / Top, Legs / Bottom, Shoes / Boots item short name none Team armour overrides; the second alias in each pair wins.
AddDefaultClass / AddClass class short name, repeatable none Adds selectable player classes. Default classes are ordered before added classes.

RewardBox

Inherits InfoType. Loaded from rewardBoxes.

Key Format Default Purpose
RarityWeight <rarity> <weight>, repeatable 1.0 per rarity Sets a non-negative selection weight for a paintjob rarity.
AddPaintjob <rarity> <paintableType> <paintjob>, repeatable none Adds a paintjob reward and assigns its rarity. Unknown types or paintjobs are skipped.

LoadoutPool

Inherits InfoType. Loaded from loadouts for ranked Teams loadouts.

Key Format Default Purpose
MaxLevel int, at least 1 20 Maximum rank.
XPForKill / XPForDeath / XPForKillstreakBonus int, at least 0 10 / 5 / 10 XP awards.
XPPerLevel integer list max(30, level * 30) XP thresholds, one entry per level; missing entries use the formula.
SlotUnlockLevels up to five integers 0 0 5 10 20 Unlock ranks for the five saved loadouts.
AddPrimary / AddSecondary / AddSpecial / AddMelee / AddArmour <type> <unlockRank> [<extraItem> <count> ...], repeatable none Adds an item choice to a loadout slot with optional granted extras.
DefaultLoadout <1..5> <primary> <secondary> <special> <melee> <armour> empty Defines one saved default loadout. Use none for an empty slot.
AddRewardBox reward-box short name, repeatable none Adds a reward box; duplicates are removed and at most three are retained.
AddReward <rewardId> <rank>, repeatable none Grants a reward at a positive rank.

DriveableType

Extends PaintableType and inherits its parameters along with the shared InfoType parameters. It also reads driveable-specific parameters for seats, parts, weapons, movement, sounds, collision meshes, and particle emitters.

Driveables also accept optional real-world specification keys prefixed with Real, plus DriveType, and optional physical armour and normalized-health keys. These are documented separately on the Realistic Vehicle Physics and Vehicle Armour and Damage pages. They are entirely optional: a definition that declares none of them keeps its existing behavior exactly, and no legacy key listed on this page changed its meaning or unit.

Vehicle Optics

These Krishna-compatible keys configure driver, pilot, and passenger gunsights. Sight indices are one-based. Camera positions use model units and are divided by 16. See Vehicle Optics for controls, rendering behavior, examples, and the HUD editor.

Key Format Default Purpose
HasScope bool false Enables the driver scope.
NightScope / NightSight bool false Enables optical night vision for the driver sight.
Gunsight one or more textures inherited Overlay Ordered driver sight overlays.
GunsightZoom one or more floats, each at least 1 1 Ordered magnifications; missing later values reuse the last value.
ThermalGuis one or more one-based sight indices none Marks driver sights as thermal channels.
ThermalSight bool false Allows thermal toggling for a single driver sight.
ShowCrosshair bool false Retains the vanilla crosshair while using driver optics.
HasGunsightPos bool false Enables a custom driver camera anchor.
GunsightPos <x> <y> <z> 0 0 0 Driver camera anchor following the turret.
HeliGUI / PassengerGunsight texture none Shared passenger fallback overlay. Singular PassengerGunsight is distinct from plural PassengerGunsights.
OpticsModeSeat / SeatOpticsMode <seat> <bool> false Enables a toggleable optics mode for a seat and enables scope support.
PilotOptics / DriverOptics / GunnerOptic bool false Applies the same optics-mode setting to seat 0.
SeatOpticsCamera / OpticsCameraSeat <seat> <x> <y> <z> none Enables and positions a seat camera anchor.
PilotOpticsCamera / DriverOpticsCamera / GunnerOpticCamera <x> <y> <z> none Enables and positions the seat 0 camera anchor.
PassengerZoom <seat> <float> 1 Fallback seat magnification, clamped to at least 1.
SeatHasScope / PassengerHasScope <seat> <bool> false Enables scope availability for a seat.
SeatAutoScope / PassengerAutoScope <seat> <bool> false Keeps the seat scope up while occupied; the occupant cannot lower it.
SeatNightSight / PassengerNightSight <seat> <bool> false Enables optical night vision for a seat.
HeliGUISeat / SeatOverlay <seat> <bool> false Enables the passenger overlay for a seat; the gunner opens and closes it with the vehicle scope key.
SeatGunsight / PassengerGunsights <seat> <texture...> fallback overlay Sets ordered seat overlays and enables scope support.
SeatGunsightZoom / SeatGunsightZooms / PassengerGunsightZoom <seat> <float...> 1 Sets ordered per-sight magnifications.
SeatThermalGuis / PassengerThermalGuis <seat> <index...> none Marks one-based thermal channels and enables scope support.

Optics HUD keys beginning with SeatOptics take a seat id immediately after the key. Sight variants then take a one-based sight id. The PilotOpticsHUD... forms apply to seat 0 and omit the seat id.

Key Remaining format Default Purpose
SeatOpticsHUD / SeatOpticsHUDEdit / SeatOpticsHUDRequireRangeKey <seat> <bool> false / false / true Enables the HUD, its editor, or stored rather than live range measurement.
SeatOpticsHUDMaxRange <seat> <distance> 5000 Maximum ranging distance, clamped to at least 1.
SeatOpticsHUDInherit <seat> <sourceSeat> or <seat> NONE inferred Selects another seat's HUD or disables inheritance.
SeatOpticsHUDScale / SeatOpticsHUDScaleSight <seat> <scale> / <seat> <sight> <scale> 1 Global or per-sight HUD scale, clamped to at least 0.1.
SeatOpticsHUDColor / SeatOpticsHUDColorSight <seat> <color> / <seat> <sight> <color> 55FF55 Packed or RGB HUD colour, globally or per sight.
SeatOpticsElevationIndicator <seat> <bool> false Enables the elevation indicator.
SeatOpticsCompassMarker / SeatOpticsCompassMarkerSight <seat> <texture> / <seat> <sight> <texture> none Compass marker texture, globally or per sight.
SeatOpticsCompassMarkerSize / SeatOpticsCompassMarkerOffset <seat> <width> <height> / <seat> <x> <y> 18 24 / 0 10 Compass marker size and offset.
SeatOpticsRangePos / SeatOpticsRangePosSight / SeatOpticsRangeScale / SeatOpticsRangeScaleSight / SeatOpticsRangeTexture / SeatOpticsRangeTextureSight / SeatOpticsRangeTextureSize seat, optional sight, then the value built-in range layout Range-element position, scale, texture, and texture size.
SeatOpticsSpeedPos / SeatOpticsSpeedPosSight / SeatOpticsSpeedScale / SeatOpticsSpeedScaleSight / SeatOpticsSpeedTexture / SeatOpticsSpeedTextureSight / SeatOpticsSpeedTextureSize seat, optional sight, then the value built-in speed layout Speed-element position, scale, texture, and texture size.
SeatOpticsTraversePos / SeatOpticsTraversePosSight / SeatOpticsTraverseScale / SeatOpticsTraverseScaleSight / SeatOpticsTraverseTexture / SeatOpticsTraverseTextureSight / SeatOpticsTraverseTextureSize seat, optional sight, then the value built-in traverse layout Traverse-element position, scale, texture, and texture size.
SeatOpticsCompassPos / SeatOpticsCompassPosSight / SeatOpticsCompassScale / SeatOpticsCompassScaleSight / SeatOpticsCompassTexture / SeatOpticsCompassTextureSight / SeatOpticsCompassTextureSize seat, optional sight, then the value built-in compass layout Compass-element position, scale, texture, and texture size.
SeatOpticsElevationPos / SeatOpticsElevationPosSight / SeatOpticsElevationScale / SeatOpticsElevationScaleSight / SeatOpticsElevationTexture / SeatOpticsElevationTextureSight / SeatOpticsElevationTextureSize seat, optional sight, then the value built-in elevation layout Elevation-element position, scale, texture, and texture size.
PilotOpticsHUD / PilotOpticsHUDEdit / PilotOpticsHUDRequireRangeKey / PilotOpticsHUDMaxRange / PilotOpticsHUDInherit / PilotOpticsHUDScale / PilotOpticsHUDScaleSight / PilotOpticsHUDColor / PilotOpticsHUDColorSight same values as the corresponding SeatOpticsHUD... key, without a seat id same Configures the seat 0 HUD directly.

For each element family, Pos takes <x> <y>, Scale takes a positive float, Texture takes a texture or NONE, and TextureSize takes <width> <height>. The listed PosSight, ScaleSight, and TextureSight forms insert a one-based sight id for a per-sight override; texture size is global to the element.

Seats And Wheels

Positions in these rows use legacy model units and are divided by 16 unless stated otherwise. Seat id 0 is the driver; passengers start at 1.

For planes and helicopters, a running engine and its selected throttle remain active while any seat is occupied. If the driver seat becomes empty while player passengers remain, the first occupied player passenger seat in definition order receives throttle, yaw, pitch, and roll control. Pilot weapon banks and auxiliary pilot controls are not delegated; the passenger's own authored gun remains independent. When the last rider leaves, the engine request and throttle are cleared.

Key Format Default Purpose
Driver / Pilot <x> <y> <z> [minYaw maxYaw minPitch maxPitch] model origin Defines the driver seat. The first valid driver/pilot line is used.
DriverPart part name core Part carrying the driver seat.
DriverGun / PilotGun gun short name none Gun mounted for the driver. DriverGun has priority.
NumPassengers / Passengers int number of Passenger lines Declared passenger count. The highest passenger id can increase it.
Passenger <id> <x> <y> <z> <part> [minYaw maxYaw minPitch maxPitch [gunType gunName]], repeatable none Defines a passenger or gunner seat.
DriverGunOrigin vector driver position Driver gun firing origin.
GunOrigin <seatId> <x> <y> <z>, repeatable seat position Passenger-gun firing origin. The round leaves 1.35 blocks above this point, the legacy mounted-gunner offset, so the authored value sits below the muzzle it produces. Author the muzzle with the gun at rest: when the seat's registered gun model has a pivot, the origin turns round that pivot as the gun aims. Positions are divided by 16.
RotatedDriverOffset vector 0 0 0 Driver offset in the rotating seat frame.
RotatedPassengerOffset <seatId> <x> <y> <z>, repeatable 0 0 0 Passenger rotating-frame offset.
DriverAimSpeed vector 2 2 0 Driver yaw/pitch aiming speed.
TurretRotationSpeed float none Legacy vehicle driver-yaw fallback used only when DriverAimSpeed is absent. This older mouse-turn coefficient is converted to yaw degrees per tick by multiplying it by 100 / 3; it does not change pitch speed.
PassengerAimSpeed <seatId> <x> <y> <z>, repeatable 2 2 0 Passenger aiming speed. This vector is not divided by 16.
DriverLegacyAiming / DriverYawBeforePitch / DriverLatePitch / DriverTraverseSounds bool false / false / true / false Driver aiming and traverse behavior.
PassengerLegacyAiming / PassengerYawBeforePitch / PassengerLatePitch / PassengerTraverseSounds <seatId> <bool>, repeatable false / false / true / false Per-passenger aiming and traverse behavior.
PassengerYawSound / PassengerPitchSound <seatId> <sound>, repeatable none Per-seat traverse sounds.
PassengerYawSoundLength / PassengerPitchSoundLength <seatId> <ticks>, repeatable 0 Per-seat traverse sound lengths.
Wheel / WheelPosition <index> <x> <y> <z> [part], repeatable none Wheel anchor. Part defaults to coreWheel. As in 1.7.10, ModelScale scales the anchors' horizontal spacing but not their height, so a driveable rests at the same height at any scale.

Parts, Recipes, And Collision

Key Format Default Purpose
SetupPart / SetupArmoredPart / SetupCompositeArmoredPart <part> <health> <x> <y> <z> <width> <height> <depth> [resistance] [crewMultiplier] none Defines a part hitbox. Resistance defaults to 5; crew multiplier defaults to 0.
SetupCrewedPart / SetuCrewedpPart / SetupAnimalPart same as SetupPart none Defines a crew-bearing part hitbox; crew multiplier defaults to 1. SetuCrewedpPart is a supported legacy typo.
PartDeathExplosion <part> <radius> <power> <breakBlocks> [living player plane vehicle] none Explosion created when the part dies.
AddRecipeParts / AddRecipePart / AddRecipieParts <part> [<amount> <item> ...], repeatable none Adds partwise and overall recipe ingredients. The misspelling is accepted.
AddDye <amount> <colour>, repeatable none Adds a vanilla dye ingredient.
FancyCollision bool false Makes the authored collision meshes, instead of the part hitboxes, the solid shape entities stand on and bump into. Projectiles and damage always use the part hitboxes.
AddCollisionMesh / AddTurretCollisionMesh <positionVector> <sizeVector> <8 vertexVectors>, repeatable none Adds a core or turret collision mesh.
AddCollisionMeshRaw / AddTurretCollisionMeshRaw <x y z> <w h d> [compat] <24 vertex values>, repeatable none Raw numeric form of the collision mesh.

Weapons

Bomb banks release their projectiles at zero velocity relative to the driveable. A dropped bomb inherits the driveable's world velocity at release, then its configured gravity changes its motion. The bank's BulletSpeed adds no launch speed to a dropped bomb. Other weapon-bank types continue to use their resolved muzzle velocity and firing direction.

Key Format Default Purpose
AllowAllAmmo / AcceptAllAmmo bool true Allows all compatible bullet types; the latter alias wins.
AddAmmo ammo short name, repeatable none Adds explicitly accepted ammo.
UseAmmoGroup group name, repeatable none Adds all bullet members of an ammo group.
Primary / Secondary weapon type NONE Selects the primary and secondary weapon-bank types.
FlashModel DefaultFlash none Enables a default flash at each fired primary or secondary gun/shell barrel and passenger-gun muzzle. The client's muzzleFlashStyle selects the FMU or 1.12.2 built-in model; an authored mounted gun model takes precedence, using that same preference.
DamageMultiplierPrimary / DamageModifierPrimary / DammageModifierPrimary float 1.0 Primary damage multiplier aliases, applied in the displayed order.
DamageMultiplierSecondary / DamageModifierSecondary float 1.0 Secondary damage multiplier aliases.
ShootDelayPrimarySeconds / ShootDelaySecondarySeconds float seconds unset Highest-priority bank cadence, converted to ticks.
RoundsPerMinPrimary / RoundsPerMinSecondary float RPM 60 when no cadence is supplied Second-priority fire-rate form. Fractional delays are kept, so rates above 1200 RPM fire more than once per tick.
ShootDelayPrimary / ShellDelay / BombDelay float ticks derived Primary cadence aliases, in priority order.
ShootDelaySecondary / ShootDelay float ticks derived Secondary cadence aliases, in priority order.
ReadSecondaryWeaponFromGunType / ReadWeaponsFromGunTypes bool false Makes mounted AddGun/PilotGun gun types unconditionally supply cadence, reload time, speed, spread, and damage, so a bank key added later cannot shadow the gun category. The first name is a legacy alias; the setting applies to both banks. Without it, a bank that has such a mount still takes the gun's cadence and reload time by default, and the vehicle overrides them one key at a time. A bank of bare ShootPointPrimary / ShootPointSecondary lines firing straight out of the ammo bank has no gun type to read, so it uses the keys above and, with none authored, 60 RPM.
ReloadTimePrimary / ReloadTimeSecondary int ticks, at least 0 0 Bank reload time. For a bank firing the vehicle's own ordnance the reload actually used is the longest of this, ReloadTime, every cadence key above, and the resolved cadence — so a definition stating only ShellDelay 60 still reloads in three seconds.
ReloadTime int ticks, at least 0 0 Shared reload time, counted into both banks like the per-bank keys.
ReloadRoundsPrimary / ReloadRoundsSecondary int rounds, at least 0 0 Rounds a bank fires between full reloads, when that is fewer than the loaded ammunition's RoundsPerItem. A Panzer II feeding ten-round magazines states ReloadRoundsPrimary 10. 0 leaves the ammunition item's own count in charge.
ReloadRounds int rounds, at least 0 0 Shared fallback for both banks.
PlaceTimePrimary / PlaceTimeSecondary int ticks, at least 0 5 Placement timing for mines and similar.
AlternatePrimary / AlternateSecondary bool false Alternates among shoot points.
ModePrimary / ModeSecondary fire mode FULLAUTO Bank fire mode.
BulletSpeed / BulletSpread float 3.0 / 0.0 Driveable projectile speed and spread.
RangingGun bool false Enables ranging-gun behavior.
RecoilTime float ticks, at least 0 5.0 Driveable weapon recoil duration.
FancyScreenShake bool false Kicks the camera of every player within FancyScreenShakeRange when the driveable fires. Shells and missiles from either bank, and guns on the primary bank, use the primary settings. Guns on the secondary bank use the coax settings, and only when CoaxRecoil is set. Bombs and mines never kick. The kick pitches the view up, peaks early and fades out with a slight sideways tremor. A new kick replaces the running one only when it is at least as strong. Players can turn it off with the client setting vehicleScreenShake. Ported from the Labjac Edition.
FancyScreenShakePrimaryIntensity / FancyScreenShakePrimaryDuration float, at least 0 / float seconds, at least 0 1.0 / 0.18 Strength and length of the main-gun kick. At intensity 1.0 the view rises about a quarter of a degree at its peak, and the rise scales linearly with intensity. Durations are capped at two seconds. 0 disables the kick.
FancyScreenShakeCoaxIntensity / FancyScreenShakeCoaxDuration float, at least 0 / float seconds, at least 0 0.25 / 0.08 Strength and length of the coaxial-gun kick.
FancyScreenShakeRange float blocks, at least 0 10.0 How far from the driveable players feel the kick. 0 disables it.
CoaxRecoil bool false Lets the secondary gun bank kick the camera with the coax settings when FancyScreenShake is set.
ShootPointPrimary / ShootPointSecondary <x> <y> <z> [part] [gun] [offsetVector], repeatable none Authored firing points. Position comes first; part defaults to core, and naming a gun shortname mounts that gun here and adds it to the vehicle recipe, as AddGun does. The muzzle is position plus offset. Positions are divided by 16.
ShootParticlesPrimary / ShootParticlesSecondary / ShootParticleSecondary particle definition, repeatable none Particles emitted when a bank fires.
ShootParticlesPassenger <seatId> <particle> <x> <y> <z>, repeatable none Per-seat muzzle particles for passenger guns on vehicles and planes. Positive passenger seat IDs only. Each successful shot emits the configured set once at its fired barrel, using the projectile muzzle origin and current seat aim. Vectors are velocity in the legacy model basis (+x forward), transformed by the gun aim and driveable rotation. Independent of primary/secondary particles and flash-model opt-in; omitted seats retain their existing visuals.
AddGun legacy gun mount, repeatable none Adds a mounted passenger or pilot gun.
BombPosition / BarrelPosition <x> <y> <z> [offsetVector], repeatable none Legacy bomb and shell firing positions, added to the primary bank. BombPosition mounts on core and BarrelPosition on turret; neither takes a part. Declaring either also sets Primary to Bomb or Shell respectively. Positions are divided by 16.
FixedPrimary / FixedSecondary bool false Fixes the firing direction to the configured angle.
PrimaryAngle / SecondaryAngle vector 0 0 0 Fixed bank firing direction.
SetPlayerInvisible / IT1 bool false Hides riders or enables the legacy IT-1 animation behavior.

Movement, Placement, Storage, And Harvesting

Key Format Default Purpose
MaxThrottle / MaxNegativeThrottle / ClutchBrake float 1.0 / 0.0 / 0.0 Forward throttle, reverse throttle, and clutch-brake values.
MaxThrottleInWater float or bool 0.5 Water throttle; booleans map to 1 and 0.
MaxDepth / Drag int / float 3 / 1.0 Maximum depth and drag. Drag is clamped to at least 0.
TurretOrigin / TurretOriginOffset vector 0 0 0 Turret rotation origin and offset, in model units.
CollisionPoint / AddCollisionPoint / CollisoinPoint / ollisionPoint <x> <y> <z> <part>, repeatable none Collision points and supported legacy misspellings.
CollisionDamageEnable / CollisionDamageThrottle / CollisionDamageTimes bool / float / float false / 0.0 / 0.0 Legacy collision-damage controls.
CanRoll / CanMountEntity bool true / false Rolling and entity-mounting behavior.
Boat presence flag absent Makes the driveable water-placeable, floating, and not land-placeable before explicit placement keys are applied.
PlaceableOnLand / PlaceableOnWater / PlaceableOnSponge bool true / false / false Placement surfaces.
WorksUnderwater / WorksUnderWater bool false Allows underwater operation.
FloatOnWater / Buoyancy / FloatOffset bool / float / float false / 0.0165 / 0.0 Floating behavior, lift, and placement offset. Vehicles also subtract FloatOffset from wheel anchors when checking flotation; planes check their unshifted anchors and receive lift per submerged anchor.
EpicShip / epicShip bool false Opt-in Labjac naval damage rules for vehicles and planes. Requires floating behavior (Boat or FloatOnWater true). buoyancy health reduces lift and throttle; destroyed defined bow, stern, left/port, right/starboard, or midsection parts cause sinking and directional listing. Missing parts are treated as healthy. Driver and passenger guns require three deep, widely spaced water samples; otherwise throttle is capped at ±0.3. See EpicShip naval damage.
WheelRadius / WheelStepHeight float 1.0 Wheel step height aliases.
WheelSpringStrength / SpringStrength float 0.5 Suspension strength aliases.
TrackFrames / TrackLinkLength int / float 2 / 0.0 Track animation frame count and link length.
LeftLinkPoint / RightLinkPoint vector line, repeatable none Track-link path points.
Harvester / CollectHarvest / DropHarvest bool false Enables harvesting and chooses collection/drop behavior.
HarvestMaterial / HarvestToolType text line, repeatable none Allowed harvested materials and tool categories.
HarvestBox <sizeVector> <positionVector> none Harvester volume, in model units.
CargoSlots / BombSlots / MineSlots / MissileSlots / ShellSlots int, at least 0 0 Inventory slot counts; mine and shell names are aliases.
FuelTankSize / EngineStartTime int, at least 0 100 / 0 Fuel capacity and engine start delay. A vehicle or plane starts automatically when its driver enters with fuel, or when fuel is added after entering with an empty tank; the engine key can then turn it off or on manually.
FilterAmmunitionInput bool false Restricts ammunition insertion.
BulletDetection float derived from hitboxes Projectile-detection radius.
YOffset / CameraDistance float 0.625 / 5.0 Entity vertical offset and third-person camera distance.
OnRadar bool false Shows the driveable on radar.

Lock-On, Flares, Destruction, Rendering, And Sounds

Key Format Default Purpose
CanLockAngle / CanLockOnAngle int degrees 10 Lock-on cone aliases.
MaxRangeLockOn / LockOnSoundTime int / int 500 / 60 Lock range and lock sound interval.
LockOnToDriveables bool false Enables vehicles, planes, and mechas together unless individually overridden.
LockOnToVehicles / LockOnToPlanes / LockOnToMechas / LockOnToPlayers / LockOnToLivings bool false Lock-on target categories.
HasFlare / FlareDelay / TimeFlareUsing bool / int / int false / 200 / 1 Flare availability, cooldown, and active time.
IsExplosionWhenDestroyed bool false Enables the destruction explosion.
DeathFireRadius / DeathFire float 0.0 Destruction fire radius aliases.
DeathExplosionRadius / DeathExplosion / DeathExplosionPower float 4.0 / 1.0 Destruction explosion radius aliases and power.
DeathExplosionBreaksBlocks bool false Allows the destruction explosion to break blocks.
DeathExplosionDamageVsLiving / DeathExplosionDamageVsPlayer / DeathExplosionDamageVsPlane / DeathExplosionDamageVsVehicle float 1.0 Per-target destruction explosion damage.
FallDamageFactor float 1.0 Multiplier for fall/impact damage.
VehicleGunModelScale / VehicleGunReloadTick float / int 1.0 / 15214541 Mounted-gun rendering scale and the legacy reload-sound sentinel/tick.
StartEngineSound sound none One-shot engine-start sound. Vehicles use only this key for startup; planes fall back to StartSound. It is not replayed when a running engine changes drivers.
IdleEngineSound / IdleSound / StartSound sound none IdleEngineSound and IdleSound are idle-loop aliases. Vehicles prefer that idle sound, then looping legacy StartSound, then EngineSound at its configured base pitch; planes never loop StartSound.
EngineSound / ExitSound / BackSound sound none Throttled engine, exit, and reverse sounds. Vehicles also loop EngineSound at base pitch while the engine is on and throttle is neutral when no IdleEngineSound, IdleSound, or StartSound is configured; planes use it at base pitch as their idle fallback too. The loop waits for startup playback to finish. Running engine loops follow the driveable for every nearby player, including passengers and observers.
EngineSoundPitchBase float, at least 0 client default Pitch multiplier at 0% throttle. Client defaults: 0.5 for vehicles and planes.
EngineSoundPitchAt50 / EngineSoundPitchAt100 float, at least 0 client defaults Pitch multipliers at 50% and 100% forward throttle. Vehicle defaults are 0.8 / 1.2; plane defaults are 1.0 / 1.5. The curve interpolates linearly between 0%, 50%, and 100%.
EngineSoundPitchRange float, at least 0 none Alternative linear curve from EngineSoundPitchBase to base + range at full forward throttle. An explicitly authored 50% or 100% point overrides its corresponding point on that curve. Reverse traverses the forward curve by the reverse-to-forward maximum speed ratio.
StartEngineSoundLength int ticks 20 Time before the continuous loop begins after StartEngineSound; measured sound metadata may replace it. Planes use StartSoundLength when StartSound supplies the startup instead.
StartSoundLength / EngineSoundLength / BackSoundLength / SoundTime int ticks 0 Legacy sound timing.
IdleEngineSoundLength / IdleSoundLength / ExitSoundLength int ticks 50 Idle and exit sound lengths. IdleEngineSoundLength is an alias of IdleSoundLength.
StartSoundRange / EngineSoundRange / BackSoundRange int Mod config vehicleSoundRange (50 by default) Sound ranges; missing or nonpositive values use the mod config default. Ignored while overridePackSoundRanges is enabled.
YawSound / PitchSound sound none Driver traverse sounds.
YawSoundLength / PitchSoundLength int ticks 0 Driver traverse sound lengths.
ShootMainSound / ShootSoundPrimary sound none Primary firing sound aliases.
ShellSound / BombSound sound none Legacy weapon-type fallbacks. Sound precedence for either bank is its explicit ShootSoundPrimary / ShootSoundSecondary, then the matching ShellSound / BombSound when typed shell / bomb, then generic ShootSound. Gun banks ignore both typed sounds.
ShootSecondarySound / ShootSoundSecondary sound none Secondary firing sound aliases.
ShootReloadSound / PlaceSoundPrimary / PlaceSoundSecondary / ReloadSoundPrimary / ReloadSoundSecondary sound none Weapon action sounds. ReloadSoundPrimary / ReloadSoundSecondary play on every reload of their bank.
ReloadSound sound none Shared reload sound, used by a bank naming none of its own. A bank firing mounted guns never uses it: it plays the gun's own ReloadSound, else its bank-specific sound. ShootReloadSound is likewise skipped when the primary bank fires mounted guns.
LockedOnSound / LockOnSound / LockingOnSound / FlareSound sound none Lock-on and flare sounds.
LockedOnSoundRange int Mod config vehicleLockedOnSoundRange (5 by default) Locked-on warning range; missing or nonpositive values use the mod config default. Ignored while overridePackSoundRanges is enabled.

For example, this definition line gives a linear engine pitch curve:

EngineSoundPitchRange 1.0

With no EngineSoundPitchBase line, the default client base is 0.5. The pitch is 0.5 + throttle × 1.0: 0.5 at 0% forward throttle, 1.0 at 50%, and 1.5 at 100%. Here Range is the difference between the 0% and 100% pitches, not the 100% pitch itself. If you also set EngineSoundPitchAt50 0.8, only the 50% point changes; the 0% and 100% points remain 0.5 and 1.5.

Engine Selection

Key Format Default Purpose
Engine Engine item shortname or ID empty Manually selects this driveable's default engine. A valid value has highest priority over common-config defaults and automatic selection.

Engine accepts a shortname or item ID with or without a namespace, such as advCPU, flansmod:advCPU, or otherpack:advCPU. Empty, missing, invalid, or incompatible values use the normal default-engine rules. The selected engine must still be eligible: an ENGINE part with CanBeDefaultEngine true, no RF power, and a matching WorksWith entry.

Particle Emitters

Key Format Default Purpose
EmittersRequireOccupant bool true When enabled, configured emitters only produce particles while at least one entity is mounted in the driver seat, a passenger seat, or directly on the driveable. Set to false to allow unoccupied driveables to emit particles.
AddParticle / AddEmitter particle rate origin extents velocity minThrottle maxThrottle minHealth maxHealth part none Adds a particle emitter. Vehicle and plane emitters require an active engine; the occupant and throttle/health filters are then applied normally.

Physical Armour And Normalized Health

All keys are optional. Semantic armour uses nominal millimetres followed by an optional virtual slope in degrees. An explicit 0 thickness means intentionally unarmoured and remains distinct from an absent value. See Vehicle Armour and Damage for angle conventions, precedence, penetration, damage, and explosion behavior.

Key Format Default Purpose
ArmorFrontMm <thicknessMm> [slopeDeg] ~ Hull front armour.
ArmorRearMm <thicknessMm> [slopeDeg] ~ Hull rear armour.
ArmorSideMm <thicknessMm> [slopeDeg] ~ Applies to both hull sides.
ArmorTopMm <thicknessMm> [slopeDeg] ~ Hull top armour.
ArmorBottomMm <thicknessMm> [slopeDeg] ~ Hull bottom armour.
TurretArmorFrontMm <thicknessMm> [slopeDeg] ~ Turret front armour in the rotating turret frame.
TurretArmorRearMm <thicknessMm> [slopeDeg] ~ Turret rear armour in the rotating turret frame.
TurretArmorSideMm <thicknessMm> [slopeDeg] ~ Applies to both turret sides.
TurretArmorTopMm <thicknessMm> [slopeDeg] ~ Turret top armour.
TurretArmorBottomMm <thicknessMm> [slopeDeg] ~ Turret bottom armour.
PartArmorMm <part> <thicknessMm> none Repeatable uniform per-part override. It outranks turret and hull semantic armour.
ArmorFrontVsHeatMm, ArmorRearVsHeatMm, ArmorSideVsHeatMm, ArmorTopVsHeatMm, ArmorBottomVsHeatMm <thicknessMm> the face's kinetic value Protection of the same hull face against HEAT rounds. Requires the matching Armor...Mm line and shares its slope.
TurretArmorFrontVsHeatMm, TurretArmorRearVsHeatMm, TurretArmorSideVsHeatMm, TurretArmorTopVsHeatMm, TurretArmorBottomVsHeatMm <thicknessMm> the face's kinetic value Protection of the same turret face against HEAT rounds. Requires the matching TurretArmor...Mm line and shares its slope.
PartArmorVsHeatMm <part> <thicknessMm> the part's kinetic value Repeatable. Protection of a part against HEAT rounds. Requires a PartArmorMm or naval armour line for the same part.
ArmorBeltMm <thicknessMm> [slopeDeg] ~ Applies to belt, port/starboard, left/right, and side-armour parts.
ArmorDeckMm <thicknessMm> [slopeDeg] ~ Applies to the deck part family.
ArmorCitadelMm <thicknessMm> [slopeDeg] ~ Applies to the citadel part.
ArmorBulkheadMm <thicknessMm> [slopeDeg] ~ Applies to bulkhead parts.
ArmorConningTowerMm <thicknessMm> [slopeDeg] ~ Applies to conning-tower and bridge parts.
ArmorTorpedoBulgeMm <thicknessMm> [slopeDeg] ~ Applies to torpedo-bulge and bulge parts.
ArmorSuperstructureMm <thicknessMm> [slopeDeg] ~ Applies to the superstructure part.
ArmorBowMm / ArmorSternMm <thicknessMm> [slopeDeg] ~ Applies to the bow or stern part.
ArmorMachineryMm <thicknessMm> [slopeDeg] ~ Applies to engine-room, boiler-room, and steering parts.
ArmorFlightDeckMm <thicknessMm> [slopeDeg] ~ Applies to flight-deck and hangar part families.
UseRealisticVehicleHealth bool false When true and RealMassKg is valid, derives total HP as realisticVehicleHealthScale * massKg^(2/3) and uses positive authored hitbox HP as allocation weights.

Naval semantic armour is resolved as a set of per-part overrides before explicit PartArmorMm lines are applied, so an explicit per-part line always wins.

Real-World Physics Keys

All keys below are optional. A key present without a value counts as not specified. Invalid values are reported as content-pack errors and ignored; they never abort loading and never activate a subsystem. See Realistic Vehicle Physics for activation rules, precedence, and the speed scales.

Every Real… key in the tables below also accepts the same name without Real (for example, MassKg for RealMassKg). The Real… spelling takes priority if both are declared, including when its value is blank or invalid. These aliases are separate from legacy keys such as Mass, MaxSpeed, and WingArea.

Common, read on every driveable:

Key Format Default Purpose
RealMassKg / MassKg float kilograms, greater than 0 ~ Real vehicle mass. Required by both propulsion profiles and independently used by UseRealisticVehicleHealth. Unrelated to the legacy projectile/vehicle Mass key, which keeps its own meaning.
RealMaxSpeedKmh / MaxSpeedKmh float km/h, greater than 0 ~ Real top speed. Authoritative terminal speed when a ground/aircraft profile is active, and independently the mecha chassis speed before engine/addon modifiers. Converts as kmh / 72 blocks per tick. Ground and aircraft profiles then apply their class speed scale. Unrelated to the legacy MaxSpeed key.
RealEnginePowerKw / EnginePowerKw float kilowatts, greater than 0 ~ Reference shaft power. Multiplied by the installed engine part's EngineSpeed at runtime. Unrelated to PartType.EnginePower.
RealEnginePowerHp / EnginePowerHp float mechanical horsepower, greater than 0 ~ Same field as RealEnginePowerKw, in horsepower. Converted to kilowatts on read (1 hp = 0.745699872 kW).
RealEnginePowerPS / EnginePowerPS float metric horsepower (Pferdestärke), greater than 0 ~ Same field as RealEnginePowerKw, in PS. Converted to kilowatts on read (1 PS = 0.73549875 kW). If more than one of RealEnginePowerKw/RealEnginePowerHp/RealEnginePowerPS is declared, priority follows that order, so RealEnginePowerPS wins over the other two.
RealEngineThrustKn / EngineThrustKn float kilonewtons, greater than 0 ~ Reference jet thrust, used instead of power for jets. Unrelated to the legacy MaxThrust key.

Aircraft, read on PlaneType:

Key Format Default Purpose
RealWingSpanM / WingSpanM float metres, greater than 0 ~ Wing span. Required by the aircraft profile; feeds the roll inertia heuristic.
RealWingAreaM2 / WingAreaM2 float square metres, greater than 0 ~ Wing area. Required by the aircraft profile; feeds wing loading and lift. Unrelated to the legacy WingArea key.
RealClimbRateMs / ClimbRateMs float metres per second, greater than 0 ~ Climb rate. Not required. Used only to constrain how much excess lift becomes a sustained climb; never assigned directly as vertical velocity.
RealAirBrakeAreaM2 / AirBrakeAreaM2 float square metres, greater than 0 ~ Total frontal area presented by fully deployed air-brake panels. Used by both modern and legacy flight physics; when absent, the brake area is derived from RealWingAreaM2.
RealRotorDiameterM / RotorDiameterM float metres, greater than 0 ~ Main rotor diameter of a rotorcraft. Stands in for RealWingSpanM, and supplies RealWingAreaM2 as the swept rotor disc, so a helicopter can complete the aircraft profile without inventing a wing. An authored wing span or area always wins.
RealRotorCount / RotorCount whole number, at least 1 1 Number of main rotors. 2 for a tandem or coaxial layout, which sweeps two discs. Only affects the derived area; the derived span stays one rotor wide.

Ground vehicles, read on VehicleType. Each listed key applies independently, without needing a complete propulsion profile:

Key Format Default Purpose
DriveType RWD, FWD, AWD, TRACKED, or MARINE inferred Drive layout. When absent it is inferred from Tank and FourWheelDrive, and traction selection stays exactly as before. Also contributes to the hill-climbing response derived for a complete ground profile. Accepts 2WD, 4WD, Rear, Front, Track, Tracks, Tank, Ship, Boat, Naval, Screw, Propeller, Waterjet, Paddle, and the spelled-out forms. MARINE is never inferred, because the Boat and FloatOnWater keywords are shared with amphibious wheeled and tracked vehicles.
RealMaxReverseSpeedKmh / MaxReverseSpeedKmh float km/h, greater than 0 ~ Caps reverse terminal speed. Does not scale it, so MaxNegativeThrottle is never applied twice. Has no effect when MaxNegativeThrottle is 0, which still means the vehicle cannot reverse.

Hill climbing has no separate configuration key. For complete ground profiles it is derived from power-to-weight ratio and DriveType, with a gradual falloff and a 20% crawl floor on extreme terrain. Legacy vehicles are unchanged.

Marine, read on VehicleType and applied only when the hull floats:

Key Format Default Purpose
RealDraftM / DraftM float metres, greater than 0 ~ Settles the lowest corner of the authored core box this far below the waterline, accounting for model scale and pose and replacing constant Buoyancy lift. Requires Boat or FloatOnWater True and a core box. Without either a draft or a core box, keeps wheel-based flotation. FloatOffset still controls placement and vehicle wheel flotation checks.

Naval unit aliases, read on any driveable. These are not separate physical quantities: each converts into the common key it duplicates and overrides it when both are present, in the priority order shown. Author the unit your source states and never both spellings of one quantity.

Key Format Converts into Purpose
RealDisplacementT / DisplacementT float metric tonnes, greater than 0 RealMassKg (x 1000) Displacement as continental and modern sources state it. Overrides RealMassKg.
RealDisplacementLongTons / DisplacementLongTons float long tons, greater than 0 RealMassKg (x 1016.0469088) Displacement as British and American records before metrication state it. Overrides both keys above.
RealMaxSpeedKn / MaxSpeedKn float knots, greater than 0 RealMaxSpeedKmh (x 1.852) Maximum speed in knots. Overrides RealMaxSpeedKmh.
RealMaxReverseSpeedKn / MaxReverseSpeedKn float knots, greater than 0 RealMaxReverseSpeedKmh (x 1.852) Astern speed in knots. Overrides RealMaxReverseSpeedKmh.

There are deliberately no keys for length, width, beam, wheelbase, or track width. Those are derived from the SetupPart core collision box and the declared WheelPosition lines.

VehicleType

Inherits every DriveableType, PaintableType, and InfoType key. Loaded from vehicles.

Key Format Default Purpose
TurnLeftSpeed / TurnRightSpeed float 1.0 Legacy left and right steering multipliers. Bypassed by a valid RealTurnRateDegPerSec in normal physics. An empty TurnLeftSpeed line enables the optional-value flag behavior.
RealTurnRateDegPerSec / TurnRateDegPerSec float hull degrees/second, finite and greater than 0 unset (0) Sustained full-input hull turn rate, independent of installed-engine speed and legacy steering/throttle multipliers. Tracks use this rate with the engine running; rolling vehicles scale by signed speed relative to RealMaxSpeedKmh and require that speed to be valid. Does not apply to crew-pushed vehicles or forced legacy physics. The Real spelling takes priority. See Realistic Vehicle Physics.
SquashMobs / FourWheelDrive / RotateWheels bool false Mob squashing, four-wheel drive, and wheel rendering behavior.
Tank / TankMode bool false Enables tank/tracked steering; TankMode is the later alias.
ThrottleDecay float, at least 0 0.0035 Throttle decay per tick.
PushSpeedKmh float km/h, greater than 0 unset (0) Makes a crew-controlled vehicle movable at the stated walking speed without engine power or fuel. Takes precedence over realistic and legacy propulsion; reverse requires MaxNegativeThrottle above 0.
Mass float, at least 1 1000 Legacy vehicle mass. This is separate from RealMassKg.
UseRealisticAcceleration bool false Enables the legacy realistic-acceleration hint when the modern real-world profile is not active.
Gravity / MaxFallSpeed / BrakingModifier float 0.175 / 0.85 / 1.0 Falling and braking parameters; the last two are clamped to at least 0.
HasDoor / ShootWithOpenDoor bool false HasDoor enables the door key. ShootWithOpenDoor makes the door arm the vehicle's weapons: they fire only while the door is open, and the HUD shows whether they are ready. Without it the door never affects firing.
ShootDelay / ShellDelay float ticks, rounded to int 0 Vehicle-specific copies of the shared delays. The values that actually govern firing are the DriveableType ones in Weapons, which read the same key names; these copies are a legacy fallback that the shared resolution no longer reaches.
ShootSound / ShellSound sound none Vehicle-specific generic and shell fallback sounds. For a shell bank, an explicit bank sound wins, followed by ShellSound, then ShootSound. Gun banks ignore ShellSound.
DoorPosition1 / DoorPosition2 / DoorRotation1 / DoorRotation2 / DoorRate / DoorRotRate vector 0 0 0 First door's closed/open transforms and animation rates.
Door2Position1 / Door2Position2 / Door2Rotation1 / Door2Rotation2 / Door2Rate / Door2RotRate vector 0 0 0 Second door's transforms and rates.
FixTrackLink / TrackLinkFix int 5 Track-link correction aliases.
AddSmokePoint / AddSmokeDispenser <positionVector> <directionVector> <detonationTicks> <part>, repeatable none Adds a vehicle smoke dispenser. Position is divided by 16.
StompSoundFrontRight / StompSoundFrontLeft / StompSoundBackRight / StompSoundBackLeft sound none Per-corner wheel/footstep sounds.

PlaneType

Inherits every DriveableType, PaintableType, and InfoType key. Loaded from planes.

Key Format Default Purpose
Mode PLANE, HELI, VTOL, or SIXDOF PLANE Aircraft control mode.
NewFlightControl bool false Enables the newer legacy flight-control model when no modern real-world profile is active. It keeps the 1.7.10 shoot-down sequence: once the airframe, tail, leftWing, or rightWing part is destroyed in plane mode, the aircraft sinks, pitches or rolls away (a lost airframe cuts the throttle and dives), wears its core down every tick, and burns and explodes until it is lost. It ends if every one of those parts is repaired. Planes flying on a real-world aircraft profile get the same sequence adapted to that model: the lost lift and control of a wing or tail are already simulated there, so the sequence only adds the core wear, fire and explosions; a lost airframe also removes all wing lift. On that profile the sequence pauses while the plane rests on the ground. On either legacy flight model a plane buffets with small random attitude kicks: above 2 blocks per tick normally, or between 1.9 and 2.05 blocks per tick with this key. There is no buffeting on the wheels.
TurnLeftSpeed / TurnRightSpeed / LookUpSpeed / LookDownSpeed / RollLeftSpeed / RollRightSpeed float 1.0 Control-axis multipliers.
RealTurnRateDegPerSec / TurnRateDegPerSec float ground degrees/second, finite and greater than 0 unset (0) Full-input ground taxi yaw at 10 km/h, scaling with signed forward rolling speed and capped at the authored rate. Requires deployed gear, wheel definitions and ground support. Overrides ground yaw independently of engine parts and legacy rudder modifiers, including engine-off coasting. Has no effect airborne, afloat without wheel support, or with forced legacy plane physics. The Real spelling takes priority.
Lift / TakeoffSpeed float 1.0 / 0.5 Legacy lift and takeoff threshold.
MaxSpeed / MaximumSpeed float 2.0 Legacy top-speed aliases. Separate from RealMaxSpeedKmh.
Supersonic bool false Marks a supersonic aircraft.
MaxThrust / Mass / WingArea / EmptyDrag float 50 / 1000 / 1 / 1 Legacy physics inputs. Mass is at least 1; wing area and empty drag are at least 0.
HeliThrottlePull bool true Accepted for legacy compatibility; helicopter throttle now stays at the selected setting, like plane throttle.
ShootDelay / BombDelay float ticks, rounded to int 0 Plane-specific copies of the shared delays. The values that actually govern firing are the DriveableType ones in Weapons, which read the same key names; these copies are a legacy fallback that the shared resolution no longer reaches.
Propeller / HeliPropeller / HeliTailPropeller <id> <x> <y> <z> <part> <item>, repeatable none Adds an engine propeller and its recipe item. Position uses model units.
PropSound / ShootSound / BombSound sound none Propeller, generic firing, and bomb fallback sounds. For a bomb bank, an explicit bank sound wins, followed by BombSound, then ShootSound; gun banks ignore BombSound. PropSound takes priority over inherited EngineSound; without an idle sound, it loops at the lowest engine pitch while the running plane is at zero throttle.
PropSoundLength int ticks 0 Propeller sound length.
HasGear / HasLandingGear bool true Retractable landing-gear aliases.
HasDoor bool true Door-control hint.
HasAirBrake / AirBrake bool true for fixed-wing modes, false for HELI Enables the air-brake toggle and its drag in both legacy and modern flight physics; the latter alias wins.
HasWing / FoldWingForLand / FlyWithOpenDoor bool false Folding-wing and door flight behavior.
AutoOpenDoorsNearGround / AutoDeployLandingGearNearGround bool true Automatic near-ground door and gear behavior.
RestingPitch float 0.0 Pitch used while resting on the ground.
SpinWithoutTail bool false Tail-loss spin behavior.
Valkyrie bool false Drives the 1.7.10 Valkyrie skeleton, a fixed 33-joint VF-1 hierarchy. The model's valkyrie[i] groups are the joints, modelled relative to their joint positions, and each joint carries its children. The wing toggle switches between fighter mode (wings folded) and GERWALK, which unfolds through four stages. Above 0.2 throttle the feet fire afterburner exhaust, and fighter mode raises the wheel anchors by 90/16 blocks.
InflightInventory / InvInflight bool true Allows inventory access in flight; the latter alias wins.
WingPosition1 / WingPosition2 / WingRotation1 / WingRotation2 / WingRate / WingRotRate vector 0 0 0 Folding-wing transforms and rates.
WingWheelPosition1 / WingWheelPosition2 / WingWheelRotation1 / WingWheelRotation2 / WingWheelRate / WingWheelRotRate vector 0 0 0 Wing-wheel transforms and rates.
BodyWheelPosition1 / BodyWheelPosition2 / BodyWheelRotation1 / BodyWheelRotation2 / BodyWheelRate / BodyWheelRotRate vector 0 0 0 Body-wheel transforms and rates.
TailWheelPosition1 / TailWheelPosition2 / TailWheelRotation1 / TailWheelRotation2 / TailWheelRate / TailWheelRotRate vector 0 0 0 Tail-wheel transforms and rates.
DoorPosition1 / DoorPosition2 / DoorRotation1 / DoorRotation2 / DoorRate / DoorRotRate vector 0 0 0 Door transforms and rates.

MechaType

Inherits every DriveableType, PaintableType, and InfoType key. Loaded from mechas.

Key Format Default Purpose
TurnLeftSpeed / TurnRightSpeed float 1.0 Legacy turning multipliers.
RealMaxSpeedKmh / MaxSpeedKmh float km/h, greater than 0 unset Preferred chassis speed, converted as kmh / 72 blocks per tick and then multiplied by installed-engine and addon speed modifiers. Takes precedence over MoveSpeed without activating ground/aircraft propulsion.
MoveSpeed float, at least 0 1.0 Legacy movement multiplier used only when RealMaxSpeedKmh is absent or invalid. Its baseline is 4.3 * MoveSpeed blocks/second before engine/addon modifiers.
SquashMobs bool false Allows the mecha to squash mobs.
StepHeight int blocks, at least 0 0 Maximum automatic step height, clamped to 0..8 blocks at runtime.
JumpHeight float nominal blocks unset (-99) Jump parameter converted to upward blocks/tick as sqrt(abs(9.81 * (JumpHeight + 0.2) / 200)); discrete movement means it is not a guaranteed measured apex.
RotateSpeed float degrees/tick 10.0 Maximum body-yaw change per game tick.
StompSound / StompSoundLength sound / int ticks none / 0 Stomp sound and length.
StompRangeLower / StompRangeUpper float 0.0 Stomp activation range.
LeftArmOrigin / RightArmOrigin vector 0 0 0 Arm origins in model units.
ArmLength / LegLength float model units 16 Limb lengths, divided by 16 internally.
RearLegLength / FrontLegLength float model units, at least 0 16 Separate 1.12.2 rear/front leg-group lengths, divided by 16. Used by the leftRearLegModel / leftFrontLegModel (and matching right, foot) parts of a ModelMecha. As in 1.12.2 they do not inherit LegLength.
LegTrans / RearLegTrans / FrontLegTrans float model units 0 1.12.2 sideways (model X) offsets of the main, rear and front leg groups, divided by 16. Each group pivots at its own length and translation.
HeldItemScale float, at least 0 1.0 Scale for held tools/items.
Height / Width / ChassisHeight float model units 48 / 32 / 16 Body dimensions, divided by 16; height and width have a 0.1-block floor.
Reach dimensionless float, at least 0 10.0 Multiplies the equipped tool's reach in blocks; effective reach is clamped to 1..32 blocks.
TakeFallDamage / DamageBlocksFromFalling bool true Enables self and block fall damage.
FallDamageMultiplier / BlockDamageFromFalling float, at least 0 1.0 Fall-damage multipliers.
LegSwingLimit / LegSwingTime float 2.0 / 5.0 Leg swing range and animation time. Time has a 0.01 floor.
LimitHeadTurn <bool> <degrees> disabled, 90 Enables and sets the head-turn limit.
UpperArmLimit / LowerArmLimit float degrees 90 Arm rotation limits.
LeftHandModifier / RightHandModifier vector 0 0 0 Hand offsets in model units.
LegNode <rotation> <lower> <upper> <speed> <legPart>, repeatable none Adds a leg animation node.
LegAnimSpeed float 0.0 Leg animation speed.
RestrictInventoryInput bool false Restricts item insertion into the mecha inventory.
AllowMechaToolsInRestrictedInv bool true Still permits mecha tools when inventory input is restricted.
⚠️ **GitHub.com Fallback** ⚠️