# 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: `` on one line, ` 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 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).