0.2.0: feature-complete UI — 5 FTB-Library screens + HUD overlay
Build / build (push) Has been cancelled

All five screens implemented with FTB Library widgets (Panel/Widget/
SimpleTextButton). Layout matches FTB Quests/Chunks for visual
consistency with the rest of the pack.

Screens:
- TierUpgradeScreen   — 13-row ladder, current tier highlighted,
                        Upgrade button to next tier with cost/affordability check
- ShopBrowserScreen   — 9-cell item grid + detail pane, quick-sell
                        buttons (1/16/64) with live DR-aware price preview
- BountyBoardScreen   — daily pool + active set, accept/cancel/turn-in
                        per state, slot-cap indicator
- PlotPurchaseScreen  — plot list + detail pane, buy/release with
                        ownership colour-coding and tier-gated buy
- QuestLogScreen      — at-a-glance tier+balance summary, active
                        bounties with progress bars, owned plots

HUD overlay: top-left tier name + spurs balance, registered as a
NeoForge GUI layer above the experience bar. 1Hz server push keeps
the balance current without polling client-side inventory.

Network: replaces single smoke-test packet with 7-packet contract:
- C2S: RequestEconomySnapshot, RunBnsCommand (whitelisted)
- S2C: TierStateUpdate, SellSnapshot, BountySnapshot, PlotSnapshot, Toast

Server-side bridge (ServerEconomyBridge) reads player NBT and
Numismatics-by-item-id-string for balance, routes write verbs
through the existing KubeJS /bns chat commands so KubeJS remains the
source of truth for economy logic.

Key bindings (rebindable in vanilla controls menu):
- K  Civic tier ladder
- J  Bounty board
- N  Plot office
- H  Bazaar shop
- M  Quest log

FTB Library + Architectury maven repos wired in build.gradle as
compileOnly; the jar stays small since FTB Library is already in pack.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Matt
2026-06-07 02:33:53 +00:00
parent 9892b0e737
commit afe7d38827
30 changed files with 1888 additions and 241 deletions
+13 -11
View File
@@ -19,17 +19,16 @@ sourceSets.main.resources {
}
repositories {
// FTB Library / FTB Chunks / FTB Quests live here. Used compileOnly
// when we wire screens to the FTB UI framework (M1+).
maven {
name = 'FTB'
url = 'https://maven.ftb.dev/releases'
content { includeGroup 'dev.ftb.mods' }
}
// Numismatics + Create dependencies live on Modrinth's maven mirror.
// Architectury (transitive of FTB Library)
maven {
name = 'ModrinthMaven'
url = 'https://api.modrinth.com/maven'
name = 'Architectury'
url = 'https://maven.architectury.dev/'
content { includeGroup 'dev.architectury' }
}
}
@@ -82,12 +81,15 @@ configurations {
}
dependencies {
// TODO(matt M1): wire FTB Library compileOnly dep when first FTB-UI screen lands.
// Candidate coord (verify version pinning against pack):
// compileOnly "dev.ftb.mods:ftb-library-neoforge:2101.1.31"
//
// TODO(matt M2): Numismatics compileOnly dep for the shop block integration.
// Modrinth maven path: maven.modrinth/numismatics/<version>
// 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).
compileOnly "dev.ftb.mods:ftb-library-neoforge:2101.1.31"
// 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.
}
var generateModMetadata = tasks.register("generateModMetadata", ProcessResources) {