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:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user