Matt 665c1a8442
Build / build (push) Has been cancelled
0.8.0: JSON plot config + FTB Teams/Chunks integration
Plot system migrated from static Java + KubeJS to a runtime
configurable, FTB-Chunks-integrated system.

* Plot definitions now live in JSON at
  <world>/serverconfig/bnstoolkit/plots.json. Default file written on
  first server start with the three v0.33 plots. Editable in-place
  + reloadable via /bns admin plot reload.

* New static Plot.REGISTRY replaces Plot.ALL. Loaded on ServerStartedEvent.
  Plot.all() returns the current snapshot.

* New FtbBridge.java — compileOnly deps on ftb-teams + ftb-chunks
  (always in the pack). Wraps team lookup, chunk claim/unclaim, and
  the BEFORE_UNCLAIM event.

* /bns admin spawn-init creates the Spawn (cyan) + Plots (gold) server
  teams using configured UUIDs/colors and claims every defined plot
  for the Plots team. Idempotent.

* /bns admin plot define <id> <name> <price> — adds the chunk you're
  standing in to the plot. Re-run with the same id (different chunks)
  to make multi-chunk plots. Auto-claims for the Plots team and
  persists to JSON.

* /bns admin plot list / remove / reload commands.

* /bns plot buy <id> — pays via NumismaticsBridge.spend (cash+bank
  combined), unclaims chunks from Plots team, claims for the buyer's
  personal FTB Teams team. Records ownership in server NBT and the
  player's bnsOwnedPlots list.

* /bns plot release <id> — reverse flow, refunds 50% to bank.

* Plot chunk guard: ClaimedChunkEvent.BEFORE_UNCLAIM subscriber rejects
  any unclaim of a registered plot chunk unless a thread-local
  SYSTEM_UNCLAIMING flag is set (only set during the release/transfer
  flows). Players who try to unclaim via the FTB Chunks UI get a chat
  message redirecting them to /bns plot release.

* KubeJS plots.js retired (.retired suffix kept). All logic now in
  Java; KubeJS no longer participates in plot ownership state.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-08 17:52:31 +00:00

bnstoolkit

Companion mod for the Brass and Sigil modpack. NeoForge 1.21.1.

Provides the in-game UI surface for the KubeJS-driven civic tier, bounty, plot, and shop systems. Pure client visuals + a thin C2S/S2C network bridge over the existing server-side state — no server-side gameplay logic lives here, just transport and presentation.

Status

M0 — scaffold only. Loads cleanly on client and dedicated server. No screens are open-able yet (key bindings register but their handlers are TODO). One network round-trip pair is wired as a smoke test.

See docs/bnstoolkit-architecture.md in the brass-and-sigil repo for the full spec.

Building

./gradlew build

The output jar lands in build/libs/bnstoolkit-<version>.jar. Drop it into the modpack's pack/overrides/mods/ directory.

Package layout

uk.sijbers.bnstoolkit
├── BnsToolkit                   # common mod entry
├── BnsToolkitClient             # client mod entry
├── client
│   ├── BnsKeyBindings           # T / B / P defaults
│   ├── hud
│   │   └── SpurHud              # spurs + tier overlay
│   └── screens
│       ├── BaseBnsScreen        # shared parent (will swap to FTB Library)
│       ├── TierUpgradeScreen
│       ├── BountyBoardScreen
│       ├── QuestLogScreen
│       ├── PlotPurchaseScreen
│       └── ShopBrowserScreen
└── network
    ├── BnsNetwork               # payload registrar
    ├── c2s
    │   └── RequestTierStatePacket
    └── s2c
        └── TierStateUpdatePacket

Milestones

Milestone Scope
M0 (now) Scaffold, keybinds, network smoke-test packet pair
M1 Tier upgrade screen + KubeJS bridge for tier/balance
M2 Quest log + shop browser screens
M3 Bounty board + plot purchase screens
M4 HUD overlay, mod settings screen, FTB Library swap
S
Description
Brass and Sigil companion mod — economy UI, FTB Chunks plot integration, tier upgrade screens.
Readme 332 KiB
Languages
Java 100%