Commit Graph

171 Commits

Author SHA1 Message Date
Matt 0a6fd851c1 Merge pull request 'pack: v0.30.2 — disable Alex's Mobs Transmutation Table + Shattered Carver' (#54) from fix/v0.30.2-disable-alexsmobs-bypass into main 2026-05-30 20:49:20 +00:00
Matt c635de501a pack: v0.30.2 — disable Alex's Mobs Transmutation Table + Shattered Carver
KubeJS server script that:

  1. Removes the crafting recipe for alexsmobs:transmutation_table.
     The Transmutation Table converts items freely with XP cost,
     which competes with Ars Nouveau's depth and undermines the
     Numismatics-based plot economy. No new tables can be made;
     no existing tables exist on the world yet.

  2. Cancels the right-click action on
     alexsmobs:shattered_dimensional_carver. The item teleports the
     user 1,000,000 blocks in a random direction -- breaks any
     server-side world-boundary assumption, drops the player into
     unloaded chunks far from the rest of the world. The item can
     still be produced (the Capsid-shatters-Carver interaction is
     a block reaction, not a recipe we can remove cleanly), but it
     does nothing on use and sends an explanation to the player.

The Void Worm boss + regular Dimensional Carver (return-home
teleport) stay enabled. Players can still fight the boss and earn
the home-recall item, just not the world-bounding-breaking variant.

Verified live: KubeJS loaded script in 3ms, removed recipe at
recipe-event time, server bound to 25565.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 20:49:19 +00:00
Matt 52eca18f0d Merge pull request 'pack: v0.30.1 — fix lithostitched client-side bug' (#53) from fix/v0.30.1-lithostitched-clientside into main 2026-05-30 20:07:41 +00:00
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
Matt 92306823cb Merge pull request 'cbc: disable cannon self-failure (RNG self-destruct)' (#47) from config/cbc-disable-self-failure into main 2026-05-28 19:39:44 +00:00
Matt c723a42628 cbc: disable all cannon self-failure
Cannons are expensive to build; users were losing them to RNG
self-destruction (squib, barrel charge burst, overload, interrupted
ignition, catastrophic failure). Per-cannon failure is configurable
via a single master switch in createbigcannons-server.toml:

  [failure]
  disableAllCannonFailure = true

This zeroes out all six failure paths in one go. Applied to the live
server and tracked here under defaultconfigs/ so future server resets
preserve it.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 19:39:44 +00:00
Matt 83abbc90d3 Merge pull request 'pack: v0.28.0 - Steam n Rails + Copycats+/Aero weight' (#46) from feature/v0.28.0-rails-and-aero-bridge into main 2026-05-28 19:30:04 +00:00
Matt 5a24801f48 pack: v0.28.0 — Steam 'n' Rails (port) + Copycats+/Aero weight bridge
Adds two mods on top of v0.27.0:

  - Create: Steam 'n' Rails 0.2.0+neoforge-mc1.21.1 (stable). The
    official Steam 'n' Rails team skipped 1.21.1, so this is the
    "Porters of Railways" community port — actively maintained,
    310k downloads on the beta line and 0.2.0 just hit stable.
    Brings train QoL: track tools, semaphores, conductor cap,
    smokestacks, narrow-gauge tracks, etc.

  - Copycats+ aeronautics weight 1.1.1. Small interop mod so
    copycat blocks contribute weight to Create: Aeronautics
    contraptions instead of being treated as massless. ~15KB.

All deps satisfied by mods already in the pack (Create, Copycats+,
Sable, Create: Aeronautics).

Tested live: server boots, port 25565 binds, KubeJS loads 0/0 errors,
aerocopycats logs HELLO FROM COMMON SETUP, Railways registers
55+53+238 entries across its three creative tabs. No new crashes.

Known noise: Steam 'n' Rails ships optional loot tables for tracks
of wood types from many other mods (TwilightForest, BYG, TFC, Blue
Skies, Hex Casting, BoP, etc.). Mods absent from this pack produce
~276 'Unknown registry key' ERROR lines once at boot. Harmless —
loot tables for items that don't exist just fail to parse and get
skipped. Standard behavior for Rails on lean packs.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 19:29:43 +00:00
Matt 5e816e1a7a Merge pull request 'kubejs: use kubejs-create builder API for flax press recipe' (#45) from refactor/supplementaries-bridges-kubejs-create-api into main 2026-05-28 19:08:42 +00:00
Matt d2cc179ebd kubejs: use kubejs-create builder API for flax press recipe
Now that v0.27.0 ships kubejs_create, the high-level
event.recipes.create.pressing(out, in) builder works, replacing the
raw event.custom({type: 'create:pressing', ...}) JSON shim we needed
before.

Verified live on the server -- recipe loads cleanly:
[bns/supplementaries_bridges] added flax -> string press recipe

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 18:55:43 +00:00
Matt 847ca460ff Merge pull request 'pack: v0.27.0 - Create QoL + aesthetic batch (KubeJS Create + Encased + Bells & Whistles)' (#44) from feature/v0.27.0-create-batch into main 2026-05-28 18:51:06 +00:00
Matt 96d4608e4c pack: v0.27.0 — Create QoL + aesthetic batch
Three small Create addons, no overlap with current 18-mod Create stack:

  + kubejs-create v2101.3.1-build.18
      Recipe builders for KubeJS scripts. Will replace the raw
      Create:pressing JSON in supplementaries_bridges.js with a
      cleaner event.recipes.create.* call.

  + create-encased v1.8.1-ht1
      Encased/cased variants of Create kinetic blocks (shafts,
      gearboxes, cogwheels in compact casings) for cleaner builds.

  + bellsandwhistles v0.4.7-1.21.1
      Train whistles, bells, signal lights, station decoration.

All three already deployed live; pack-version.json bumped, MC
server restarted to sync. No mod-load errors.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 13:55:55 +00:00
Matt 61321e5fcd Merge pull request 'ops: cap ZFS ARC at 2GB on glados' (#43) from ops/zfs-arc-cap into main 2026-05-28 13:52:59 +00:00
Matt a8ff660114 Merge pull request 'backup-scheduler: dont replay missed daily slots on startup' (#42) from fix/backup-scheduler-no-replay into main 2026-05-28 13:52:58 +00:00
Matt ab63908d04 Merge pull request 'v0.24.0 -> v0.26.0: content + storage batch' (#41) from feature/v0.26.0-content-and-storage-batch into main 2026-05-28 13:52:56 +00:00
Matt fd211aae51 ops: cap ZFS ARC at 2GB on glados
The cold ZFS pool is a backup tier only — hot data (MC world, Gitea,
Directus DB, containers) lives on NVMe LVM, not ZFS. So ARC's default of
50% RAM was wasted: nothing it could cache was hot enough to matter, and
the ~16GB cache crowded MC out of RAM, pushing 2.4GB into swap.

This file lives in the repo for reproducibility; it gets dropped into
/etc/modprobe.d/ on the host and applied immediately via
/sys/module/zfs/parameters/zfs_arc_{max,min}.

Effect on glados:
  before:  used=27/31GB, free=748MB, ARC=15.6GB
  after:   used=~10GB, free=~14GB, ARC=1.0GB (1-2GB range)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 23:05:52 +00:00
Matt f81bb29fda backup-scheduler: don't replay missed daily slots on startup
The wake loop's daily-times branch was firing one missed slot per minute
on service restart. With a schedule like "00:00,04:00,08:00,12:00,16:00,
20:00" and a restart at 19:00, the wrapper would catch up by firing 5
backups at 1-minute intervals -- each a full-world zip of the same
in-memory world. Pure waste: the live world hasn't diverged across the
missed clock slots, the snapshots would be near-identical, and the rapid
save-off/save-on churn impacts player experience.

Source comment already documented the intended behaviour ("Doesn't catch
up if the server was off when a slot passed -- daily/interval backups
don't need replay logic.") but the code didn't implement it.

Fix: in Start(), pre-populate _firedToday with all times <= now so the
wake loop only fires future slots for the rest of today.

Tested live on glados: switched schedule to clock-aligned daily-times
after deploying the fix, zero catch-up backups fired in the 90s window
after restart (vs 5+ before the fix).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 19:31:32 +00:00
Matt 9f0c9e262a pack: content + storage batch v0.24.0 -> v0.26.0
Mods added (in lockfile):
  v0.24.0  YUNG's structure mods (9):
           - Better Dungeons, Better Mineshafts, Better Ocean
             Monuments, Better Nether Fortresses, Better End Island,
             Better Witch Huts, Better Desert Temples, Better Jungle
             Temples, Bridges, Extras
  v0.24.1  Create: Radars (Aeronautics-compatible from v0.4.5.1+)
  v0.24.2  Ars Creo + Create Ars Compact (the latter removed in 0.25.0)
  v0.24.3  FallingTree (whole-tree chop on axe hit)
  v0.24.4  Copycats+, Create: Connected, Create: Interiors
  v0.24.5  Create: Power Loader (Aeronautics-airship chunkloading)
  v0.24.6  -- KubeJS bridges only (see below)
  v0.24.7  -- Patchouli welcome book attempt 1 (kubejs/data) -- failed
  v0.24.8  -- Patchouli attempt 2 (assets/data split) -- failed
  v0.24.9  -- Patchouli attempt 3 (patchouli_books/ root path) -- worked
  v0.25.0  REMOVED Create Ars Compact (broken sauce:source_fluid recipes,
           no public tracker, half-finished compat layer);
           added Create: Dragons Plus, Create: Enchantment Industry
  v0.26.0  Sophisticated Core/Storage/Backpacks/Create-Integration,
           Create: Additional Logistics

KubeJS additions:
  - supplementaries_bridges.js: flax -> 2x string via Create Press,
    Plunderer drops 1-3 spurs via EntityEvents.drops
  - recipes_numismatics.js: renamed COIN_IDS -> COIN_RECIPE_REMOVE_IDS
    to avoid Rhino global-scope collision with numismatics_tooltips.js,
    added sprocket to the removal list (was missing)
  - welcome.js: migrated from vanilla written_book (broken Filterable
    codec in 1.21) to Patchouli book at patchouli_books/manual/

Patchouli manual:
  - 5 entries (Welcome, Waystones, Money, Plots, Rules) under one
    "Server Basics" category
  - Lives at pack/overrides/patchouli_books/ (root path) -- this is
    the modpack-author path per Patchouli docs, NOT data/+assets/
    which is for mods bundled in jars
  - Book id: patchouli:manual (default namespace in this mode)

All v0.24-v0.26 work has been live on the server and tested.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 22:42:32 +00:00
Matt 0cc8effce0 Merge pull request 'v0.23.0: Building mods batch (Tier 1 + 2 minus Chipped, + Effortless Building)' (#40) from feature/v0.23.0-building-batch into main 2026-05-23 18:26:18 +00:00
Matt 42bec33aa1 pack: building-mods batch v0.23.0 (10 mods)
Tier 1 essentials for the spawn-town aesthetic:
- Macaws Roofs 2.3.2          proper sloped roofs (no more staircase hacks)
- Macaws Paths and Pavings 1.1.1  streets + sidewalks + plot boundaries
- Macaws Bridges 3.1.2         covered walkways + market awnings
- Macaws Lights and Lamps 1.1.5  streetlights + decorative lighting
- Supplementaries 3.6.5        vanilla++ decoration (signposts!), needs Moonlight

Tier 2 (skipping Chipped per user -- discuss JEI clutter separately):
- Macaws Windows 2.4.2         window variety
- Macaws Doors 1.1.5           door variety
- Create Deco 2.1.3            Create-aesthetic decoration, fits pack vibe

Bonus:
- Effortless Building 4.1      WorldEdit-lite survival building tool
- Moonlight 3.0.14             required dep for Supplementaries

All side=both. Total added ~25 MB. 62 lockfile entries now.
Pack 0.22.6 -> 0.23.0.
Pre-flight Check-Deps clean: all 87 mod IDs (incl jar-in-jar bundles)
satisfied.
2026-05-23 18:26:18 +00:00
Matt 0d74c9ef97 Merge pull request 'plots: actual coin values (non-uniform chain)' (#39) from fix/coin-values-actual into main 2026-05-23 18:19:37 +00:00
Matt a41ae52d9b plots: AUTHORITATIVE coin values (non-uniform), 0.22.5 -> 0.22.6
User confirmed in-game tooltip values:
  spur=1, bevel=8, sprocket=16, cog=64, crown=512, sun=4096.

Chain is non-uniform (x8, x2, x4, x8, x8). My earlier guesses
(uniform x8, assuming Sun=64 Cogs) gave consistent but wrong
intermediate values. Now sourced from the mod's own tooltip, not
triangulated.

Plot prices at 100/250/600 spurs now mean roughly:
  100 spurs = 6 bevels + 4 spurs (1 sprocket + 5 bevels + 4 spurs)
  250 spurs = 3 cogs + 3 bevels + 2 spurs
  600 spurs = 9 cogs + 3 bevels (... still small change tier)

User-side: edit PLOT_DEFS in plots.js to set real prices once the
spawn marketplace and economy scale are decided.
2026-05-23 18:19:37 +00:00
Matt 59d50c9ee6 Merge pull request 'plots: correct coin chain (6 denoms incl sprocket)' (#38) from fix/coin-values-with-sprocket into main 2026-05-23 17:59:58 +00:00
Matt b85eef04bd plots: correct Numismatics coin chain (6 denoms incl sprocket), 0.22.4 -> 0.22.5
Was: 5-denom x8 chain (spur=1, bevel=8, cog=64, crown=512, sun=4096).
Now: 6-denom x8 chain with sprocket inserted between bevel and cog.

Verified in-game (user reported Sun = 64 Cogs, which only fits these
values: spur=1, bevel=8, sprocket=64, cog=512, crown=4096, sun=32768).

Plot purchase math (countCoins, takeCoins, giveCoins) was using the
old 5-denom map: cog would have been counted as 64 spurs when it's
actually 512, and sprockets weren't counted at all. Plot prices remain
at 100/250/600 spurs which are still appropriate small-change amounts;
user can edit PLOT_DEFS to raise once playtesting confirms desired
economy scale.
2026-05-23 17:59:57 +00:00
Matt 179486bd2c Merge pull request 'Simplify coin tooltips + include sprocket' (#37) from fix/coin-tooltips-simplify into main 2026-05-23 17:55:44 +00:00
Matt fad867976f tooltips: simplify coin tooltips (Numismatics already shows value), include sprocket, 0.22.3 -> 0.22.4
Three corrections per user feedback:
1. Drop the conversion-crib lines -- Numismatics' built-in tooltip
   already shows 'Value: N spurs' so our added lines were duplicate.
2. Include sprocket (numismatics:sprocket) -- the 6th denomination
   I missed when first writing the script. Full set: spur, bevel,
   sprocket, cog, crown, sun.
3. Keep only the actually-useful hint: 'Right-click a Bank Teller
   block to convert denominations' -- the one piece of info that
   isn't on the mod's own tooltip.

Decision punted (deliberately): no 8-spurs-shapeless-to-1-bevel
crafting recipes. The Bank Teller is the spawn-economy anchor;
crafting recipes would let players bypass the bank entirely. Players
who want local conversion can place their own Teller -- which is the
intended Numismatics design.
2026-05-23 17:55:44 +00:00
Matt 858fa690ba Merge pull request 'Build-Pack: tweak jars default to side=server (urgent client fix)' (#36) from fix/tweak-jars-server-only into main 2026-05-23 17:40:35 +00:00
Matt 135ecf4a5a Build-Pack: default tweak jars to side=server, 0.22.2 -> 0.22.3
URGENT client-side fix. brassandsigil_tweaks-1.0.0.jar (built from
pack/tweaks/ into pack/overrides/mods/) declares lithostitched as a
hard dependency in its mods.toml. lithostitched is tagged side=server
in the lockfile because it's worldgen-only. brassandsigil_tweaks had
no explicit side tag so Build-Pack defaulted it to side=both. Clients
downloaded the tweak jar but not the dep -> NeoForge refused to start
with 'Mod brassandsigil_tweaks requires lithostitched 1.7 or above'.

Fix: Build-Pack now injects side='server' on any local-override file
under mods/. All tweak jars are data-only (worldgen modifiers, recipe
overrides) and pure server-side. If a future tweak is actually client-
relevant, this rule will need a per-file exception.

Tested in build output -- the brassandsigil_tweaks entry now shows
side='server' in the generated manifest.
2026-05-23 17:40:34 +00:00
Matt 5813c7555e Merge pull request 'tooltips: correct event name to modifyTooltips' (#35) from fix/tooltip-event-name into main 2026-05-23 17:37:31 +00:00
Matt e1a77d2e19 tooltips: ItemEvents.tooltip -> ItemEvents.modifyTooltips, 0.22.1 -> 0.22.2
KubeJS 2101.x has ModifyItemTooltipsKubeEvent (the modify-tooltips API);
the older 'tooltip' event name doesn't exist in this version.
2026-05-23 17:37:30 +00:00
Matt 31f7d5428c Merge pull request 'Numismatics: conversion-crib coin tooltips' (#34) from feature/numismatics-tooltips into main 2026-05-23 17:36:03 +00:00
Matt f19e7b187e numismatics: add conversion-crib tooltip to each coin, 0.22.0 -> 0.22.1
Numismatics' x8 uniform chain isn't intuitive. Mod values are
hardcoded so we cant fix the ratios, but we can put the conversion
table directly on each coins tooltip via KubeJS ItemEvents.tooltip.
Players hover any coin -> see how it relates to the others + a hint
to use Bank Teller for on-the-fly conversion.

~25 lines, ItemEvents.tooltip hot path is cached per item-id so no
performance concern.
2026-05-23 17:36:02 +00:00
Matt f3134d23c4 Merge pull request 'Add Configured 2.6.3 (CurseForge)' (#33) from feature/add-configured into main 2026-05-23 17:30:53 +00:00
Matt f72be58c6a pack: add MrCrayfish's Configured 2.6.3 (CurseForge), bump to 0.22.0
Configured is the in-game config GUI library JEI suggests when you
press its wrench icon (and the same library a bunch of other mods use
for their config screens). CurseForge-only (not on Modrinth) so we
add as source: curseforge -- following the same pattern as the FTB
mods already in the lockfile.

Tagged side=client because Configured is purely a client-side config
UI provider; the server doesn't need it. Server-side filter will skip
it on sync.

Filename gotcha noted for future CF adds: the CF web page shows the
mod with a friendly name like 'Configured 2.6.3.jar', but the actual
file on mediafilez.forgecdn.net is named 'configured-neoforge-1.21.1
-2.6.3.jar'. Use the CDN filename in the URL, not the web display
name.
2026-05-23 17:30:52 +00:00
Matt 8e816bc067 Merge pull request 'launcher: record 0.4.10 version bump' (#32) from chore/launcher-version-0.4.10 into main 2026-05-23 17:06:30 +00:00
Matt f757c2d31c launcher: record version bump to 0.4.10
The 0.4.10 build was already deployed (replacing the broken 0.4.9 that
shipped without launcher-config.json embedded). This commit just makes
the repo match what's live so a future 'git status' isn't dirty.
2026-05-23 17:06:30 +00:00
Matt 804d085e36 Merge pull request 'rpo: add required:true to force-enable CC pack' (#31) from feature/rpo-required-true into main 2026-05-23 17:05:53 +00:00
Matt 05e700cfc7 rpo: try 'required: true' to force-enable CC ReCreated, 0.21.2 -> 0.21.3
Players with an existing options.txt (i.e. anyone who has launched MC
once) don't get the 'default_packs' applied -- RPO only treats those as
defaults for fresh installs.

Adding 'required: true' to the override entry on the assumption that
the field forces the pack to be enabled on every launch regardless of
player choice. Decompiled the jar for string constants and 'required'
appears alongside 'force_compatible' as a known key.

If the field name is wrong RPO will silently ignore it -- no harm, easy
iteration.
2026-05-23 17:05:52 +00:00
Matt a139196f77 Merge pull request 'launcher: EnableWindowsTargeting for Linux builds' (#30) from feature/cross-compile-launcher-from-linux into main 2026-05-23 16:40:24 +00:00
Matt 4315696136 launcher: add EnableWindowsTargeting for cross-compile from Linux
Microsoft.NET.Sdk.WindowsDesktop emits NETSDK1100 when a Windows-
targeting project is built from a non-Windows host. Setting
EnableWindowsTargeting=true opts in to the cross-compile path, which
works on Linux as long as the WindowsDesktop SDK files are present.

On glados they were copied from a Windows .NET 8 SDK archive into
/usr/lib/dotnet/sdk/8.0.126/Sdks/Microsoft.NET.Sdk.WindowsDesktop/
and /usr/lib/dotnet/packs/Microsoft.WindowsDesktop.App.Ref/. This is
a one-time setup per Linux host -- see the bridge-claude memory note.

No-op on Windows hosts (the flag has no effect when the SDK is native).
Both PC builds and glados builds now produce the same output.
2026-05-23 16:40:23 +00:00