/bns plot — updated existing plot system to support multi-plot ownership based on tier slot count
/bns me, /bns help — discoverability + status
FTB Ranks ranks.snbt — 13 ranks with ftbchunks permissions
Villager trade rebalance: blocked tonight. KubeJS 2101.7.2 ships no villagerTrades event. Either rolled into the custom mod or solved via a third-party mod (deferred).
Custom mod UI: deferred to a session where user can iterate visually. The KubeJS substrate built tonight is exactly the backend the mod will sit on top of.
Verified: all scripts load with 0 errors, server boots clean.
Foundation economy stack — fully command-driven, layered later by the custom UI mod.
What ships tonight:
- **13-tier civic ladder** via FTB Ranks (Peasant to Sovereign) with per-tier chunk allowance, plot slot count, daily bounty slots, shop fee discount, chat colour
- **/bns tier upgrade** — player pays spurs, gets promoted automatically (KubeJS calls `ftbranks add`)
- **/bns sell** — Bazaar sell shop with diminishing returns + tier fee discount, 9 commodities
- **/bns bounty** — daily-rotating bounty engine, 20 bounties, kill-tracking via EntityEvents.death, 24h cooldown
- **/bns plot** — updated existing plot system to support multi-plot ownership based on tier slot count
- **/bns me, /bns help** — discoverability + status
- **FTB Ranks ranks.snbt** — 13 ranks with ftbchunks permissions
Villager trade rebalance: blocked tonight. KubeJS 2101.7.2 ships no villagerTrades event. Either rolled into the custom mod or solved via a third-party mod (deferred).
Custom mod UI: deferred to a session where user can iterate visually. The KubeJS substrate built tonight is exactly the backend the mod will sit on top of.
Verified: all scripts load with 0 errors, server boots clean.
KubeJS module that owns the 13-tier civic ladder per economy doc §4a.
Authoritative source for TIER_CONFIG (per-tier perks: cost, wilderness
chunks, plot slots, daily bounty slots, shop fee discount, chat
colour, join broadcast).
Player tier stored as int in player.persistentData.bnsTier; default
1 (Peasant), set on first login.
Admin commands (op level 2):
/bns admin tier get <player>
/bns admin tier set <player> <1-13>
/bns admin tier list
Module-local pattern (KubeJS Rhino runs scripts in strict mode -- no
globalThis, no bare-assignment globals). Other economy scripts will
duplicate TIER_CONFIG and use player.persistentData.bnsTier directly
to read tier rather than trying to import. See feedback-kubejs-rhino-
gotchas memory.
FTB Ranks will mirror this once the bnstoolkit mod ships -- ranks
will carry the FTB Chunks permission nodes. For now the NBT is the
single source of truth and admin promotes manually with /bns admin
tier set.
Verified: server boots clean, KubeJS loads with 0 errors. First-join
hook initialises new players to tier 1.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Foundation economy stack — fully command-driven, ready for the custom
UI mod to layer on top later. Built tonight as a single feature batch.
KubeJS scripts:
pack/overrides/kubejs/server_scripts/economy/
00_tier_system.js — 13-tier ladder + admin commands
02_sell_shop.js — /bns sell, 9 items, DR + tier-fee
03_bounty_engine.js — /bns bounty, 20 bounties, state machine
04_player_commands.js — /bns help, /bns me, /bns tier upgrade
plots.js: updated to support multi-plot ownership based on tier slots
- plotsOwnedBy() returns list, slot cap from TIER_PLOT_SLOTS table
- /bns plot release now requires plot id (multiple plots possible)
- /bns plot mine added
FTB Ranks server config:
pack/overrides/world/serverconfig/ftbranks/ranks.snbt
13 ranks with ftbchunks.max_claimed_chunks scaling per tier:
Peasant 9 -> Sovereign 1500 (chunks)
Peasant 1 -> Sovereign 200 (force-loaded)
Name format colour codes match the design doc.
Player command surface (everything callable from chat or Telegram bridge):
/bns help full command listing
/bns me tier, balance, plots, bounties
/bns tier upgrade pay spurs, advance to next tier
/bns plot list|info|buy|release|mine
/bns sell list|<item> [count]
/bns bounty list|active|accept|cancel|turnin|completed
/bns admin tier get|set|list (op level 2)
/bns admin info|waystone-*|reset-welcome (pre-existing)
Tier upgrade flow:
1. Player runs /bns tier upgrade
2. KubeJS takes spurs from inventory
3. KubeJS sets player.persistentData.bnsTier += 1
4. KubeJS runs `ftbranks add <player> <rank>` so FTB Ranks applies
the permission nodes (chunk allowance auto-flips)
Cross-file scope: KubeJS 2101 runs all server_scripts in shared Rhino
global scope. Constants (TIER_CONFIG, COIN_VALUES, bnsTier object,
shared functions like giveCoins/countCoins/takeCoins) are declared
once in their owning file and referenced from siblings. Don't redeclare.
Blocked tonight (deferred):
- Villager trade rebalance: KubeJS 2101.7.2 doesn't ship a
villagerTrades event. ServerEvents only exposes command/loaded/
recipes/registry/tags/tick/unloaded. Verified by grepping the
KubeJS jar's ServerEvents class. No KubeJS-villager-trade addon
on Modrinth for NeoForge 1.21.1. Either build into the custom
mod or add a third-party trade-overrides mod (research pending).
- Custom mod UI screens: no Java toolchain on host, and these
need visual iteration with the user anyway.
Verified live: server boots clean, all 4 economy scripts log loaded,
port 25565 binds, no EcmaError or EvaluatorException in KubeJS log.
FTB Ranks reload via rcon confirms "Ranks reloaded from disk!"
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Matt
merged commit 572671f1d4 into main2026-06-06 23:55:43 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Foundation economy stack — fully command-driven, layered later by the custom UI mod.
What ships tonight:
ftbranks add)Villager trade rebalance: blocked tonight. KubeJS 2101.7.2 ships no villagerTrades event. Either rolled into the custom mod or solved via a third-party mod (deferred).
Custom mod UI: deferred to a session where user can iterate visually. The KubeJS substrate built tonight is exactly the backend the mod will sit on top of.
Verified: all scripts load with 0 errors, server boots clean.
Foundation economy stack — fully command-driven, ready for the custom UI mod to layer on top later. Built tonight as a single feature batch. KubeJS scripts: pack/overrides/kubejs/server_scripts/economy/ 00_tier_system.js — 13-tier ladder + admin commands 02_sell_shop.js — /bns sell, 9 items, DR + tier-fee 03_bounty_engine.js — /bns bounty, 20 bounties, state machine 04_player_commands.js — /bns help, /bns me, /bns tier upgrade plots.js: updated to support multi-plot ownership based on tier slots - plotsOwnedBy() returns list, slot cap from TIER_PLOT_SLOTS table - /bns plot release now requires plot id (multiple plots possible) - /bns plot mine added FTB Ranks server config: pack/overrides/world/serverconfig/ftbranks/ranks.snbt 13 ranks with ftbchunks.max_claimed_chunks scaling per tier: Peasant 9 -> Sovereign 1500 (chunks) Peasant 1 -> Sovereign 200 (force-loaded) Name format colour codes match the design doc. Player command surface (everything callable from chat or Telegram bridge): /bns help full command listing /bns me tier, balance, plots, bounties /bns tier upgrade pay spurs, advance to next tier /bns plot list|info|buy|release|mine /bns sell list|<item> [count] /bns bounty list|active|accept|cancel|turnin|completed /bns admin tier get|set|list (op level 2) /bns admin info|waystone-*|reset-welcome (pre-existing) Tier upgrade flow: 1. Player runs /bns tier upgrade 2. KubeJS takes spurs from inventory 3. KubeJS sets player.persistentData.bnsTier += 1 4. KubeJS runs `ftbranks add <player> <rank>` so FTB Ranks applies the permission nodes (chunk allowance auto-flips) Cross-file scope: KubeJS 2101 runs all server_scripts in shared Rhino global scope. Constants (TIER_CONFIG, COIN_VALUES, bnsTier object, shared functions like giveCoins/countCoins/takeCoins) are declared once in their owning file and referenced from siblings. Don't redeclare. Blocked tonight (deferred): - Villager trade rebalance: KubeJS 2101.7.2 doesn't ship a villagerTrades event. ServerEvents only exposes command/loaded/ recipes/registry/tags/tick/unloaded. Verified by grepping the KubeJS jar's ServerEvents class. No KubeJS-villager-trade addon on Modrinth for NeoForge 1.21.1. Either build into the custom mod or add a third-party trade-overrides mod (research pending). - Custom mod UI screens: no Java toolchain on host, and these need visual iteration with the user anyway. Verified live: server boots clean, all 4 economy scripts log loaded, port 25565 binds, no EcmaError or EvaluatorException in KubeJS log. FTB Ranks reload via rcon confirms "Ranks reloaded from disk!" Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>