0.8.0: JSON plot config + FTB Teams/Chunks integration
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>
This commit is contained in:
Matt
2026-06-08 17:52:31 +00:00
parent 4a9edc15c1
commit 665c1a8442
9 changed files with 893 additions and 22 deletions
+7 -7
View File
@@ -81,15 +81,15 @@ configurations {
}
dependencies {
// FTB Library: provides the Panel/Widget/Button framework used by every
// bnstoolkit screen. compileOnly because it's shipped in the modpack
// already — we don't want to ship a second copy in our jar. Version
// pinned to the live pack's installed version (2101.1.31).
// FTB Library: Panel/Widget/Button framework for screens.
compileOnly "dev.ftb.mods:ftb-library-neoforge:2101.1.31"
// FTB Teams: server-team creation + lookup (Spawn + Plots admin teams).
compileOnly "dev.ftb.mods:ftb-teams-neoforge:2101.1.9"
// FTB Chunks: programmatic claim/unclaim + BEFORE_UNCLAIM event (plot guard).
compileOnly "dev.ftb.mods:ftb-chunks-neoforge:2101.1.14"
// No Numismatics compileOnly dep — we read coin balances by inventory-
// scanning items via their string IDs ("numismatics:spur", etc) which
// doesn't need any of Numismatics' Java API on the classpath.
// Numismatics + KubeJS are accessed reflectively (NumismaticsBridge,
// ServerEconomyBridge) so they don't need compileOnly deps.
}
var generateModMetadata = tasks.register("generateModMetadata", ProcessResources) {