pack: v0.32.0 — FTB Quests + XMod Compat + Ranks; restrictive travel design

Mods added (Phase 0a substrate for the bnstoolkit economy work):
  - FTB Quests 2101.1.25 (progression quest UI for Phase 5+)
  - FTB XMod Compat 21.1.8 (KubeJS hooks for FTB Chunks/Quests events)
  - FTB Ranks 2101.1.3 (tier system via permission nodes)

Design revision: restrictive travel.

This is a Create Aeronautics pack — the journey is the point. Removed
all instant-teleport perks from the tier ladder. Players get one
starter Waystone and use it for spawn↔base; further travel means
building airships, trains, vehicles. Pressure on real movement is
intentional.

Removed perks: sethomes, /back after death.
Removed system: the full sethome subsystem (commands, SavedData,
cooldowns) from the bnstoolkit mod scope.

Tier table reduced from 10 columns to 8: cost, wilderness chunks,
plot slots, daily bounties, shop fee, chat colour, join broadcast.

Mod phasing collapsed from 7 phases to 6 (M2 sethome system removed,
later phases shift up).

Future perk dimensions list updated with two waystone-related
candidates (slot cap, XP cost reduction) as the natural travel-
progression hooks for later tier-perk revisions.

Verified live: all 3 mods discovered + loaded, port 25565 binds,
no FATAL/Crashed/Exception lines in startup log. Server resumed
to 0.32.0 cleanly.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Matt
2026-06-06 23:22:47 +00:00
parent 367056e2ba
commit 9eb8f540c4
3 changed files with 82 additions and 83 deletions
+22 -64
View File
@@ -27,7 +27,6 @@ side of the design.
- Mixins into FTB Chunks' map UI for spawn-plot cost overlay, hover tooltips, and click-to-purchase popups
- Custom HUD render layer for quest progress (replaces stacked vanilla bossbars)
- Data persistence for plot ownership (server-side, saved with world)
- Sethome system (`/sethome`, `/home`, `/delhome`, `/listhomes`) since the pack has no other sethome mod
- Network packets for client↔server state sync
- Admin commands: `/bnstoolkit reload`, debugging commands
- Config-driven tier perks (`tiers.json`) and plot definitions (`plots.json`)
@@ -39,6 +38,7 @@ side of the design.
- Numismatics direct integration (lives in KubeJS — mod calls KubeJS commands to debit/credit)
- FTB Quests integration (FTB Quests handles its own UI for the progression campaign)
- FTB Ranks admin (FTB Ranks handles permissions directly; mod just reads them)
- **Sethome / `/back` / fast-travel features** — explicitly removed. The pack uses **Waystones** as the only travel mechanic. Restrictive travel is a design feature for a Create Aeronautics pack: airships, trains, and vehicles are the intended way to cover distance.
---
@@ -110,17 +110,12 @@ bnstoolkit/
│ │ └── ChunkButtonMixin.java
│ ├── server/
│ │ ├── command/
│ │ │ ── BnsToolkitCommand.java /bnstoolkit reload, debug
│ │ │ ├── SethomeCommand.java /sethome, /home, etc.
│ │ │ └── BackCommand.java /back
│ │ │ ── BnsToolkitCommand.java /bnstoolkit reload, debug
│ │ ├── data/
│ │ │ ├── PlotRegistry.java loads plots.json
│ │ │ ── PlotOwnership.java SavedData, plot owner UUIDs
│ │ │ ├── SethomeData.java SavedData, per-player homes
│ │ │ └── DeathLocations.java transient, /back support
│ │ │ ── PlotOwnership.java SavedData, plot owner UUIDs
│ │ ├── event/
│ │ │ ├── PlayerJoinHandler.java tier-based join broadcast
│ │ │ ├── PlayerDeathHandler.java remember death location for /back
│ │ │ └── ChatColourHandler.java tier-based chat name colouring
│ │ └── net/
│ │ └── (packet implementations — see §6)
@@ -308,14 +303,12 @@ the `ServerPlayer` in the handler).
| Data | Storage | Lifetime |
|---|---|---|
| Plot ownership | `bnstoolkit:plots` — vanilla NeoForge `SavedData` attached to overworld | Persists with world. Authoritative source. |
| Sethomes | `bnstoolkit:sethomes` — per-player attached data | Persists with world |
| Death locations (for `/back`) | In-memory only, evicted after teleport or on logout | Transient |
| Quest state | KubeJS-managed JSON at `world/data/bns_economy/quests/<uuid>.json` | Not the mod's concern — the mod only reads via packets |
| Tier configuration | `config/bnstoolkit/tiers.json` (hot-reloadable) | Until edited |
| Plot definitions | `config/bnstoolkit/plots.json` (hot-reloadable via `/bnstoolkit reload`) | Until edited |
Plot ownership and sethomes are server-authoritative. Clients only
get views via packets — they never write to these stores directly.
Plot ownership is server-authoritative. Clients only get views via
packets — they never write to these stores directly.
---
@@ -335,12 +328,10 @@ Defines the 13-tier ladder. Hot-reloadable.
"perks": {
"wildernessChunks": 9,
"plotSlots": 0,
"sethomes": 1,
"dailyBountySlots": 3,
"shopFeeDiscount": 0,
"chatColour": "grey",
"joinBroadcast": "none",
"backAfterDeath": false
"joinBroadcast": "none"
}
},
/* ... 12 more tiers ... */
@@ -459,29 +450,7 @@ the Plot Purchase Popup shows the slot count and disables the
button in the plot-detail screen (opens when they click their own
plot in the map). Releases the slot. Refund: 50% of purchase price.
### 11.3 Sethomes
**What it does:** how many `/sethome <name>` locations a player can
save. `/home <name>` teleports there; `/listhomes` lists; `/delhome <name>`
removes.
**Implementation:** the pack currently has no sethome mod. We build
it in bnstoolkit:
- `/sethome <name>` saves current player position + world + name
- `/home <name>` teleports (validates dimension load)
- `/listhomes` shows owned homes
- `/delhome <name>` removes
- Cap enforced from the player's tier (`tiers.json``sethomes`)
- Unlimited = represented as `-1` in the JSON
**Cooldown:** 30-second cooldown between teleports to prevent
combat-evasion. Configurable in `tiers.json` per-tier (low tiers
have longer cooldown).
**Edge case:** moving a sethome out of a now-claimed plot or a
private base is allowed — sethomes are positional, not contextual.
### 11.4 Daily bounty slots
### 11.3 Daily bounty slots
**What it does:** how many bounties a player can have ACTIVE
simultaneously. Once the slot is freed (by completion or cancel),
@@ -495,7 +464,7 @@ and grey out the Accept button when at cap.
active slots until you turn it in. This is intentional — pushes
players to actually visit the NPC to claim.
### 11.5 Shop fee discount
### 11.4 Shop fee discount
**What it does:** reduces the "merchant cut" deducted when you sell
items at the Bazaar's NPC sell shop. The Bazaar charges a base 25%
@@ -515,7 +484,7 @@ and computes effective payout. Rounded down to nearest integer.
apply this fee — those are direct peer transactions, no Bazaar
middleman. The fee only applies to the official Bazaar sell shop.
### 11.6 Chat colour
### 11.5 Chat colour
**What it does:** the player's name in chat appears in this colour,
visible to everyone. Visual rank marker.
@@ -545,7 +514,7 @@ the coloured name, in a distinct colour (probably bright yellow or
white-bold). Sovereign + Founder is visually busy but acceptable —
only one player on the server will have both.
### 11.7 Join broadcast
### 11.6 Join broadcast
**What it does:** when the player logs in, this controls what message
goes to everyone else on the server.
@@ -577,29 +546,19 @@ goes to everyone else on the server.
dispatches the appropriate message. Particle/sound effects are
server-side commands (`/particle`, `/playsound`).
### 11.8 `/back` after death
**What it does:** the `/back` command teleports the player to where
they last died. Tiers without this perk get "You don't have access
to /back yet" if they try.
**Implementation:** mod listens to `LivingDeathEvent` for players,
stores `(world, x, y, z, timestamp)` in `DeathLocations` (in-memory
only, evicted on logout or after `/back` use). `/back` command
verifies tier perm + reads the entry.
**Cooldown:** 60 seconds. Prevents combat reinsertion.
**Edge case:** dying again clears the previous death location.
You only get one `/back` per death. Logging out clears it too —
intentional, to prevent abuse.
### 11.9 Future perk dimensions (not in V1, but easy to add later)
### 11.7 Future perk dimensions (not in V1, but easy to add later)
Architecture supports adding new perk columns in `tiers.json`
without code changes (the schema is open-ended). Candidates for
later expansion:
- **Waystone slot cap** — limit how many waystones a player can place
and/or own. Starter waystone is granted; higher tiers unlock 2nd,
3rd, etc. Cleanest in-theme perk for a Create Aeronautics pack
where restrictive travel is intentional.
- **Waystone XP cost reduction** — vanilla Waystones charges XP per
teleport. Tier-based discount on this cost (or eventual exemption
for Sovereign).
- **Particle trail** — high tiers leave a visible particle wake when
walking
- **Custom join sound** — different sound effect per tier on login
@@ -647,11 +606,10 @@ Aligned with the economy doc's Phase 0c (mod scaffolding):
|---|---|
| **M0** | Gradle project, mod metadata, FTB Library dep wired, network channel registered, empty placeholder for each screen class. Builds + loads cleanly into the running pack. |
| **M1** | Tier system: TierConfig loads from `tiers.json`, `TierUpgradeScreen` works, perks applied via FTB Ranks promotion command. Founder cosmetic prefix. Chat colour. Join broadcast at all tiers. |
| **M2** | Sethome system: `/sethome`, `/home`, `/delhome`, `/listhomes`, `/back`. SavedData persistence. Per-tier cap enforcement. |
| **M3** | Plot system: `PlotRegistry` + `PlotOwnership`, FTB Chunks mixins, `PlotPurchaseScreen`. KubeJS integration for spur debit. |
| **M4** | Quest UI: `QuestLogScreen`, `BountyBoardScreen`, `QuestProgressHud`. Network packets between KubeJS bounty engine and the mod. |
| **M5** | Shop browser: `ShopBrowserScreen`. |
| **M6** | Polish — animations, sound effects, particle effects for high tiers, theming pass on all screens. |
| **M2** | Plot system: `PlotRegistry` + `PlotOwnership`, FTB Chunks mixins, `PlotPurchaseScreen`. KubeJS integration for spur debit. |
| **M3** | Quest UI: `QuestLogScreen`, `BountyBoardScreen`, `QuestProgressHud`. Network packets between KubeJS bounty engine and the mod. |
| **M4** | Shop browser: `ShopBrowserScreen`. |
| **M5** | Polish — animations, sound effects, particle effects for high tiers, theming pass on all screens. |
Each phase is independently shippable as a `1.x.0` release of the
mod jar.