M0: scaffold bnstoolkit mod (NeoForge 1.21.1)
Build / build (push) Has been cancelled

Empty mod that loads cleanly on client + dedicated server. Sets up the
package layout and milestone TODOs for the BNS in-game UI work.

- uk.sijbers.bnstoolkit.{BnsToolkit, BnsToolkitClient} mod entries
- 5 placeholder screens extending a shared BaseBnsScreen
  (TierUpgrade, BountyBoard, QuestLog, PlotPurchase, ShopBrowser)
- 3 key bindings (T/B/P) registered, handlers TODO M1+
- SpurHud overlay placeholder for M4
- Network: payload registrar + one smoke-test C2S/S2C pair
  (RequestTierState / TierStateUpdate)
- en_us.json for screen + keybind labels
- neoforge.mods.toml pinned to neo_version 21.1.228 (live server match)

Build verified: ./gradlew build -> bnstoolkit-0.1.0.jar (15.6 KB).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Matt
2026-06-07 00:10:54 +00:00
commit e99b5b1e0e
27 changed files with 1174 additions and 0 deletions
+61
View File
@@ -0,0 +1,61 @@
# 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 |