Mod Config - AntonIT99/Flans-Mod-Ultimate-2.0 GitHub Wiki
This page explains the configuration files that control Flan's Mod Ultimate 2.0. It is written for players, server owners, and modpack makers who want to tune the mod without editing Java code.
For content-pack .txt parameters such as gun, bullet, armor, and grenade fields,
see Config Reference. For bulk edits applied through JSON
groups, see Category System.
After the mod starts once, these files are created in the Minecraft config
folder:
| File | Purpose |
|---|---|
config/flansmodultimate-common.toml |
Gameplay and server-side rules. On multiplayer, the server's common config is authoritative. |
config/flansmodultimate-client.toml |
Client-only input, HUD, model loading, and rendering defaults. Each player can keep their own values. |
config/flansmodultimate-content-loading.properties |
Content pack path, content loading regeneration, and default category loading. |
config/flansmodultimate/*.json |
User category files. These let you apply content-pack parameters to groups of items. |
config/flansmodultimate/default/*.json |
Built-in default categories copied by the mod. Use these as examples; put your own changes in the files one folder above. |
On a dedicated server, the same paths are inside the server folder. For multiplayer, keep content packs and category files matched between server and clients unless the change is purely visual.
- Stop the game or server before changing content loading settings or category files.
- Common and client TOML settings may be picked up by Forge while running, but a restart is the safest way to test changes.
- Content loading settings and category JSON files are loaded during startup. Restart after editing them.
- In TOML files, booleans are
trueorfalse, numbers are not quoted, and strings/enums are quoted when the generated file uses quotes. - In
.propertiesfiles, usekey=value. - In JSON category files, use valid JSON. Comments are not allowed.
Most settings do not need the TOML files at all. Flan's Mod adds an options screen, reachable from:
- the Flan's Mod Options... button in the vanilla options screen, just above its
Done button.
optionsButtonPlacementcan move this button to the pause menu, show it in both menus, or leave it out; - the Config button next to Flan's Mod Ultimate in the Mods list.
The menu button opens the quick screen: the HUD, weapon visuals, rendering and gameplay settings worth changing mid-game, plus a few server toggles. Its All Settings... button, and the Config button of the Mods list, open a chooser between the two config files:
All Settings -> Client Settings -> every entry of flansmodultimate-client.toml
-> Common Settings -> every entry of flansmodultimate-common.toml
Both lists are grouped by the sections of the file itself, and each row uses the comment of that setting as its tooltip, so the screen says the same thing the file does. Settings that are free text or lists, such as the penetrable block list or the default engine names, are not shown; those stay in the config file.
They take effect as soon as they are changed and are written straight to
flansmodultimate-client.toml, so they survive the session. Sliders are the
exception: they change the value while dragged and write the file once the screen
closes, so a drag does not rewrite the config a hundred times. Switching uncensored
content on or off reloads client resources, exactly as editing the file would.
The driveable HUD shows speed in km/h by default. Plane vertical speed has a
separate driveableVerticalSpeedUnit setting and defaults to m/s; both units can
be changed independently in the client options or TOML file.
Who owns them depends on where you are:
-
Outside a world, the common screen edits this installation's own
flansmodultimate-common.toml, which is the config a world hosted from here uses. - In a world, the settings belong to the server. The screen shows the values the server reports, not the local file, and a change is a request the server checks. An operator, or the owner of a single player world, may make it; for everyone else the rows are shown greyed out. The footer of the screen says which of these applies.
An accepted change is saved to the server's flansmodultimate-common.toml and sent
to every connected client at once, without a restart. The server always answers with
the values that ended up in force, so a refused change, or one another operator made
at the same time, snaps the row back instead of leaving a value the server never
accepted on screen. Settings whose comment says a restart is required still need one
to take effect, however they were changed.
The quick screen keeps these within reach without opening the full list:
disableCrosshairForGuns, explosionBreakBlocks, flanExplosionsDropBlocks,
driveableCollisionsBreakBlocks, shootablesCanBreakGlass, playerAimPose,
entityAimPose, driveableTrackingRange and flanNpcTrackingRange (with Wolff's NPCs
installed). A separate Server Sound Ranges section lists every setting of the Sound Settings
below, overridePackSoundRanges included. Its range sliders move by one block up to
1024 blocks; larger values can still be set in the config file.
Hovering a row shows the setting's name and current value above its description; server settings a player may not change are greyed out, and their tooltip says so.
File: config/flansmodultimate-common.toml
These settings affect gameplay. In multiplayer, clients receive the server's common config while connected, so changing a client's local common file will not override a server.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
addAllPaintjobsToCreative |
true or false
|
true |
Shows every paintjob variant in creative mode. |
disableCrosshairForGuns |
true or false
|
true |
Hides the normal crosshair while holding guns, except melee weapons. |
explosionBreakBlocks |
true or false
|
true |
Allows Flan's Mod explosions to break blocks. |
forceNewExplosionsBreakBlocks |
true or false
|
false |
Forces shootables using the new explosion system to break blocks even when their ExplosionBreaksBlocks property is false. The teams rule and explosionBreakBlocks can still disable block breaking globally. |
flanExplosionsDropBlocks |
true or false
|
true |
Makes blocks broken by Flan's Mod explosions drop items. This only matters if explosions can break blocks. |
defaultVehicleEngine |
Engine item shortname or ID | empty | Preferred default engine for newly created vehicles. An invalid or incompatible value falls back to automatic selection. |
defaultPlaneEngine |
Engine item shortname or ID | empty | Preferred default engine for newly created planes. An invalid or incompatible value falls back to automatic selection. |
defaultMechaEngine |
Engine item shortname or ID | empty | Preferred default engine for newly created mechas. An invalid or incompatible value falls back to automatic selection. |
noticeSpawnKillTime |
Integer seconds, 0 to 600
|
10 |
Writes a warning to the server log when a Flan bullet or grenade explosion kills a player whose current life is younger than this threshold. 0 disables only the warning; detailed explosion-kill audit records remain enabled. |
bonusRegenAmount |
Integer, 0 to 1000
|
0 |
Adds extra player health regeneration. Use with increased max health setups. |
bonusRegenTickDelay |
Integer ticks, 0 to 1000
|
80 |
Delay between bonus regeneration heals. Minecraft runs 20 ticks per second; vanilla natural regen uses 80. |
bonusRegenFoodLimit |
Integer, 0 to 20
|
18 |
Food level required before bonus regeneration can happen. |
maxPlayerHealth |
Decimal number, 0.5 to 100.0
|
20.0 |
Base maximum health of every player, set when they log in and when they respawn after dying. 20 is vanilla's 10 hearts. Pair higher values with the bonus regeneration settings. |
enableKillMessages |
true or false
|
true |
Announces kills with Flan's weapons in the kill feed and adds the distance to Flan's death messages. When disabled the kill feed stays empty and deaths use the plain death messages. |
showDistanceInKillMessage |
true or false
|
true |
Adds how far away the killer was to Flan's death messages, for example Steve was shot by Alex from 42.3 m away. |
The three default*Engine settings accept an engine's item shortname or item ID,
with or without its namespace, for example advCPU, flansmod:advCPU, or
otherpack:advCPU. They only affect automatic engine assignment; an engine already
saved on a driveable is kept when it is valid.
For a vehicle, plane, or mecha with no valid saved engine, the mod selects an engine in this order:
- The driveable content file's
Engineparameter. - The matching global
defaultVehicleEngine,defaultPlaneEngine, ordefaultMechaEnginesetting. - The fastest eligible engine from the driveable's own content pack.
- The eligible official-pack engine closest to
EngineSpeed 1, when official packs are loaded. - The eligible engine from any loaded content pack closest to
EngineSpeed 1.
Empty, missing, invalid, or incompatible values fall through to the next rule. An
eligible default engine must be an ENGINE part, set CanBeDefaultEngine true, not
use RF power, and include the relevant driveable kind in WorksWith.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
bulletSnapshotMin |
Integer ticks, 0 to 100
|
0 |
Lag compensation: how many ticks back every bullet checks players' positions before the shooter's ping is considered. |
bulletSnapshotDivisor |
Integer milliseconds, 0 to 1000
|
50 |
Lag compensation: milliseconds of shooter ping per extra tick of rewind. A bullet uses the player positions from bulletSnapshotMin + ping / bulletSnapshotDivisor ticks ago. 0 ignores the ping. |
Operators can also change both in game with /teams bltss <min> <divisor>; see
Commands.
Driveable and Flan NPC tracking settings below apply live, including existing entities. They are available in the quick menu to the single-player owner or server operators; other players can view the server values. Ranges are blocks, not chunk counts. Minecraft still applies server view distance and tracking scaling; passengers can raise their vehicle's effective tracking range under Minecraft's normal passenger rule.
| Setting | Allowed values | Default | Meaning |
|---|---|---|---|
driveableTrackingRange |
Integer blocks, 16 to 512
|
512 |
Tracking for vehicles, planes, mechas, and their seats/wheels. |
flanNpcTrackingRange |
Integer blocks, 16 to 512
|
256 |
Tracking for Flan-model NPCs and soldiers explicitly opted in through the NPC module. |
Flan vehicle and AA-gun NPC models automatically use the NPC settings. Operators can
opt ordinary Custom NPC soldiers in with /flansnpcdistance <targets> true, and
remove that explicit opt-in with /flansnpcdistance <targets> false. The flag is saved
with the NPC and synchronized to clients. Removing it does not exclude a Flan model.
Ordinary Custom NPCs retain their original settings unless opted in.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
deployedGunTrackingRange |
Integer blocks, 1 to 4096
|
64 |
Server-side tracking range for deployed guns. |
aaGunTrackingRange |
Integer blocks, 1 to 4096
|
128 |
Server-side tracking range for AA guns. |
These values control when the server sends the entity to clients. They are read while entity types are registered, so restart the game or server after changing them.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
headshotDamageModifier |
Decimal number | 2.0 |
Multiplies damage for head hits. |
chestshotDamageModifier |
Decimal number | 1.0 |
Multiplies damage for chest/body hits. |
armshotDamageModifier |
Decimal number | 0.7 |
Multiplies damage for arm hits. |
legshotModifier |
Decimal number | 0.8 |
Multiplies damage for leg hits. |
vehicleWheelSeatExplosionModifier |
Decimal number, 0.0 to 1.0
|
1.0 |
Reduces explosion damage when the explosion hits a vehicle wheel or seat. |
driveableCollisionsBreakBlocks |
true or false
|
false |
Allows collision points on crashing or ramming driveables to destroy breakable terrain. Protection-mod break events are respected, containers and unbreakable blocks are never removed, and aircraft still take impact damage when this is disabled. |
Values above 1.0 increase damage. Values below 1.0 reduce damage.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
breakableArmor |
0, 1, or 2
|
2 |
Controls armor durability behavior. 0 means armor does not break, 1 makes all armor breakable, 2 uses each armor's own config. |
defaultArmorDurability |
Integer | 500 |
Durability used when breakableArmor = 1. |
defaultArmorEnchantability |
Integer | 0 |
Default enchantability for armor. 0 means not enchantable. Higher values give better enchantment rolls. |
forceDefenseAsModernArmor |
true or false
|
false |
Makes Defence / Defense in armor content files behave like modern Minecraft armor points instead of the legacy ratio-based armor system. |
ambientMobArmorSpawnRate |
Integer 0-100
|
20 |
Percentage chance for naturally spawning zombies and skeletons to wear armor from loaded content packs or team outfits. 0 disables it. |
ambientMobArmorDropRate |
Integer 0-100
|
100 |
Percentage chance for each armor piece worn by ambient armored mobs to drop on death, whatever killed them. 0 disables the drops. |
DamageReduction and OtherDefence / OtherDefense keep their legacy behavior even
when forceDefenseAsModernArmor is enabled.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
gunsAlwaysUsableByPlayersInCreativeMode |
true or false
|
true |
Allows creative-mode players to use guns even if the gun content file says UsableByPlayers false. |
gunDevMode |
true or false
|
false |
Gun development mode for testing content packs: every player, in any game mode, reloads guns with their default ammunition without carrying any. |
gunDamageModifier |
Decimal number, 0.0 to 100.0
|
1.0 |
Global multiplier for gun damage. |
gunRecoilModifier |
Decimal number, 0.0 to 100.0
|
1.0 |
Global multiplier for gun recoil. |
gunDispersionModifier |
Decimal number, 0.0 to 100.0
|
1.0 |
Global multiplier for gun Dispersion values. |
gunAccuracySpreadModifier |
Decimal number, 0.0 to 100.0
|
1.0 |
Global multiplier for gun Accuracy and Spread values. |
defaultADSSpreadMultiplier |
Decimal number, 0.0 to 10.0
|
0.2 |
Default spread multiplier while aiming down sights. Lower values make aimed shots tighter. |
defaultADSSpreadMultiplierShotgun |
Decimal number, 0.0 to 10.0
|
0.8 |
Default aimed spread multiplier for multishot guns such as shotguns. |
cancelReloadOnWeaponSwitch |
true or false
|
true |
Cancels reloads when the player switches to a different item. |
combineAmmoOnReload |
true or false
|
true |
Allows combining unloaded ammo with damaged or partially used ammo in the inventory. Turning this off forbids it for everyone, whatever players set in their own client config. |
ammoToUpperInventoryOnReload |
true or false
|
false |
Places unloaded ammo in the upper inventory first for players who have not set their own client preference. |
realisticRecoil |
true or false
|
false |
Enables the alternate recoil behavior. |
enableSightDownwardMovement |
true or false
|
true |
Allows the sight to move downward after shooting. |
playerAimPose |
"FREE_CHOICE", "ENFORCED" or "DYNAMIC"
|
"FREE_CHOICE" |
How players hold guns. FREE_CHOICE lets each player pick with their own aimPose client setting; the other two apply to every player. See Aim Pose. |
entityAimPose |
"ENFORCED" or "DYNAMIC"
|
"DYNAMIC" |
How humanoid mobs, such as apocalypse survivors, hold guns. Mobs cannot aim, so in DYNAMIC only firing raises a gun. |
For broad balancing, start with global multipliers. For per-weapon tuning, use the Category System or edit the weapon's content-pack file.
These settings affect bullets, grenades, shells, rockets, and other shootable items.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
shootablesCanBreakGlass |
true or false
|
true |
Allows guns and grenades to break glass. |
newDamageSystemDamageReference |
Decimal number | 5.0 |
Baseline used by the kinetic damage system when a shootable has Mass. A 9 g projectile retains the baseline; heavier projectiles scale with mass^(2/3) to remain proportional to normalized vehicle HP. |
newDamageSystemExplosiveDamageReference |
Decimal number | 80.0 |
Baseline damage for explosive-mass calculations when a shootable has an explosive mass. |
newDamageSystemExplosivePowerReference |
Decimal number | 4.0 |
Baseline explosion power for explosive-mass calculations. |
newDamageSystemExplosiveRadiusReference |
Decimal number | 10.0 |
Baseline explosion radius for explosive-mass calculations. |
maxExplosionRadius |
Decimal number, 1-4096
|
128.0 |
Hard ceiling in blocks on the explosion, blast and derived practical fragment query radii of any single detonation. It is a server performance guard. The fragment model derives a query distance from count, spread and retained energy where expected unarmoured damage drops below 1 HP; the cap may shorten it further. Blast and crater radii still have their own scaling. |
newDamageSystemBlastToExplosionRadiusRatio |
Decimal number, 0.0 to 10.0
|
2.5 |
Ratio between blast damage radius and the visual/block-breaking explosion radius. |
shootableProximityTriggerFriendlyFire |
true or false
|
false |
Allows proximity-triggered shootables to trigger from allies and cause friendly fire. |
shootableDefaultRespawnTime |
Integer ticks, 0 or higher |
0 |
Default maximum despawn time for shootables. 0 means no default despawn time. |
lockOnRange |
Decimal number, blocks | 128.0 |
Range used by lock-on missiles when searching for targets. |
flakParticlesRange |
Integer blocks | 256 |
Range for sending flak particle packets to clients. |
entityHitParticleRange |
Decimal number, blocks | 64.0 |
Range for sending entity-hit particle packets to clients. |
blockHitParticleRange |
Decimal number, blocks | 64.0 |
Range for sending block-hit particle packets to clients. |
smokeParticlesCount |
Integer, 0 or higher |
50 |
Number of smoke particles spawned per smoke particle packet. |
smokeParticlesRange |
Decimal number, blocks | 32.0 |
Range for sending smoke particle packets to clients. |
The new damage-system reference settings are advanced balance controls. Change them when you want to rebalance a whole pack around projectile mass or explosive mass, not when you only want to adjust one bullet or grenade.
Particle range settings affect how far the server sends visual-effect packets. Larger values can increase network and client particle load on busy servers.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
reloadSoundRange |
Decimal number, blocks | 64.0 |
Reload sounds of guns, AA guns, NPC weapons and vehicle weapons, shell inserts and ShootReloadSound included. |
gunActionSoundRange |
Decimal number, blocks | 48.0 |
Bolt and pump action sounds, idle sounds, and minigun warm-up, loop and cool-down sounds. |
meleeSoundRange |
Decimal number, blocks | 48.0 |
Melee swing, hit and shield block sounds. |
grenadeThrowSoundRange |
Decimal number, blocks | 48.0 |
Grenade throw sounds. |
gunLockOnSoundRange |
Decimal number, blocks | 10.0 |
Lock-on sound of a hand-held launcher locking onto a target. |
gunFireSoundRange |
Decimal number, blocks | 128.0 |
Range for gunfire sounds. |
explosionSoundRange |
Decimal number, blocks | 1024.0 |
Maximum hearing range for explosions. Each explosion is heard at 6 blocks per block of blast radius (at least 48 blocks), up to this cap. |
vehicleSoundRange |
Decimal number, blocks | 50.0 |
Default for vehicle engine, reverse, movement, seat traversal and mecha footstep sounds, and vehicle placement sounds. |
vehicleUtilitySoundRange |
Decimal number, blocks | 64.0 |
Mecha tool, ore detector and rocket-pack sounds. |
vehicleFlareSoundRange |
Decimal number, blocks | 96.0 |
Vehicle flare sounds. |
vehicleLockOnSoundRange |
Decimal number, blocks | 10.0 |
Lock-on cue heard by the vehicle operator. |
vehicleLockedOnSoundRange |
Decimal number, blocks | 5.0 |
Incoming lock warning heard in a targeted vehicle. |
bulletHitSoundRange |
Decimal number, blocks | 64.0 |
Bullet hit sounds. |
grenadeStickSoundRange |
Decimal number, blocks | 10.0 |
Sound of a grenade sticking to a surface. |
grenadeFlashSoundRange |
Decimal number, blocks | 16.0 |
Sound of a flash grenade going off. |
overridePackSoundRanges |
Boolean | true |
When enabled, the ranges above replace every content-pack *SoundRange line (GunSoundRange, ReloadSoundRange, IdleSoundRange, MeleeSoundRange, DistantSoundRange, HitSoundRange, StickSoundRange, FlashSoundRange, StartSoundRange, EngineSoundRange, BackSoundRange, LockedOnSoundRange), so sounds are consistent across packs. Disable it to let packs set their own ranges. DistantSoundRange falls back to 1.5 times gunFireSoundRange. |
Every range of 16 blocks or more also sets loudness: the sound fades out linearly at that
range. Shorter ranges play at full volume nearby and only limit who hears the sound, as in
1.7.10. The single soundRange setting of earlier versions was split into the reload, gun
action, melee and grenade throw ranges; an old soundRange line is ignored.
Larger values make sounds carry farther and may increase how much sound traffic is sent on busy servers. The configured range also sets the packet delivery radius, including values below 16 blocks.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
useNewPenetrationSystem |
true or false
|
false |
Enables the newer penetration behavior. |
enableBlockPenetration |
true or false
|
false |
Allows block penetration when the penetration system and projectile settings permit it. |
blockPenetrationModifier |
Decimal number, 0.0 to 100.0
|
0.0 |
Default block penetration power. Individual bullets can override this. |
kineticPenetrationReference |
Decimal number, 0.0 to 100.0
|
0.087 |
Scaling coefficient of the kinetic penetrating-power formula, used by ammunition that declares a Mass. See Penetration System. |
blocks |
TOML string list | [] |
Per-block penetration data. |
Each blocks entry uses this format:
blocks = [
"minecraft:stone; 3.0; false",
"minecraft:glass; 0.3; true"
]The format is:
namespace:block; hardness; breaksOnPenetration
hardness is a decimal number. breaksOnPenetration is true if the block should
break when penetrated, or false if it should remain.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
enableDigitalAmmoSystem |
true or false
|
false |
Enables a virtual per-player ammo pool instead of relying only on physical ammo items. |
digitalAmmoDefaultAmount |
Integer | 100 |
Starting amount for each digital ammo type when a player first joins. |
digitalAmmoMaxAmount |
Integer | 1000 |
Maximum stored amount per ammo type. |
digitalAmmoNumTypes |
Integer, 1 to 20
|
7 |
Number of different digital ammo types. |
digitalAmmoSupplyBlocks |
TOML string list | [] |
Blocks that refill digital ammo when used. |
digitalAmmoSupplyAmount |
Integer | 100 |
Amount restored for each ammo type when using a supply block. |
Example supply block setup:
digitalAmmoSupplyBlocks = [
"minecraft:iron_block",
"minecraft:barrel"
]
digitalAmmoSupplyAmount = 250Use namespaced block IDs such as minecraft:barrel or yourmod:ammo_crate.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
dimensionGravityFactors |
list of namespace:dimension=factor entries, factor from 0 to 10
|
[] |
Gravity multipliers for Flan's projectiles, thrown guns, AA guns, parachutes, mechas, driveables and falling particles. |
dimensionDragFactors |
list of namespace:dimension=factor entries, factor from 0 to 10
|
[] |
Drag multipliers for Flan's projectiles, AA guns, parachutes, driveables and particles. |
Each dimension has its own gravity and drag factor. An unlisted dimension uses 1, including the Overworld, Nether and End. For example, set dimensionGravityFactors = ["space:moon=0.17"] and dimensionDragFactors = ["space:moon=0.05"] in the common TOML. At 1, authored physics is unchanged; 0 removes the relevant force. Per-tick velocity retention r becomes r^dragFactor; derived drag forces are multiplied directly. These settings affect Flan's physics, not vanilla entities or terrain friction.
Operators can inspect the current dimension with /flansphysics, or inspect a named dimension with /flansphysics gravity <dimension> and /flansphysics drag <dimension>. Set an override with /flansphysics gravity <dimension> <factor> or /flansphysics drag <dimension> <factor>. Replace the factor with reset to remove its override. Command changes are saved to the common TOML and synced to clients immediately.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
vehicleThrottleDecayMultiplier |
decimal from 0 to 100
|
4.0 |
Multiplies each ground or water vehicle's pack-authored ThrottleDecay in every physics mode. 4 retains the faster decay, 1 restores the original speed, and 0 disables automatic decay globally. The delay, decay conditions, braking and persistent throttle behavior stay unchanged; ThrottleDecay 0 in a pack still disables decay. |
forceLegacyPlanePhysics |
true / false
|
false |
Forces every aircraft to ignore all Real* movement parameters and global movement tuning, including derived propulsion, lift, controls, manoeuvre drag, draft, speed scaling, speed caps, and expanded movement look-ahead/clamps. |
forceLegacyVehiclePhysics |
true / false
|
false |
The same legacy movement override for every ground and water vehicle; derived propulsion, cornering loss, drive type, reverse/slope/draft overrides, scaling, caps, and expanded movement look-ahead/clamps are bypassed. |
enableAircraftRollSelfLeveling |
true / false
|
true |
Enables the weak airborne roll force that slowly returns planes, helicopters, and VTOL hover mode toward horizontal while roll input is neutral. Set to false to disable it globally. |
realisticPlaneSpeedScale |
decimal from 0.1 to 1.0
|
1.0 |
Scales the real-world speeds of aircraft, declared with RealMaxSpeedKmh and RealMaxReverseSpeedKmh. |
realisticGroundVehicleSpeedScale |
decimal from 0.1 to 1.0
|
1.0 |
The same, for ground and water vehicles, and independent of the aircraft scale. |
realisticAircraftReferenceSpeedScale |
decimal from 0.05 to 1.0
|
0.25 |
Scales the wing-loading-derived reference airspeed for real-world fixed-wing aircraft. Affects takeoff, low-speed lift, and stall-like behaviour together. |
realisticAircraftThrottleResponse |
decimal from 1.0 to 5.0
|
3.0 |
Exponent applied to the throttle lever before it scales derived fixed-wing thrust. 1.0 is the physical value: the lever meters engine power, so half throttle is half power and about 79% of top speed. 3.0 instead makes the lever linear in speed, at the cost of only an eighth of rated power at half throttle. Top speed at full throttle is unchanged either way. |
maxPlaneSpeedKmh |
decimal from 1.0 to 100000.0
|
10000.0 |
Absolute speed ceiling for aircraft. No plane may exceed it, whatever its pack or physics profile says. High enough by default to be inert. |
maxVehicleSpeedKmh |
decimal from 1.0 to 100000.0
|
10000.0 |
The same, for ground and water vehicles. |
The mod treats one block as one metre and twenty ticks as one second, so km/h
becomes blocks per tick as kmh / 72, then multiplied by the scale belonging to
that class of driveable:
effectiveBlocksPerTick = (realMaxSpeedKmh / 72) * classSpeedScale
1.0 runs a class at its full real-world speed; 0.5 runs it at half speed.
Only speeds are scaled: mass, engine power, thrust, wing area, slope, and draft
are never scaled. Driveables that declare no real-world parameters are
unaffected at any setting, and mechas, which have no real-world profile of their
own, are never scaled.
Every real-world speed follows the class scale together — top speed, reverse speed, climb rate, the derived stall reference speed and the wheel look-ahead — so a slowed aircraft still takes off and stalls at sensible fractions of its own reduced top speed rather than becoming unflyable.
The two hard caps are a different mechanism. A scale changes what a driveable's top speed is; a cap refuses to let anything travel faster than a fixed figure, whichever path produced its velocity, so it also covers legacy driveables, helicopters, VTOL, and six-DOF craft. It scales the whole velocity vector, so the direction of travel is preserved, and it does nothing at all while a driveable is slower than the ceiling.
forceLegacyPlanePhysics and forceLegacyVehiclePhysics take precedence over
every other movement setting in this section. They are migration and
compatibility switches: content definitions and their Real* data are left
untouched, but the selected class runs its legacy movement path globally. Damage
and health settings are not movement physics and remain active.
These settings are synchronized to clients with the rest of the common config, so item tooltips on a server show the server's effective values. See Realistic Vehicle Physics for the full parameter list.
Driveables normally run on Fuel Can parts, or on Forge Energy when their engine sets
UseRFPower. This section adds liquid fuel: any container that reports Forge's fluid
handler capability — buckets included — can be dropped into a driveable's fuel or cargo
slot and will be emptied into the tank.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
fluidFuels |
list of <namespace:fluid>; <fuel per bucket>
|
BuildCraft oil and fuel | Which liquids burn, and what a full bucket of each is worth. |
Each line names a fluid by registry id and the fuel one bucket of it yields. A trailing
* on the fluid path matches everything starting with it, which covers a mod's grade
and heat variants in a single line. The first matching line wins, so a specific fluid
placed above a wildcard overrides it. Anything not listed — water and lava included —
is never accepted as fuel.
The defaults are:
fluidFuels = ["buildcraftenergy:oil*; 1000", "buildcraftenergy:fuel*; 2000"]
For scale, the Parts pack Fuel Can holds 1000 fuel and vehicle tanks are usually
1000 to 6000, so a bucket of crude oil is worth one can and a bucket of refined
fuel two — the same ratio Flan's Mod used on 1.7.10.
No mod is required for this and none is depended on: fluids are matched by registry id, so a server running BuildCraft gets its oil and fuel out of the box, and any other mod's liquid fuel can be added or retuned with a line of config. Fuel is taken a bucket at a time and only when the tank has room for the whole bucket, and the emptied container is left in the slot it came from.
These settings calibrate optional physical vehicle armour and normalized health. Vehicles that do not opt into those definition features remain unaffected.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
realisticVehicleHealthScale |
decimal from 0.01 to 1000.0
|
5.0 |
Total normalized HP multiplier for opted-in vehicles and AA guns: scale * RealMassKg^(2/3). |
maxArmorImpactAngleDeg |
decimal from 0.0 to 89.9
|
80.0 |
Caps the angle used for line-of-sight armour at grazing impact angles. |
armoredBlastResistanceKPaPerMm |
decimal from 0.1 to 100000.0
|
150.0 |
Gameplay blast-pressure threshold per millimetre of nominal armour. |
minimumBlastDistanceMeters |
decimal from 0.01 to 100.0
|
0.5 |
Minimum distance used by armoured overpressure calculations, preventing singular pressure at zero distance. |
heatDamageReference |
decimal from 0.0 to 100000.0
|
1100.0 |
Damage a HEAT round deals behind armour it penetrates, for a 1 kg TNT charge, on realistic-health vehicles. Grows with the square root of the charge. The default makes a Panzerfaust 60 take about nine tenths of a Panzer IV hull per penetrating hit. |
heatCrewSpallDamage |
decimal from 0.0 to 1000.0
|
10.0 |
Damage dealt to each occupant of a realistic-health vehicle part a HEAT jet penetrates. 0 disables crew spall. |
All of these values are server-authoritative and synchronized to clients. The blast resistance is a gameplay calibration rather than a material-science constant. See Vehicle Armour and Damage for the content-pack parameters and calculation flow.
These settings decide what is sent to players whose client draws far terrain with Distant Horizons and asks for it. Players without it are sent nothing. See Distant Horizons Integration.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
distantContactsEnabled |
true or false
|
true |
Sends those players the driveables beyond their entity tracking range, so they can see them as simplified shapes. The positions could be read by a modified client as a radar; disable this where that matters. |
distantContactRange |
decimal from 0.0 to 16384.0
|
3072.0 |
Farthest such a driveable is sent, in blocks. Driveables only exist in loaded chunks, so this mostly shows the vehicles of other players. |
distantContactUpdateInterval |
integer from 1 to 40
|
5 |
Ticks between two updates; clients extrapolate the movement in between. |
distantContactMaxCount |
integer from 0 to 256
|
48 |
Most distant driveables sent to one player at a time; the nearest are kept. |
distantExplosionRange |
decimal from 0.0 to 16384.0
|
4096.0 |
Farthest a large explosion beyond the particle range is shown, as a flash, fireball and smoke column. 0 disables them. |
distantExplosionMinRadius |
decimal from 0.0 to 64.0
|
1.5 |
Smallest explosion radius shown at a distance, in blocks. |
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
enchantmentModuleEnabled |
true or false
|
true |
Enables the Flan's Mod enchantment module, including Steady, Nimble, Lumberjack, Duelist, Sharpshooter, and Juggernaut. |
File: config/flansmodultimate-client.toml
These settings only affect the local client. They do not change server rules.
Legacy multipart models receive automatic rendering optimizations without changes to their model classes or an additional config option. The renderer reuses local transforms for leaf parts and retains geometry/face-normal data while transformed vertices remain unchanged. Animated transforms and bone-group changes are still evaluated. Polygon caps also submit fewer duplicate vertices while keeping the same triangles; incomplete legacy normal lists retain their original submission order. These optimizations reduce CPU work and vertex traffic, but the FPS benefit depends on the scene and hardware.
Distant driveable impostor views are copied directly into their texture atlas on the GPU. A view is generated at the start of the frame after it is first needed, before the world is drawn, so fog, the camera's lighting and shader packs cannot affect it. Captures reuse a vertex buffer and share measured bounds between cached paint variants of the same model and vehicle type. Vehicles already displayed as impostors skip detailed per-frame render-state preparation; their animation history continues updating for the return to exact geometry. These changes target capture hitches and distant crowds without adding settings or changing model classes.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
showPackNameInItemDescriptions |
true or false
|
true |
Shows the content pack name in item tooltips. |
showDetailedItemDescriptions |
true or false
|
true |
Shows the detailed tooltips of guns, ammunition, grenades, attachments, armour, AA guns and driveables, including the full statistics shown while sneaking. When disabled, only the item's own description is listed. |
showHitMarker |
true or false
|
true |
Shows a hit marker when one of your shots hits. |
hitMarkerRed, hitMarkerGreen, hitMarkerBlue
|
Decimal number, 0.0 to 1.0
|
1.0 |
Colour of the hit marker whenever fancyHitMarker does not colour it by the kind of hit. |
hitMarkerAlpha |
Decimal number, 0.0 to 1.0
|
1.0 |
Opacity of the hit marker in every style. |
vehicleScreenShake |
true or false
|
true |
Kicks your camera when a nearby driveable that opts into FancyScreenShake fires its main or coaxial gun. The kick only changes the view, never your aim. |
gunScreenShake |
true or false
|
true |
Punches your field of view in, and kicks your camera, when you fire a gun that opts into HasScreenShake. Only the view changes, never your aim. |
additionalThermalHotParticles |
list of particle type ids | empty | Extra particle types, such as somemod:plasma, that thermal sights show hot. An id without a namespace matches that name in any mod. Explosions, fire, muzzle flashes, sparks, tracers and Flan's own blast and smoke particles are hot already. |
enableUncensoredContent |
true or false
|
false |
Loads optional encrypted replacement names and textures supplied by packaged content modules. Changing it reloads client resources. |
optionsButtonPlacement |
OPTIONS_SCREEN, PAUSE_MENU, BOTH, or NONE
|
OPTIONS_SCREEN |
Where the button opening the Flan's Mod options screen is added. With NONE the screen stays reachable from the Config button of the Mods list. |
showFlansHud |
true or false
|
true |
Master switch for Flan's Mod's own HUD: ammunition, AA and deployed gun readouts, team information and the kill feed. |
hideCrosshairForGuns |
true or false
|
false |
Personal preference hiding the crosshair while holding a non-melee gun. The server's disableCrosshairForGuns hides it for everyone regardless; this option can only hide it, never bring it back. |
loadAllModelsInCache |
true or false
|
false |
Loads and caches all models during resource reload. Leave this off unless you specifically need it. |
showShootableDurabilityBars |
true or false
|
true |
Shows a durability-style bar for shootable items when their current round item is not full. |
showArmorDamageAbsorptionBar |
true or false
|
true |
Shows the HUD bar for legacy armor damage absorption. |
loadAllModelsInCache can use a lot of RAM and make resource reloads much slower
when many content packs are installed.
These local pitch multipliers apply when a vehicle or plane definition does not specify its own engine pitch values. The loop interpolates between the 0%, 50%, and 100% throttle points. A definition's EngineSoundPitchRange instead gives a linear curve from its pitch base to base plus range.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
vehiclePitchBase |
Float 0 or greater |
0.5 |
Vehicle engine pitch at 0% throttle. |
vehiclePitchAt50 |
Float 0 or greater |
0.8 |
Vehicle engine pitch at 50% throttle. |
vehiclePitchAt100 |
Float 0 or greater |
1.2 |
Vehicle engine pitch at 100% throttle. |
planePitchBase |
Float 0 or greater |
0.5 |
Plane engine pitch at 0% throttle. |
planePitchAt50 |
Float 0 or greater |
1.0 |
Plane engine pitch at 50% throttle. |
planePitchAt100 |
Float 0 or greater |
1.5 |
Plane engine pitch at 100% throttle. |
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
showAmmoHud |
true or false
|
true |
Shows or hides the held-gun ammo HUD independently of the rest of the HUD. |
ammoHudLayout |
CURRENT, LEGACY_FANCY, or LEGACY_DEFAULT
|
CURRENT |
Selects the existing Ultimate 2.0 layout or either Ultimate 1.7.10 placement. The default keeps the existing layout unchanged. |
These place the two blocks of the vehicle HUD, which AA guns and deployed guns share. They are in GUI pixels and also appear in the HUD section of the in-game options screen, where dragging a slider moves the HUD straight away.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
vehicleHudLeftX |
Integer 0-500
|
2 |
Distance from the left screen edge to the left block (name, health, fuel, speed). |
vehicleHudLeftY |
Integer 0-500
|
2 |
Distance from the top screen edge to the left block. |
vehicleHudRightX |
Integer 0-500
|
12 |
Distance from the right screen edge to the right block (aim, weapons, ammunition). The block is anchored by its right edge. |
vehicleHudRightY |
Integer 0-500
|
2 |
Distance from the top screen edge to the right block. |
The quick menu offers separate driveableRenderDistanceMultiplier and
flanNpcRenderDistanceMultiplier controls. Both default to 1.0 and accept 0.25
to 4.0. The NPC control requires the NPC module.
The distance is the average of the entity collision bounding box's width, height
and depth, multiplied by 64, Minecraft's view scale, and the selected multiplier.
Minecraft's view scale still includes its Entity Distance setting and effective
chunk render distance. Larger collision boxes therefore keep proportionally larger
distances. These controls do not change collision geometry or frustum bounds.
Malformed numeric values are rejected or corrected to defaults.
Full entities remain limited by server tracking and loaded chunks. The multiplier tooltip shows the server tracking setting; an increased multiplier cannot bypass server limits. NPCs have no Distant Horizons contact proxies. The separate controls for bullets, grenades, deployed guns and AA guns remain independent.
The main options screen's Rendering section has separate Model LOD and Impostors sliders. GPU Model Caching occupies the first row, Model LOD and Impostors the second, and the driveable and Flan NPC render distance sliders the third. Their handles snap to marked stops: Off, Ultra Quality, Quality, Balanced, Performance, Aggressive, Extreme, and Max FPS. Quality matches the default config. Existing saved settings are preserved. Hovering over either slider shows the exact client config values for its selected stop. Choosing a preset writes those values when the screen closes; no new preset field is added to the file. On opening the screen, Custom indicates that advanced values do not match any preset. This last stop leaves the current config values unchanged.
| Preset | Model near/far part cutoff (pixels) | Far detail multiplier | Track simplification/grouping (pixels) | Impostor pixel threshold | Impostor minimum/preferred distance (blocks) |
|---|---|---|---|---|---|
| Off | 0 / 0 | 1 | 0 / 0 | 0 | unchanged / 0 |
| Ultra Quality | 0.25 / 0.5 | 1 | 0 / 0 | 8 | 128 / 256 |
| Quality | 0.5 / 1 | 1 | 4 / 0 | 16 | 96 / 192 |
| Balanced | 0.75 / 2 | 2 | 8 / 8 | 32 | 64 / 128 |
| Performance | 1.5 / 4 | 2 | 12 / 12 | 64 | 48 / 96 |
| Aggressive | 3 / 8 | 3 | 16 / 16 | 96 | 32 / 64 |
| Extreme | 4 / 12 | 3.5 | 24 / 16 | 128 | 24 / 48 |
| Max FPS | 6 / 16 | 4 | 32 / 16 | 160 | 16 / 32 |
Model-detail presets adjust part-size culling and supported tank-track LOD. Off
sets their thresholds to zero while leaving generated impostors available. Impostor
presets adjust the projected-size threshold and minimum/maximum distances; Off
sets the pixel and maximum-distance thresholds to zero while leaving model LOD
available. Both sliders enable the shared enableDriveableLod master switch when
changed. If it was previously off, the other feature stays off until its own slider
is changed. The advanced groundVehicleLodDistanceFactor is shared by both features,
so neither slider changes it. Impostor presets other than Off use the default
64-pixel resolution, 8 base yaw views and quality multiplier of 2 (128 pixels/32 yaw views
effective). They leave the impostor cache-size limit unchanged. Actual transitions
still depend on model size, screen size, whether a view has been captured, and the
image-quality limit; Max FPS is an aggressive preset, not a guaranteed FPS gain.
enableGpuModelCache is an experimental client option, enabled by default. Set it
to false in this section of config/flansmodultimate-client.toml, or use the
GPU Model Cache toggle under Rendering on the main Flan's options screen.
The toggle saves and applies immediately. It caches rigid vehicle and gun model geometry on the
GPU. Up to 768 geometries sharing at most 96 transform entries fit in each draw, while animation, tint, overlay and lighting
are updated every frame. This retains the selected geometry's detail; existing
distance LOD settings continue to apply independently.
Eligible rigid parts hidden by projected-size culling keep their cached mesh slots;
the renderer draws only the visible index ranges. This avoids new mesh uploads
when only part visibility changes. Entirely hidden batches skip upload and draw.
Use /flansrenderstats start and /flansrenderstats stop to inspect cache hits,
uploads, evictions, draws and culling; Rendering Performance
explains the counters and measurement limits.
gpuModelCacheMegabytes caps the video memory the cache keeps for vertex buffers.
0 (Automatic on the options screen) uses a sixteenth of the dedicated video
memory reported by the driver, from 128 to 512 MiB, or 128 MiB when the driver does
not report it. If meshes drawn in the last two frames keep being evicted for two
consecutive 2-second windows, Automatic grows by a quarter, up to an eighth of video
memory (at most 1 GiB) and only while 512 MiB of video memory stays free. It never
shrinks on its own; resource reload, disconnect or toggling the cache return it to
the starting value. A manual value is never grown. The option's tooltip shows the value Automatic selects on the current
computer and the video memory it is based on. Buffers are created only as models are drawn, so the cap limits memory
rather than reserving it. The cache must hold every distinct model drawn in a frame;
raise the cap if /flansrenderstats reports evictions of meshes drawn in the last two
frames. A changed value applies without a restart, evicting meshes beyond a lower cap.
Uploads are limited to 2 MiB per client tick. Resource reload, disconnect and toggling the option release cached
buffers. Glowing or bone-deformed geometry, GUI previews, glint, thermal masks,
sorted transparency, Fabulous graphics, OptiFine and an active Oculus or Iris shader
pack use the standard path. With Oculus or Iris installed but shaders turned off, the
cache stays available. See Rendering Performance
for how shader packs are handled. Translucent models need enableFastTranslucentRendering
enabled to use the cache. Armor and other renderers are currently unchanged.
Compare frame times after looking around to warm the cache. This is intended to
reduce CPU vertex processing for detailed models; it cannot eliminate GPU
fill-rate bottlenecks. Extra draw calls, slightly different normal rounding and
render ordering may cause slower frame times or visual differences on some setups.
Set enableGpuModelCache = false to restore the standard path without a restart.
The renderer reuses submission buffers and geometry cache probes after warm-up. Normal internally owned geometry uses revision checks instead of scanning every polygon on every draw. Geometry exposed through legacy mutable APIs retains conservative validation. See Rendering Performance for implementation details, compatibility limits and the development benchmark.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
enableGpuModelCache |
true or false
|
true |
Experimental GPU cache for rigid vehicle and gun geometry; see compatibility notes above. |
gpuModelCacheMegabytes |
Integer MiB, 0 to 2048
|
0 |
Video memory cap of the GPU model cache. 0 is automatic (a sixteenth of video memory, 128-512 MiB); 1 to 15 count as 16. |
deployedGunRenderDistance |
Integer blocks, 1 to 4096
|
64 |
Client-side visual render distance for deployed guns. |
aaGunRenderDistance |
Integer blocks, 1 to 4096
|
128 |
Client-side visual render distance for AA guns. |
enableDriveableLod |
true or false
|
true |
Enables distance-dependent detail reduction and generated impostors in world rendering. |
minimumDriveablePartPixelSize |
Screen pixels, 0 to 16
|
0.5 |
Near-detail threshold for omitting tiny model parts. 0 disables part-size culling, including its distance ramp. A shader pack's shadow pass leaves out the same parts. |
maximumDriveableLodPartPixelSize |
Screen pixels, 0 to 32
|
1 |
Base far-detail threshold; must exceed the near threshold. |
driveableLodDetailMultiplier |
Number, 1 to 4
|
1 |
Multiplies the far-detail threshold, giving a default maximum of 1 pixel across the whole model. |
groundVehicleLodDistanceFactor |
Number, 0.25 to 1
|
0.5 |
Shortens detail and impostor transition distances for small land vehicles. Boats and aircraft are excluded; the reduction fades out for very large ground models. |
driveableImpostorPixelSize |
Screen pixels, 0 to 256
|
16 |
Base impostor threshold. Small land vehicles gradually increase this allowance as the maximum distance approaches. Set this and maximum distance to 0 to disable impostors. |
driveableImpostorMinimumDistance |
Integer blocks, 8 to 4096
|
96 |
Base minimum distance, multiplied by model-size and ground-vehicle factors. |
driveableImpostorMaximumDistance |
Integer blocks, 0 to 4096
|
192 |
Base distance for preferring a ready impostor, subject to image quality. 0 keeps pixel-only selection. |
driveableImpostorQualityMultiplier |
Integer, 1 or 2
|
2 |
Multiplies capture resolution by this factor and yaw samples by its square, capped at 256 pixels and 64 yaw views. Existing defaults of 64 pixels/8 views become 128 pixels/32 yaw views. Atlas pages are allocated on demand. |
driveableImpostorResolution |
Integer pixels, 32 to 256
|
64 |
Base resolution of each captured view, scaled by the quality multiplier up to 256 pixels. Changing it clears the generated cache. |
driveableImpostorYawAngles |
Integer, 4 to 64
|
8 |
Base horizontal view count, scaled by the square of the quality multiplier up to 64 views. Nine elevations cover -90 to +90 degrees at 22.5-degree intervals. |
driveableImpostorCacheEntries |
Integer, 1 to 128
|
32 |
Maximum retained model/paintjob entries. Each entry allocates small atlas pages as views are requested. |
driveableTrackLinkLodPixelSize |
Screen pixels, 0 to 32
|
4 |
Simplifies supported multipart tank track links when their projected bounding diameter is this small. Requires enableDriveableLod; 0 disables this geometry LOD. A shader pack's shadow pass otherwise always uses single-link envelopes, except for the player's own vehicle. |
driveableTrackLinkGroupingPixelSize |
Screen pixels, 0 to 16
|
0 |
Groups simplified links in pairs at this size and fours at half this size. Clamped by the single-link LOD threshold. 0 keeps the existing one-envelope-per-link LOD. |
Track geometry LOD replaces each supported link with a textured six-face envelope. At up to eight screen pixels per link by default, one longer envelope represents two links; at up to four pixels, it represents four. The original per-link angle simulation continues so links resume their correct animation when closer. Damage still hides each whole track side. The distant envelope is an approximation. Selection includes model scaling and track-path offsets, stays at full detail nearby (at least 32 blocks), and uses 25% size hysteresis to avoid flickering between detail levels. Previews, the locally controlled vehicle, and unsupported geometry (including glowing, bone-deformed, hidden, child or custom renderer parts) retain full detail. Wheels remain unchanged. No edits to legacy model classes are needed.
Whole-model detail reduction smoothly raises the part-size threshold over 24�80 size-scaled blocks. This applies to eligible small parts throughout the model, including hull and turret details, even if damage or a full impostor cache prevents using a billboard. It omits small parts rather than rebuilding their meshes. Menu previews and the locally controlled vehicle do not receive this stronger reduction.
The distance scale is max(1, modelRadius / 3), with no upper cap. Small land
vehicles additionally use groundVehicleLodDistanceFactor; that discount fades
out between radii of 6 and 12 blocks. For example, a 3-block-radius tank uses base
impostor distances of 32/64 blocks, while a 60-block-radius ship uses 1280/2560.
These are eligibility distances: the requested view must be captured, and its
projected size must fit the quality limit. At the effective default resolution of
128 pixels, a new impostor is limited to about 143 pixels across, with hysteresis
on the return transition. Zooming in can therefore restore geometry.
Default impostor captures use 128 x 128 pixels, 32 yaw angles and nine pitch angles spanning -90 to +90 degrees, including directly above and below. The closest horizontal view is at most 5.625 degrees away; the closest elevation is at most 11.25 degrees away. Billboard orientation follows the direction from the model center to the camera and retains the model's bank angle, including pitched and rolled aircraft. Turning the camera without moving it does not select a different side of the model.
Captures remain limited to one view per client tick and always use full geometry.
Until the requested view is ready, the exact model remains visible. Atlas pages
hold four yaw views and three elevations each and are allocated only when needed.
At default quality, each page uses 0.75 MiB of GPU storage plus similar native
image storage. One entry starts with one page; visiting every direction can grow
it to 24 pages (18 MiB each for GPU and native storage). Filling all views in all
32 default entries would use 576 MiB of each, so higher angular coverage can still
increase memory use after extensive viewing. Resource reload or changes to capture
quality clear these pages. Set driveableImpostorQualityMultiplier to 1 to use
the configured resolution/view counts directly; the smaller image-quality limit
may delay impostor transitions. Mechas, damaged vehicles and the locally controlled
vehicle still do not use neutral-pose impostors.
These settings only affect client-side rendering. On multiplayer, the server still controls whether the entity is tracked and synced through the common tracking range.
Every Flan's Mod particle effect has its own natural drawing distance. Ordinary
particles such as smoke, sparks and impact dust use 128 blocks. Larger effects
reach further: an explosion's afterglow, dust skirt, rising column and mushroom
cap are drawn from 16 blocks per block of crater radius, up to 256 blocks, so a
heavy charge's column stays visible across the battlefield. These distances are
not settings; particleDistanceScale scales all of them together.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
particleDistanceScale |
Number, 0.125 to 4
|
1.0 |
Multiplies every effect's natural drawing distance. 0.5 halves them all; 2 doubles them. Effects are still limited by how far the server sends them. |
fullParticleDensityShare |
Number, 0 to 1
|
0.25 |
Share of each effect's drawing distance within which it keeps full density. Beyond it, particles are gradually dropped until only distantParticleDensity remain at the edge. Large explosion layers are never thinned, because gaps in a few big puffs are visible. |
distantParticleDensity |
Number, 0 to 1
|
0.25 |
Fraction of particles kept at the edge of an effect's drawing distance. |
maxFlansParticlesPerTick |
Integer, 16 to 100000
|
2048 |
Maximum particles Flan's Mod creates in one client tick, whatever their distance. This is the hard performance ceiling during heavy barrages. |
maxFragSparks |
Integer, 0 to 100000
|
512 |
Maximum fragmentation sparks from one explosion. Spark count also never exceeds the burst's effective fragment count. 0 disables sparks. The per-tick particle limit may reduce the visible count further. |
fragSparkMultiplier |
Number, 0 to 4
|
0.25 |
Multiplies the spark count after it is limited to the effective fragment count. The final count remains capped by effective fragments and maxFragSparks. 0 disables sparks. |
particleDistanceScale and fullParticleDensityShare replace the older
particleRenderDistance and fullParticleDensityDistance block values. An old
client config drops those two entries and starts from the new defaults.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
shootButton |
Mouse button enum | "MOUSE_LEFT" |
Main-hand gun shooting or primary function. |
shootButtonOffhand |
Mouse button enum | "MOUSE_RIGHT" |
Offhand gun shooting or primary function. |
aimButton |
Mouse button enum | "MOUSE_RIGHT" |
Aiming or secondary function. An offhand gun held with an empty main hand aims with shootButton instead while aimButton and shootButtonOffhand are the same button, so by default it fires with right click and aims with left click. |
aimType |
"HOLD" or "TOGGLE"
|
"TOGGLE" |
Whether aiming is held while pressing the button or toggled on/off. |
predictDriveableMovement |
true or false
|
true |
Simulates the vehicle or plane you are driving on your own client, so it answers the controls at once instead of a network round trip later. The server stays authoritative and corrects any difference. false shows only the movement the server reports. See Driveable Controls. |
Allowed mouse button values:
MOUSE_LEFT
MOUSE_RIGHT
MOUSE_MIDDLE
MOUSE_4
MOUSE_5
Each player chooses for themselves what a reload does with the ammo it takes out of the gun. The client sends these preferences to the server when joining and whenever they change, so they apply to reloads the player requests and to automatic reloads alike.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
combineAmmoOnReload |
true or false
|
true |
Combines the unloaded ammo with matching damaged ammo in the inventory. A server whose own combineAmmoOnReload is false forbids this, and the option then has no effect. |
ammoToUpperInventoryOnReload |
true or false
|
false |
Tries to place the unloaded ammo in the upper inventory first instead of the hotbar. This overrides the server's ammoToUpperInventoryOnReload setting. |
Players on a vanilla or outdated client never announce a preference, so the server's own settings decide for them.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
enableArms |
true or false
|
true |
Renders player arms with guns. |
muzzleFlashStyle |
"FMU_1_7_10" or "MC_1_12_2"
|
"FMU_1_7_10" |
Preferred muzzle flash: FMU 1.7.10 Style uses FlashModel; 1.12.2 Style uses MuzzleFlashModel. Available under Weapon Visuals in Quick Options and applies immediately to held, deployed and mounted guns. If a pack supplies only one model, that model remains visible under either preference. The official firearm definitions declare both; switching preserves the muzzle position. |
aimPose |
"ENFORCED" or "DYNAMIC"
|
"DYNAMIC" |
How your arms hold a gun, as other players see you. Also on the quick options screen, and switched while playing with the Toggle Aim Pose key (default N). A server whose playerAimPose is not FREE_CHOICE overrides it. See Aim Pose. |
enableGunAnimationsInThirdPerson |
true or false
|
true |
Shows reload, melee, and other gun animations in third person, including on other players. |
enableWeaponSprintStance |
true or false
|
true |
Lowers weapons while sprinting. |
enableRandomSprintStance |
true or false
|
false |
Generates a unique sprint stance per weapon using the weapon name as a seed. |
Players and humanoid mobs hold guns and shields with each arm posed on its own:
| Held | Arms |
|---|---|
| A shield | The shield arm is always raised on its own, whatever the other hand holds and whichever pose applies. |
| A gun, other hand empty | The gun arm is raised and the free arm reaches across to support it, as with a bow. |
| A gun in each hand | Both arms aim straight ahead. |
| A gun and any other item, a shield included | Only the gun arm is raised. |
ENFORCED keeps every held gun raised this way. DYNAMIC, the default, lowers a gun until
it is fired or aimed through the sights, and keeps it up for a second after the last shot.
When only one of two guns is active, only its own arm comes up.
Your choice is sent to the server, which relays it to every player who can see you, so
they see your arms the way you chose. The server's hit detection follows the same pose,
so a lowered arm is hit where it is drawn. Mobs follow entityAimPose instead: mob
renderers that reset their own arm poses every frame, such as vanilla skeletons, keep
their own animation.
These options choose whether certain item types use translucent rendering by
default. If a content file explicitly has TranslucentRendering true, it remains
translucent regardless of these defaults.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
alwaysEnableArmorsTranslucentRenderingByDefault |
true or false
|
false |
Uses translucent rendering by default for armors. |
alwaysEnableGunsTranslucentRenderingByDefault |
true or false
|
true |
Uses translucent rendering by default for guns. |
alwaysEnableGrenadesTranslucentRenderingByDefault |
true or false
|
true |
Uses translucent rendering by default for grenades. |
alwaysEnableBulletsTranslucentRenderingByDefault |
true or false
|
true |
Uses translucent rendering by default for bullets. |
alwaysEnableAttachmentsTranslucentRenderingByDefault |
true or false
|
true |
Uses translucent rendering by default for attachments. |
alwaysEnableAAGunsTranslucentRenderingByDefault |
true or false
|
false |
Uses translucent rendering by default for AA guns. |
Disable a translucent default if a large pack has rendering issues or if you want a more opaque-looking item type by default.
These options choose whether certain item types use face culling by default.
Disable one only for content that needs double-sided model faces. Content files
with DisableCulling true force culling off regardless of these defaults.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
alwaysEnableArmorsCullingByDefault |
true or false
|
false |
Uses face culling by default for armors. |
alwaysEnableGunsCullingByDefault |
true or false
|
true |
Uses face culling by default for guns. |
alwaysEnableGrenadesCullingByDefault |
true or false
|
true |
Uses face culling by default for grenades. |
alwaysEnableBulletsCullingByDefault |
true or false
|
true |
Uses face culling by default for bullets. |
alwaysEnableAttachmentsCullingByDefault |
true or false
|
true |
Uses face culling by default for attachments. |
alwaysEnableAAGunsCullingByDefault |
true or false
|
true |
Uses face culling by default for AA guns. |
These options only do anything while Distant Horizons is installed. The quick options screen shows them in its Distant Horizons section in that case. See Distant Horizons Integration.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
distantHorizonsIntegration |
true or false
|
true |
Uses Distant Horizons to show and measure what lies beyond the vanilla render distance. The options below only apply while this is on. |
distantHorizonsRangefinder |
true or false
|
true |
Lets vehicle rangefinders measure the far terrain beyond the loaded chunks. Such ranges are approximate and shown with a ~. |
distantHorizonsContacts |
true or false
|
true |
Shows driveables beyond the entity render distance as simplified shapes on the far terrain, including those the server reports from beyond the tracking range, when it allows it. |
distantHorizonsExplosions |
true or false
|
true |
Shows large explosions beyond the particle range as a flash, a fireball and a smoke column, when the server allows it. |
distantHorizonsDriveableRendering |
true or false
|
false |
Explicitly extends the configured driveable render cutoff to the chunk edge. Off respects the cutoff and uses contact shapes beyond it. Existing saved values are preserved. |
File: config/flansmodultimate-content-loading.toml
This file controls where the mod looks for content packs and how it prepares generated content assets.
| Setting | Expected value | Default | Purpose |
|---|---|---|---|
contentPacksRelativePath |
Folder path relative to .minecraft
|
"flan" |
Folder where external content packs are loaded from. The default means .minecraft/flan. |
forceRegenContentPacksAssetsAndIds |
true or false
|
false |
Forces content-pack asset and ID regeneration on startup. This can significantly increase startup time, and the log warns on every start while it is on. |
contentLoadingSystemVersion |
Integer | 7 |
Internal content-loading version. Normally do not edit this. |
useDefaultCategories |
true or false
|
true |
Loads the mod's built-in default categories from config/flansmodultimate/default. |
overrideConfiguredSoundLengths |
true or false
|
true |
Replaces configured sound lengths with the measured length of the sound file. |
overrideConfiguredShootPoints |
true or false
|
true |
Moves the muzzles of flan-folder driveables and AA guns onto the barrels measured from their models. |
contentLoadingThreads |
Integer, 0 or more |
0 |
Threads that read and index the content packs during startup. 0 chooses from the processor count (one less than the processors, at most 8). Packs are still registered in the same order, so this never changes what is loaded. 1 does everything on the loading thread. |
soundPackPriority |
List of sound source IDs | All discovered sources | Sound source order, highest priority first. See Sound source priority. |
Use forceRegenContentPacksAssetsAndIds = true when you have changed content packs in
a way that adds or changes generated assets or IDs. After one successful startup,
set it back to false so every launch does not repeat the expensive regeneration.
Example:
contentPacksRelativePath = "flan"
useDefaultCategories = true
forceRegenContentPacksAssetsAndIds = false
contentLoadingThreads = 0explosionBreakBlocks = false
forceNewExplosionsBreakBlocks = false
flanExplosionsDropBlocks = falseheadshotDamageModifier = 3.0gunRecoilModifier = 0.75enableDigitalAmmoSystem = true
digitalAmmoDefaultAmount = 100
digitalAmmoMaxAmount = 1000
digitalAmmoSupplyBlocks = [
"minecraft:barrel"
]
digitalAmmoSupplyAmount = 250In flansmodultimate-content-loading.properties:
useDefaultCategories=falseThis gives you full control over category-based edits, but also removes all built-in category tuning supplied by the mod.
| Problem | What to check |
|---|---|
| Changes do not affect a multiplayer server | Edit the server's config. The server common config overrides client common settings while connected. |
| Category changes do not apply | Restart the game or server, verify the item short name, and check the correct category file for that item type. |
| Game fails to load after editing TOML | Check quotes, commas, brackets, and boolean values. Compare against the generated default file. |
| Startup becomes much slower | Check loadAllModelsInCache and forceRegenContentPacksAssetsAndIds. |
| Content pack changes do not show | Try forceRegenContentPacksAssetsAndIds=true for one launch, then set it back to false. |
| Default categories are still affecting items | Set useDefaultCategories=false, or override the same properties in your user category files. |
The quick options screen exposes these controls in HUD. All client settings below are in General Settings. Operators can change the server suppression options under Server Settings; the common TOML section is Shootable Settings.
| Common setting | Default | Meaning |
|---|---|---|
bulletFlybySounds |
true |
Allows the server to send near-miss sounds. Disable to skip sound-only near-miss work globally. |
bulletFlybyRangeMultiplier |
1 |
Multiplies ammunition FlyBySoundRange (effective radius capped at 32 blocks). Zero disables near-miss sounds. |
nearMissSuppression |
true |
Enables visual suppression from flying bullets and hitscan rounds, including existing ammunition. |
suppressionRangeMultiplier |
1 |
Multiplies ammunition SuppressionRange (effective radius capped at 32 blocks). Zero disables suppression. |
suppressionIntensity |
1 |
Multiplies server impulses, combined with ammunition Suppression / 16. Zero disables impulses. |
suppressionAffectsRiders |
false |
Allows suppression for players riding entities. |
| Client setting | Default | Meaning |
|---|---|---|
explosionScreenShake |
true |
Allows shake from explosive ammunition and grenades. Defaults are strength 10 and radius 32 blocks; pack authors can override or disable either value. |
explosionShakeIntensity |
1 |
Explosion movement multiplier (0–5); zero removes movement. |
explosionShakeDuration |
0.5 |
Explosion recovery time in seconds (0.05–5). |
nearMissSuppression |
true |
Displays server-authored suppression. Disable to remove the effect locally. |
suppressionIntensity |
1 |
Local visual multiplier (0–5); zero removes the effect. |
suppressionDuration |
2 |
Recovery time for a full suppression impulse in seconds (0.1–10). Repeated near misses accumulate up to a fixed ceiling. |
suppressionCameraRoll |
3.5 |
Camera-roll scale in degrees (0–10); zero removes camera movement while retaining the vignette. |
suppressionVignette |
0.82 |
Maximum darkening opacity (0–1); zero removes the vignette while retaining camera movement. |
bulletFlybySounds |
true |
Allows generic and per-ammunition near-miss sounds. |
bulletFlybyVolume |
10 |
Near-miss sound volume (0–10); zero mutes it. |
Pack authors can choose FlyBySound (alias missNoise), FlyBySoundRange, Suppression, and SuppressionRange for each ammunition type. An omitted fly-by sound retains the generic sound; an empty value or None silences it. Both ammunition and grenades accept the explosion shake keys; omitted values enable strength 10 within 32 blocks, and an explicit zero disables shake. No bundled definitions are changed by this port. These effects are independent of the source entity: players, NPCs, mounted weapons and ownerless mod projectiles use the same feedback paths.
The server checks the actual travelled segment and sends each round's sound and suppression impulse at most once per player. The shooter, its owner entities, direct-hit players, spectators and players behind intervening solid cover are excluded. Near misses beyond a terminal impact are excluded. Effects are cosmetic: they never change player aim, damage, accuracy, turret orientation or apply potion effects. Suppression darkness respects the hidden-HUD setting; camera effects remain independently configurable.