b4cd66036b
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>