Files
brass-and-sigil/docs/bnstoolkit-discussion-points-2026-06-07.md
T
Matt 016985a5fc docs: rewrite bnstoolkit handoff for feature-complete state
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>
2026-06-07 02:43:42 +00:00

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).