Compare commits

...

11 Commits

Author SHA1 Message Date
Matt 34d180404a pack: v0.30.1 — fix lithostitched client-side bug
Client launcher reported on startup:
  Mod improved_village_placement requires lithostitched 1.4 or above
  Currently, lithostitched is not installed

Cause: lithostitched was flagged side=server in pack.lock and the
live manifest, so the client launcher skipped it during sync. But
Improved Village Placement (added in v0.29.1) declares lithostitched
as a runtime dependency and IVP itself is side=both, so the client
loaded IVP and then failed the dep check.

Lithostitched is a worldgen library — many mods that use it need it
on both sides (client renders modded structures using its hooks).
Flipping to side=both is the safer default for any library mod.

The other server-side flagged entries (Yung's Better X, noisium,
async-locator, servercore) are genuinely server-only and stay as-is.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 20:07:40 +00:00
Matt feb95e2e7e Merge pull request 'pack: v0.30.0 — Combat batch (Better Combat + Combat Roll + Alex's Mobs)' (#52) from feature/v0.30.0-combat-batch into main 2026-05-29 19:49:39 +00:00
Matt d6c6da446c pack: v0.30.0 — Combat batch (Better Combat + Combat Roll + Alex's Mobs)
Adds the v0.30.0 combat-feel batch:

  - Better Combat 2.3.2 -- directional attacks, multi-hit swings,
    weapon-type animations. Data-driven attack profiles so Create,
    CBC, Ars weapons all get appropriate swings automatically. No
    new weapons or recipes -- pure mechanics overhaul. First-person
    view fully supported as of 2.0.4.

  - Combat Roll 2.0.6 -- dodge roll on double-tap with brief invuln
    + roll-related attributes/enchants. Same author and shares deps
    with Better Combat, explicitly designed to work alongside.

  - Alex's Mobs port 1.22.17 -- wide nature-themed mob variety
    (~70+ creatures). Original mod stops at 1.20.1; this is the
    community port for 1.21.1, 187k downloads, recently updated.

Deps added with the batch (all new to pack):
  - Cloth Config 15.0.140 (BC + Combat Roll)
  - playerAnimator 2.0.4 (BC + Combat Roll)
  - Citadel port 2.7.6 (Alex's Mobs)

Verified live: 0.30.0 synced, all 6 jars discovered, BC registered
3007-byte weapon attribute table, Combat Roll loaded, Alex's Mobs
adding datapack listeners. KubeJS 0 errors, port 25565 binds.

The v0.31.0 batch (Twilight Forest + Aether) is parked for later --
holding until plot/economy work is running so players have reason
to leave spawn for those dimensions.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 19:49:38 +00:00
Matt 6bc44ffd2e Merge pull request 'pack: v0.29.1 — Improved Village Placement' (#51) from feature/v0.29.1-improved-village-placement into main 2026-05-29 18:09:16 +00:00
Matt b5ebe26649 pack: v0.29.1 — Improved Village Placement
Adds Improved Village Placement 1.1.1 (Modrinth). Forces villages
to spawn on flat terrain instead of clipping into hillsides /
floating mid-air on slopes. Tiny mod (34KB). Required dep
Lithostitched is already in the pack at 1.7.2.

Verified live: mod loaded, server boots clean, port 25565 binds.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 18:09:15 +00:00
Matt 4f13fd1408 Merge pull request 'fuel: tier lava equivalent to crude oil (8000 ticks)' (#50) from fuel/lava-tier-crude into main 2026-05-28 20:46:36 +00:00
Matt 77d1cef1d0 fuel: tier lava equivalent to crude oil (8000 ticks/bucket)
Without this entry, lava buckets get the vanilla bucket-burn fallback
of 20000 ticks each — which made lava more powerful than refined
TFMG kerosene/naphtha despite being free and trivially obtainable.

Setting lava to 8000 ticks matches crude_oil exactly: both are the
raw entry-tier fuels you can scoop without any infrastructure, and
the player has to commit to a refining setup to unlock the higher
tiers.

Solid fuels (coal, charcoal, blaze rods, etc.) continue to work via
realisticTrains' chest/barrel pathway -- no datapack entry needed.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 20:46:35 +00:00
Matt 19705118d3 Merge pull request 'cbc: restore mod-default failure chances' (#49) from config/cbc-restore-defaults into main 2026-05-28 20:44:07 +00:00
Matt cfc1a21d25 cbc: restore mod-default failure chances
Revert the custom tier-strict + user-error-forgiveness tuning shipped
in v0.29.0 and use the mod's shipped defaults instead:

  squibChance              0.0  -> 0.25
  barrelChargeBurstChance  0.0  -> 0.2
  interruptedIgnitionChance 0.0 -> 0.33
  overloadBurstChance      1.0  -> 0.5
  failureExplosionPower    0.0  -> 2.0

disableAllCannonFailure stays false. Tier balance is still preserved
(material maxSafePropellantStress is what gates overload). The
difference is failures are now probabilistic per the mod author's
intended balance, and the explosion has its default power.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 20:43:54 +00:00
Matt 4cbc8c42af Merge pull request 'pack: v0.29.0 — train fuel + CBC tier-preserving safety' (#48) from feature/v0.29.0-train-fuel-and-cbc-tier into main 2026-05-28 20:42:38 +00:00
Matt e84de6c190 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>
2026-05-28 20:42:38 +00:00
11 changed files with 182 additions and 4 deletions
@@ -4,7 +4,7 @@
#.
#.
#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%.
# Default: 0.25
@@ -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
@@ -0,0 +1,4 @@
{
"fluids": ["minecraft:lava"],
"fuel_ticks": 8000
}
@@ -0,0 +1,4 @@
{
"fluids": ["tfmg:crude_oil"],
"fuel_ticks": 8000
}
@@ -0,0 +1,4 @@
{
"fluids": ["tfmg:diesel"],
"fuel_ticks": 48000
}
@@ -0,0 +1,4 @@
{
"fluids": ["tfmg:furnace_gas"],
"fuel_ticks": 12000
}
@@ -0,0 +1,4 @@
{
"fluids": ["tfmg:gasoline"],
"fuel_ticks": 36000
}
@@ -0,0 +1,4 @@
{
"fluids": ["tfmg:kerosene"],
"fuel_ticks": 24000
}
@@ -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"
}
}
+80 -3
View File
@@ -1,13 +1,13 @@
{
"$schema": "Brass-and-Sigil pack.lock.json - generated, do not edit by hand unless you know what you are doing",
"name": "Brass and Sigil",
"version": "0.28.0",
"version": "0.30.1",
"minecraft": "1.21.1",
"loader": {
"type": "neoforge",
"version": "21.1.228"
},
"lockedAt": "2026-05-28T19:27:42Z",
"lockedAt": "2026-05-30T20:06:36Z",
"mods": [
{
"source": "modrinth",
@@ -557,7 +557,7 @@
"url": "https://cdn.modrinth.com/data/XaDC71GB/versions/IONexlgI/lithostitched-1.7.2-neoforge-21.1.jar",
"sha1": "ce35206214647131ebdf14212d1986349aeba79a",
"size": 810015,
"side": "server"
"side": "both"
},
{
"source": "modrinth",
@@ -998,6 +998,83 @@
"sha1": "3a93862421d0a8cdae1e3a3d7f0d4bd01e049007",
"size": 14702,
"side": "both"
},
{
"source": "modrinth",
"slug": "improved-village-placement",
"versionId": "A9qu7ToP",
"version": "1.1.1",
"path": "mods/improved-village-placement-1.1.1.jar",
"url": "https://cdn.modrinth.com/data/KA0MllEw/versions/A9qu7ToP/improved-village-placement-1.1.1.jar",
"sha1": "15740b951061eea637a36a967d64085f9375a932",
"size": 34172,
"side": "both"
},
{
"source": "modrinth",
"slug": "cloth-config",
"versionId": "izKINKFg",
"version": "15.0.140+neoforge",
"path": "mods/cloth-config-15.0.140-neoforge.jar",
"url": "https://cdn.modrinth.com/data/9s6osm5g/versions/izKINKFg/cloth-config-15.0.140-neoforge.jar",
"sha1": "c3e5733ba4503b102589a026000fd5ce0212f6f2",
"size": 1163890,
"side": "both"
},
{
"source": "modrinth",
"slug": "playeranimator",
"versionId": "HJZB6bmA",
"version": "2.0.4+1.21.1-forge",
"path": "mods/player-animation-lib-forge-2.0.4+1.21.1.jar",
"url": "https://cdn.modrinth.com/data/gedNE4y2/versions/HJZB6bmA/player-animation-lib-forge-2.0.4%2B1.21.1.jar",
"sha1": "05be8ddcc78532b9a5520c718edc6c971cd0057c",
"size": 203149,
"side": "both"
},
{
"source": "modrinth",
"slug": "citadel-(1.21.1-port)",
"versionId": "mIylVpkN",
"version": "2.7.6",
"path": "mods/citadel-1.21.1-2.7.6.jar",
"url": "https://cdn.modrinth.com/data/XjY0RcQj/versions/mIylVpkN/citadel-1.21.1-2.7.6.jar",
"sha1": "e0392370117ec16a721f8d65728944398de77607",
"size": 3028943,
"side": "both"
},
{
"source": "modrinth",
"slug": "better-combat",
"versionId": "2NyTus6V",
"version": "2.3.2+1.21.1-neoforge",
"path": "mods/bettercombat-neoforge-2.3.2+1.21.1.jar",
"url": "https://cdn.modrinth.com/data/5sy6g3kz/versions/2NyTus6V/bettercombat-neoforge-2.3.2%2B1.21.1.jar",
"sha1": "f752fbbf81027948ef4ab0fc0066260ccf574179",
"size": 1041845,
"side": "both"
},
{
"source": "modrinth",
"slug": "combat-roll",
"versionId": "FT7t1n1a",
"version": "2.0.6+1.21.1-neoforge",
"path": "mods/combat_roll-neoforge-2.0.6+1.21.1.jar",
"url": "https://cdn.modrinth.com/data/wGKYL7st/versions/FT7t1n1a/combat_roll-neoforge-2.0.6%2B1.21.1.jar",
"sha1": "8b9676996e2b49520ac29d92e6068089c5f40baa",
"size": 193381,
"side": "both"
},
{
"source": "modrinth",
"slug": "alexs-mobs(1.21.1)",
"versionId": "KSgki4uc",
"version": "1.22.17",
"path": "mods/alexsmobs-1.22.17.jar",
"url": "https://cdn.modrinth.com/data/EmNhnNnt/versions/KSgki4uc/alexsmobs-1.22.17.jar",
"sha1": "5070e8070f60650d773bfd9f1d031496f8f50259",
"size": 26620546,
"side": "both"
}
],
"defaultServer": {