665c1a844282294de6b3e04c6539fe1ae6bd1f7d
Build / build (push) Has been cancelled
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>
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 |
Description
Brass and Sigil companion mod — economy UI, FTB Chunks plot integration, tier upgrade screens.
Languages
Java
100%