pack: v0.35.0 — bnstoolkit feature-complete UI + villager rebalance #72

Merged
Matt merged 2 commits from feature/v0.35.0-bnstoolkit-ui-full into main 2026-06-07 02:42:43 +00:00
Owner

Summary

bnstoolkit jumps from M0 (empty scaffold) to feature-complete in one PR.

Screens (FTB Library widgets — match FTB Quests / FTB Chunks visual style)

  • K — Civic tier ladder: 13 rows, current tier highlighted, Upgrade button to next tier with cost + affordability check
  • J — Bounty board: today's pool + active set, Accept/Cancel/TurnIn per state, slot-cap indicator
  • N — Plot office: list + detail, Buy/Release with ownership colour-coding and tier-gated buy
  • H — Bazaar shop: 9-cell item grid, quick-sell buttons (1/16/64) with DR-aware effective price preview
  • M — Quest log: at-a-glance tier+balance summary, active bounties with progress bars, owned plots

HUD overlay

Top-left tier name + spurs balance. Registered above the experience bar via RegisterGuiLayersEvent. 1Hz server push keeps it current.

Network contract

  • C2S: RequestEconomySnapshot, RunBnsCommand (whitelisted verb routing — same /bns commands the player can type)
  • S2C: TierStateUpdate, SellSnapshot, BountySnapshot, PlotSnapshot

Villager trade rebalance (new — unblocks task #30)

Subscribes to VillagerTradesEvent + WandererTradesEvent and swaps emerald cost/result on every existing listing for Numismatics coins (1..7 emeralds -> spurs, 8..63 -> bevels, 64+ -> cogs). Works with all vanilla + modded villager professions automatically.

Why in-tree instead of a third-party mod: the obvious Modrinth option (numismatics-villager-currency) requires NeoForge 21.1.230+ (we're on 21.1.228); the alternative (data-trades) needs per-trade JSON. Reusing the event hook is simpler and avoids a runtime upgrade.

Verified live

Server restart at 02:41 UTC with bnstoolkit-0.3.1.jar:

  • Done (3.400s) on port 25565
  • [bns/trades] rebalanced trades for profession ... logged 20+ times (every vanilla profession + modded ones)
  • No ModLoadingException
  • KubeJS economy substrate (/bns me, /bns sell, /bns bounty, /bns tier, /bns plot) untouched

Test plan tomorrow

  • Log in as a normal player — HUD overlay top-left shows tier + balance
  • Press K — TierUpgradeScreen opens, you're Peasant tier 1
  • /give @s numismatics:spur 500, refresh, then click Upgrade — should go to Farmer
  • Press H — Bazaar opens, click diamond, click Sell 1
  • Press J — Bounty Board opens, accept one, kill the mobs, turn it in
  • Press N — Plot Office opens, buy a plot (need tier 3 Citizen first)
  • Press M — Quest Log shows everything at a glance
  • Find a villager — costs/results should be in spurs/bevels/cogs instead of emeralds

🤖 Generated with Claude Code

## Summary bnstoolkit jumps from M0 (empty scaffold) to feature-complete in one PR. ### Screens (FTB Library widgets — match FTB Quests / FTB Chunks visual style) - **K** — Civic tier ladder: 13 rows, current tier highlighted, Upgrade button to next tier with cost + affordability check - **J** — Bounty board: today's pool + active set, Accept/Cancel/TurnIn per state, slot-cap indicator - **N** — Plot office: list + detail, Buy/Release with ownership colour-coding and tier-gated buy - **H** — Bazaar shop: 9-cell item grid, quick-sell buttons (1/16/64) with DR-aware effective price preview - **M** — Quest log: at-a-glance tier+balance summary, active bounties with progress bars, owned plots ### HUD overlay Top-left tier name + spurs balance. Registered above the experience bar via `RegisterGuiLayersEvent`. 1Hz server push keeps it current. ### Network contract - C2S: `RequestEconomySnapshot`, `RunBnsCommand` (whitelisted verb routing — same /bns commands the player can type) - S2C: `TierStateUpdate`, `SellSnapshot`, `BountySnapshot`, `PlotSnapshot` ### Villager trade rebalance (new — unblocks task #30) Subscribes to `VillagerTradesEvent` + `WandererTradesEvent` and swaps emerald cost/result on every existing listing for Numismatics coins (1..7 emeralds -> spurs, 8..63 -> bevels, 64+ -> cogs). Works with all vanilla + modded villager professions automatically. Why in-tree instead of a third-party mod: the obvious Modrinth option (`numismatics-villager-currency`) requires NeoForge 21.1.230+ (we're on 21.1.228); the alternative (`data-trades`) needs per-trade JSON. Reusing the event hook is simpler and avoids a runtime upgrade. ## Verified live Server restart at 02:41 UTC with bnstoolkit-0.3.1.jar: - `Done (3.400s)` on port 25565 - `[bns/trades] rebalanced trades for profession ...` logged 20+ times (every vanilla profession + modded ones) - No `ModLoadingException` - KubeJS economy substrate (/bns me, /bns sell, /bns bounty, /bns tier, /bns plot) untouched ## Test plan tomorrow - [ ] Log in as a normal player — HUD overlay top-left shows tier + balance - [ ] Press K — TierUpgradeScreen opens, you're Peasant tier 1 - [ ] `/give @s numismatics:spur 500`, refresh, then click Upgrade — should go to Farmer - [ ] Press H — Bazaar opens, click diamond, click Sell 1 - [ ] Press J — Bounty Board opens, accept one, kill the mobs, turn it in - [ ] Press N — Plot Office opens, buy a plot (need tier 3 Citizen first) - [ ] Press M — Quest Log shows everything at a glance - [ ] Find a villager — costs/results should be in spurs/bevels/cogs instead of emeralds 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Matt added 2 commits 2026-06-07 02:42:35 +00:00
bnstoolkit jumps from M0 (empty scaffold) straight to feature complete:

UI screens (all FTB Library widgets, opens via keybinds):
  K  Civic tier ladder + upgrade
  J  Bounty board (accept/cancel/turn-in)
  N  Plot office (buy/release)
  H  Bazaar sell shop (1/16/64 quick-sell)
  M  Quest log (status overview)

HUD: top-left tier + spurs balance overlay, refreshed 1Hz server-side.

Villager trade rebalance (NEW): the mod now hooks VillagerTradesEvent
+ WandererTradesEvent and swaps every emerald cost/result for the
Numismatics equivalent (1..7 emeralds -> spurs, 8..63 -> bevels, 64+
-> cogs). This was the blocked Modrinth dep — the third-party mod
options either required a NeoForge bump (numismatics-villager-currency
1.1.0 wants 21.1.230+, we're on 21.1.228) or hand-written JSON for
every trade (data-trades). The in-tree wrapper is cleaner.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The previous commit deleted 0.1.1 from the gitignored mods dir but
git swallowed the add for 0.3.1 because pack/overrides/mods is
ignored. Re-adding with -f.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Matt merged commit a7f95691bb into main 2026-06-07 02:42:43 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: minecraft/brass-and-sigil#72