The original handoff doc described an empty M0 scaffold with placeholder screens to "discuss tomorrow". 0.3.1 actually ships the full UI plus villager trade rebalance, so the doc now is a testing guide for the working features rather than a discussion-points list. Includes the architecture diagram for how Java + KubeJS interact, the key bindings table, a step-by-step testing path, and a known-gaps list for future iteration. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
5.0 KiB
bnstoolkit feature-complete — testing notes for 2026-06-07 evening
Shipped: pack v0.35.0 / bnstoolkit 0.3.1. Repo: http://10.16.5.102:3000/minecraft/bnstoolkit Server status: ✅ live + verified at 02:41 UTC.
What's in the build
5 screens (FTB Library widgets — matches FTB Quests look)
All opened via key bindings. Rebindable in vanilla controls menu under "Brass and Sigil" category.
| Key | Screen | What it does |
|---|---|---|
| K | Civic Tier ladder | 13 rows, current tier highlighted. Right pane shows next tier's cost + perks + Upgrade button. Disabled if you can't afford it or are at Sovereign. |
| J | Bounty Board | Today's 5-bounty pool + any active set. Detail pane: target, count, reward, progress. Accept / Cancel / Turn In buttons by state. |
| N | Plot Office | Plot list with ownership state-coding (yours / taken / free). Detail pane: size, chunks, price. Buy / Release buttons. |
| H | Bazaar shop | 9-cell sell item grid. Click an item, see DR-aware effective price for current tier. Sell 1 / 16 / 64 quick buttons. |
| M | Quest Log | At-a-glance status: tier + balance + active bounties (with progress bars) + owned plots. |
HUD overlay
Top-left of the screen, always visible: <tier-colour><tier-name> on
one line, <balance> spurs on the second. Refreshes 1Hz from server
push — picks up coin pickups immediately, no inventory polling.
Auto-hides when F1 is pressed or chat is open (standard NeoForge HUD layer behavior).
Villager trade rebalance
Every emerald cost or result in vanilla + modded villager trades is now Numismatics:
- 1..7 emeralds → spurs
- 8..63 → bevels (1 bevel = 8 spurs)
- 64+ → cogs (1 cog = 64 spurs)
Works automatically on:
- All 14 vanilla villager professions
- Wandering trader (generic + rare)
- Any modded villager professions (we wrap the event's list, no enum of professions needed)
This was the "blocked on API" item. Built it into bnstoolkit instead of pulling a third-party mod, because the cleanest Modrinth option needed NeoForge 21.1.230+ and we're on 228.
Testing path
/bns me # confirm Peasant tier 1
/give @s numismatics:spur 500 # give spurs for upgrades
K # open tier ladder
# click Upgrade — should pay 200 and bump you to Farmer
/bns admin tier set <you> 5 # jump to Knight for plot testing
K # confirm new tier visible
H # open bazaar
# click diamond, click Sell 1 (you'll need a diamond in inventory)
J # open bounty board, accept one
# kill the target mobs — progress shows in chat AND the screen
# turn in via the J screen
N # open plot office, buy p001
M # quest log shows everything
# Test villager trades:
/summon villager ~ ~ ~
# Right-click the villager once it picks a profession (place a workstation)
# Trades should show spurs/bevels/cogs instead of emeralds
Architecture
KubeJS server_scripts/economy/ ← single source of truth for state + logic
↑
│ (chat commands via server.getCommands)
│
ServerEconomyBridge.java ← reads NBT, sums Numismatics coins,
routes write verbs through /bns
↑↓
4 snapshot + 2 command packets
↑↓
ClientBnsState.java ← single static state holder
↑
Screens read this each frame
Source of truth stays in KubeJS. Java is just the UI layer and a thin write-path proxy. If you want to rebalance prices or add bounties, you do it in KubeJS — Java auto-reflects.
Known gaps for future iteration
| Gap | Where to fix |
|---|---|
| No client toast notifications — feedback comes via KubeJS chat messages | Add a dist-isolated ClientToastDispatcher class (0.4.0) |
| Bazaar grid doesn't tooltip the per-unit price | One addMouseOverText per ItemCell |
| Plot office doesn't show a minimap | Render bluemap PNG snippet as background or use FTB Chunks' map widget |
| Quest log doesn't show FTB Quests progression | Hook into FTB Quests' API once first chapter ships |
| Numismatics coins as bunch — no fractional change | Bazaar pays in highest denom that fits; player converts at the Bank |
| Wanderer rare-trade rebalance is greedy (every rare item costs are converted) | Profession-aware exclusion list if anything weird sneaks through |
File map
| File | Purpose |
|---|---|
pack/overrides/mods/bnstoolkit-0.3.1.jar |
The mod itself (95 KB) |
pack/overrides/kubejs/server_scripts/economy/*.js |
State + business logic (unchanged from v0.33.0) |
pack/overrides/world/serverconfig/ftbranks/ranks.snbt |
13-tier rank config (unchanged) |
docs/bnstoolkit-architecture.md |
Original architecture spec |
Source repo: http://10.16.5.102:3000/minecraft/bnstoolkit (main = 14dc69f at time of pack ship).