pack: v0.29.0 — train fuel requirement + CBC tier-preserving safety
Two related gameplay tweaks:
1. Train fuel requirement (Steam 'n' Rails)
- Set realisticTrains = true in railways-server.toml.
Trains now consume fuel from a Fuel Tank (liquid) or solid fuels
in chests/barrels on the contraption. realisticFuelTanks stays
true so tanks won't accept water/junk.
- Ship a datapack bns-fuel/ that defines TFMG fluids as proper
liquid fuels at tiered burn rates:
crude_oil 8000 ticks/bucket (raw, abundant -- entry)
furnace_gas 12000 ticks/bucket (cheap by-product)
naphtha 24000 ticks/bucket (mid refined)
kerosene 24000 ticks/bucket (mid refined)
gasoline 36000 ticks/bucket (top refined)
diesel 48000 ticks/bucket (top refined, longest)
Vanilla lava bucket still works via bucket-burn fallback
(20000 ticks). Tier curve incentivises building a real refinery.
2. CBC tier-preserving cannon safety
- Revert the nuclear disableAllCannonFailure=true switch shipped
in v0.28 hotfix -- it killed the bronze/steel/nethersteel tier
balance because overloaded cannons fired without consequence.
- Per-lever config that protects against random RNG losses while
keeping the tier mechanic intact:
disableAllCannonFailure = false
squibChance = 0.0 (no random projectile-stuck)
barrelChargeBurstChance = 0.0 (forgive misplaced charges)
interruptedIgnitionChance = 0.0 (forgive gapped loads)
overloadBurstChance = 1.0 (TIER STRICT -- exceed your
cannon's rated propellant
stress = lose the cannon)
failureExplosionPower = 0.0 (no collateral blast when it
does die from overload)
- Effect: a cannon built to spec and used within its
maxSafePropellantStress is immortal. Overloading dies cleanly
per the material's failureMode, no fortress damage. User error
(squib/misplace/gap) doesn't destroy expensive builds.
Stress units NOT supported for trains: verified by inspecting Rails
and Create bytecode, nothing consumes SU for train movement. Liquid
fuel is the supported mechanism.
Verified live: server boots clean, port 25565 binds, KubeJS loads
0 errors, Minecraft auto-enables the bns-fuel datapack, Rails
initializes the LiquidFuelManager reload listener.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -4,33 +4,33 @@
|
|||||||
#.
|
#.
|
||||||
#.
|
#.
|
||||||
#If true, cannons cannot fail whatsoever. Equivalent to setting all the chances below to zero.
|
#If true, cannons cannot fail whatsoever. Equivalent to setting all the chances below to zero.
|
||||||
disableAllCannonFailure = true
|
disableAllCannonFailure = false
|
||||||
#.
|
#.
|
||||||
#Chance that a fired projectile will get stuck in a barrel after exceeding the squib ratio. 0 is 0%, 1 is 100%.
|
#Chance that a fired projectile will get stuck in a barrel after exceeding the squib ratio. 0 is 0%, 1 is 100%.
|
||||||
# Default: 0.25
|
# Default: 0.25
|
||||||
# Range: 0.0 ~ 1.0
|
# Range: 0.0 ~ 1.0
|
||||||
squibChance = 0.25
|
squibChance = 0.0
|
||||||
#.
|
#.
|
||||||
#Chance that a cannon will fail if a Powder Charge is ignited in a "barrel"-type cannon block. 0 is 0%, 1 is 100%.
|
#Chance that a cannon will fail if a Powder Charge is ignited in a "barrel"-type cannon block. 0 is 0%, 1 is 100%.
|
||||||
#This chance can be affected by stronger and weaker charge blocks.
|
#This chance can be affected by stronger and weaker charge blocks.
|
||||||
# Default: 0.20000000298023224
|
# Default: 0.20000000298023224
|
||||||
# Range: 0.0 ~ 1.0
|
# Range: 0.0 ~ 1.0
|
||||||
barrelChargeBurstChance = 0.20000000298023224
|
barrelChargeBurstChance = 0.0
|
||||||
#.
|
#.
|
||||||
#How strong the explosion of a catastrophic failure is. Scaled by the amount of charges used in the shot.
|
#How strong the explosion of a catastrophic failure is. Scaled by the amount of charges used in the shot.
|
||||||
# Default: 2.0
|
# Default: 2.0
|
||||||
# Range: 0.0 ~ 3.4028234663852886E38
|
# Range: 0.0 ~ 3.4028234663852886E38
|
||||||
failureExplosionPower = 2.0
|
failureExplosionPower = 0.0
|
||||||
#.
|
#.
|
||||||
#Chance that a cannon loaded with more Powder Charges that it can handle will fail. 0 is 0%, 1 is 100%.
|
#Chance that a cannon loaded with more Powder Charges that it can handle will fail. 0 is 0%, 1 is 100%.
|
||||||
# Default: 0.5
|
# Default: 0.5
|
||||||
# Range: 0.0 ~ 1.0
|
# Range: 0.0 ~ 1.0
|
||||||
overloadBurstChance = 0.5
|
overloadBurstChance = 1.0
|
||||||
#.
|
#.
|
||||||
#Chance that a load with gaps between the loaded Powder Charges will not completely combust. 0 is 0%, 1 is 100%.
|
#Chance that a load with gaps between the loaded Powder Charges will not completely combust. 0 is 0%, 1 is 100%.
|
||||||
# Default: 0.33000001311302185
|
# Default: 0.33000001311302185
|
||||||
# Range: 0.0 ~ 1.0
|
# Range: 0.0 ~ 1.0
|
||||||
interruptedIgnitionChance = 0.33000001311302185
|
interruptedIgnitionChance = 0.0
|
||||||
|
|
||||||
#.
|
#.
|
||||||
#These values affect the characteristics of cannon munitions.
|
#These values affect the characteristics of cannon munitions.
|
||||||
|
|||||||
@@ -0,0 +1,67 @@
|
|||||||
|
#.
|
||||||
|
#Miscellaneous settings
|
||||||
|
[misc]
|
||||||
|
#.
|
||||||
|
#Coupler will require points to be on the same or adjacent track edge, this will prevent the coupler from working if there is any form of junction in between the two points.
|
||||||
|
strictCoupler = false
|
||||||
|
#.
|
||||||
|
#Allow controlling Brass Switches remotely when approaching them on a train
|
||||||
|
flipDistantSwitches = true
|
||||||
|
#.
|
||||||
|
#Max distance between targeted track and placed switch stand
|
||||||
|
# Default: 64
|
||||||
|
# Range: 16 ~ 128
|
||||||
|
switchPlacementRange = 64
|
||||||
|
#.
|
||||||
|
#Allow creepers and ghast fireballs to damage tracks
|
||||||
|
creeperTrackDamage = false
|
||||||
|
#.
|
||||||
|
#Multiplier used for calculating exhaustion from speed when a handcar is used.
|
||||||
|
# Default: 0.009999999776482582
|
||||||
|
# Range: 0.0 ~ 1.0
|
||||||
|
handcarHungerMultiplier = 0.009999999776482582
|
||||||
|
|
||||||
|
#.
|
||||||
|
#Semaphore settings
|
||||||
|
[semaphores]
|
||||||
|
#.
|
||||||
|
#.
|
||||||
|
#Simplified semaphore placement (no upside-down placement)
|
||||||
|
simplifiedPlacement = true
|
||||||
|
#.
|
||||||
|
#Whether semaphore color order is reversed when the semaphores are oriented upside-down
|
||||||
|
flipYellowOrder = false
|
||||||
|
|
||||||
|
#.
|
||||||
|
#Conductor settings
|
||||||
|
[conductors]
|
||||||
|
#.
|
||||||
|
#.
|
||||||
|
#Conductor whistle is limited to the owner of a train
|
||||||
|
mustOwnBoundTrain = false
|
||||||
|
#.
|
||||||
|
#Maximum length of conductor vents
|
||||||
|
# Default: 64
|
||||||
|
# Range: > 1
|
||||||
|
maxConductorVentLength = 64
|
||||||
|
#.
|
||||||
|
#How often a conductor whistle updates the train of the bound conductor
|
||||||
|
# Default: 10
|
||||||
|
# Range: 1 ~ 600
|
||||||
|
whistleRebindRate = 10
|
||||||
|
#.
|
||||||
|
#Maximum distance (in blocks) at which a conductor can be activated by looking at them
|
||||||
|
# Default: 16
|
||||||
|
# Range: 1 ~ 64
|
||||||
|
activationDistance = 16
|
||||||
|
|
||||||
|
#.
|
||||||
|
#Realism Settings
|
||||||
|
[realism]
|
||||||
|
#.
|
||||||
|
#.
|
||||||
|
#Make trains require fuel to run (either from fuel tanks or solid fuels in chests/barrels)
|
||||||
|
realisticTrains = true
|
||||||
|
#.
|
||||||
|
#Make fuel tanks only accept proper liquid fuels (so water etc can't go into them)
|
||||||
|
realisticFuelTanks = true
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"fluids": ["tfmg:crude_oil"],
|
||||||
|
"fuel_ticks": 8000
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"fluids": ["tfmg:diesel"],
|
||||||
|
"fuel_ticks": 48000
|
||||||
|
}
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"fluids": ["tfmg:furnace_gas"],
|
||||||
|
"fuel_ticks": 12000
|
||||||
|
}
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"fluids": ["tfmg:gasoline"],
|
||||||
|
"fuel_ticks": 36000
|
||||||
|
}
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"fluids": ["tfmg:kerosene"],
|
||||||
|
"fuel_ticks": 24000
|
||||||
|
}
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"fluids": ["tfmg:naphtha"],
|
||||||
|
"fuel_ticks": 24000
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"pack": {
|
||||||
|
"pack_format": 48,
|
||||||
|
"description": "Brass and Sigil — Steam'n'Rails liquid fuel definitions"
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
-2
@@ -1,13 +1,13 @@
|
|||||||
{
|
{
|
||||||
"$schema": "Brass-and-Sigil pack.lock.json - generated, do not edit by hand unless you know what you are doing",
|
"$schema": "Brass-and-Sigil pack.lock.json - generated, do not edit by hand unless you know what you are doing",
|
||||||
"name": "Brass and Sigil",
|
"name": "Brass and Sigil",
|
||||||
"version": "0.28.0",
|
"version": "0.29.0",
|
||||||
"minecraft": "1.21.1",
|
"minecraft": "1.21.1",
|
||||||
"loader": {
|
"loader": {
|
||||||
"type": "neoforge",
|
"type": "neoforge",
|
||||||
"version": "21.1.228"
|
"version": "21.1.228"
|
||||||
},
|
},
|
||||||
"lockedAt": "2026-05-28T19:27:42Z",
|
"lockedAt": "2026-05-28T20:40:32Z",
|
||||||
"mods": [
|
"mods": [
|
||||||
{
|
{
|
||||||
"source": "modrinth",
|
"source": "modrinth",
|
||||||
|
|||||||
Reference in New Issue
Block a user