Files
onion-mc/analysis/FTB-CHUNKS-SWAP.md
T
logan 2fcb8b492e chore(pack): drop FTB Quests, FTB Teams and FTB XMod Compat
FTB Teams was the only thing holding FTB Quests down -- FTB Quests' 1.21.1
build requires it, and its bytecode references dev/ftb/mods/ftbteams in 14
classes including the event handler, so it breaks at runtime without it. With
quests unused, the whole block goes. XMod Compat only bridged
Quests/Chunks/Ranks, all of which are now gone.

FTB Library stays because FTB Backups 3 builds its config UI on it
(Panel/Theme/Widget/ConfigGroup/ConfigValue/SNBTCompoundTag, 13 classes, and
it does not bundle them despite declaring only neoforge). Architectury API
stays because FTB Library references it in 47 classes.

Verified before removing: FTB Library and FTB Backups 3 reference ftbteams,
ftbquests and ftbxmodcompat in zero classes each, and nothing else in the pack
references them.

CurseForge-sourced mods drop from 9 to 5; pack is 146 mods. OPAC's built-in
party system is now the only one, so primaryPartySystem should be left at its
default rather than pointed at ftbteams.
2026-10-01 01:21:24 -04:00

180 lines
11 KiB
Markdown

# FTB Chunks -> Open Parties and Claims + Xaero's maps
**Status:** shipped - 2026-09-30 (`1d02bf1`, pushed). FTB Quests/Teams/XMod Compat removed after the
swap; see section 8.
**Decision:** replace FTB Chunks with **Open Parties and Claims (OPAC)** for claims/forceloading and
**Xaero's World Map + Minimap** for mapping, and drop the rest of the FTB suite that depended on it.
Remaining FTB mods: **FTB Backups 3** and **FTB Library** only.
**Accepted cost:** every player re-claims their land and re-creates their waypoints, and any FTB Quests
content and per-team progress is discarded.
Confidence tags follow `FINDINGS.md`: **VERIFIED** / **DOCUMENTED** / **COMMUNITY** / **INFERENCE**.
---
## 1. Why this works at all
The pack's earlier review (`MODLIST-REVIEW.md` §8) recommended keeping FTB Chunks on the grounds that
"wholesale replacement breaks FTB Quests/Teams". That is only true of a *wholesale* FTB removal.
**VERIFIED:** FTB Quests' build declares `ftb-library` + `ftb-teams` as required and `ftb-xmod-compat`
as optional - **not** FTB Chunks. FTB Quests also ships **no** claim-chunk task type. So FTB Chunks is
the one mod in the FTB suite that can leave without touching quests, provided Teams stays.
**VERIFIED:** nothing else in the pack declares FTB Chunks as a required dependency. The only
cross-mod hooks are inside FTB XMod Compat (KubeJS/GameStages progression, rank-based claim limits),
which degrade to inert modules.
## 2. What changed
| Action | Path |
| --- | --- |
| Removed | `mods/ftb-chunks-forge.pw.toml` (was `ftb-chunks-neoforge-2101.1.22`, CF 314906) |
| Removed | `config/ftbchunks-client.snbt` (the `minimap.enabled=true` modpack default) |
| Edited | `.packwizignore` - dropped `config/*` + `!config/ftbchunks-client.snbt`, back to `config/` |
| Added | `mods/open-parties-and-claims.pw.toml` - `neoforge-1.21.1-0.31.6` (`side = "both"`) |
| Added | `mods/xaeros-world-map.pw.toml` - `neoforge-1.21.1-1.46.0` (`side = "both"`) |
| Added | `mods/xaeros-minimap.pw.toml` - `neoforge-1.21.1-26.5.0` (`side = "both"`) |
| Added | `mods/xaeros-minimap-world-map-waystones-compatibility-forge.pw.toml` - `2.1.0` |
| Regenerated | `index.toml` (147 entries) and the `[index]` hash in `pack.toml` |
Net: **146 mods** (138 Modrinth/other + 8 CurseForge), down from 9 CurseForge-exclusive mods. All four
new mods are Modrinth-hosted, so they are checkable by `packwiz update`.
The three Xaero's entries are byte-identical to the ones deleted in `b0542f9` (2026-09-28) - same
versions, same sha512s - so this is a revert of the map half of that commit, not a new integration.
## 3. Where the pack traded one thing for another
| FTB Chunks capability | Replacement | Notes |
| --- | --- | --- |
| Chunk claims + protection | OPAC | Server config now lives in the world save, not the pack. |
| Forceload + offline ticking | OPAC `claims.forceload.offlineForceload` | Farms-vs-TPS trade is unchanged; reliability is less proven (see §5). |
| Minimap + fullscreen map | Xaero's Minimap + World Map | Now two client mods instead of one. |
| Waypoints + teleport | Xaero's Minimap | **No migration path** - see §4. |
| Party/team claims | OPAC's built-in party system | FTB Teams was removed, so this is the only party system now. `/oparties`, `/opm` for party chat. |
| Waystones on the map | `xaeros_waystones_compatibility` | Restored; it had been removed with the maps. |
| FTB Ranks permission overrides | `xaero.pac_max_claims` / `xaero.pac_max_forceloads` | Moot in practice: FTB Ranks was never installed. |
## 4. Migration runbook (server operator)
**Before the update**
1. Take a world backup. FTB Chunks' claim data stays in the save after the mod is removed, so this
backup is the rollback path.
2. Have each player screenshot or export their FTB Chunks waypoints. They live client-side under
`local/ftbchunks/`; **there is no FTB Chunks -> Xaero's converter** (only JourneyMap -> Xaero tools
exist). Re-entry is manual.
3. Capture who owned which claims/forceloads, so players have a checklist and an admin can pre-claim
using OPAC server-claim mode if desired.
**Cutover (one update, low-activity window)**
4. Do **not** run FTB Chunks and OPAC side by side - two claim systems means split protection logic.
Hard cutover.
5. Start the server once with OPAC installed so it generates
`world/serverconfig/openpartiesandclaims-server.toml`, then **stop the server**.
6. Edit the generated file (it carries `# Default:` comments for every key) and set at minimum:
- `maxPlayerClaims = 500` (matches the old FTB Chunks cap)
- `maxPlayerClaimForceloads = 25` (**decided 2026-09-30**; the stock default is lower, so leaving it
alone silently removes forceloading)
- `primaryPartySystem` -> leave at the built-in default (FTB Teams is gone; do **not** point it at
`ftbteams`)
- a decision on `claims.forceload.offlineForceload` (farms while offline vs TPS)
- add `claims.forceload.offlineForceload` to `playerConfigurablePlayerConfigOptions` /
`opConfigurablePlayerConfigOptions` if players should be able to toggle their own
7. Re-claim: each player re-claims their base and re-forceloads, via the OPAC UI (`'`) or the Xaero's
world map (right-click / drag-select).
**After**
8. Verify per-player forceloading actually keeps chunks ticking with the owner offline. This is the
known weak point (§5).
9. Verify protection across the modded stack - especially Create contraptions, Sable ships, and
fake-player automation.
10. Re-tier any rank/permission limits you were relying on.
## 5. Risks and open items
- **OPAC force-loading reliability is the one thing that can invalidate the swap.** Open upstream
issues report chunks marked forceloadable but never actually loaded (#855, #927, plus #237/#528).
**COMMUNITY.** Test before trusting; re-test on every OPAC bump. If it fails, this swap should be
rolled back - forceloading is the one feature the pack cannot work around.
- **OPAC is self-described beta** and releases frequently (0.31.6, 2026-09-10). **DOCUMENTED.**
- **OPAC and Xaero's are version-coupled** - OPAC's README tells users to keep the Xaero's mods on
their latest versions. Bump them together.
- **Claim protection parity is unverified.** OPAC protects vanilla plus a supported-mod list (Create is
built in on Forge), and needs manual exception entries for anything else. Open reports exist for
creeper explosions (#731) and modded projectiles (#758) inside claims. **COMMUNITY.** The pack's
Apotheosis/Sophisticated/Ars Nouveau/Alex's Mobs surface needs a pass.
- **Sable / Create Aeronautics.** A crash with Sable contraptions was reported (#873) and is **closed**,
but was not re-verified against 0.31.6. **COMMUNITY.** Ships are not covered by plain chunk claims
under either system; the pack has no ship-claim mod. Options if that matters:
`aeroclaims` ("Create Aeronautics: Claims", NeoForge 1.21.1, works with **OPAC or FTB**), or
`sable-protect`. Note that dropping FTB Chunks does close the door on `ftbchunksaerospace` and
`Create-Aeronautics-FTB-Chunks`.
- **Licensing.** OPAC is **LGPL-3.0** - no pack conditions. Xaero's World Map and Minimap are
**All Rights Reserved**: because this pack is distributed from `git.ljones.me` and not from
CurseForge/Modrinth, the terms require an **easily accessible credit link to an official Xaero page**
in the pack. Add one. **VERIFIED** (from the mods' own "Modpacks and Other" sections).
- **`side = "both"` for Xaero's** puts them on the server too. That buys reliable multi-world map
identity and server-side map profiles, and matches the pre-`b0542f9` configuration, but the server
then registers status effects that stop *vanilla* clients joining unless disabled in
`config/xaero/*`. All players get mods via packwiz, so this is not expected to matter.
- **Vanilla-client / optional-client is actually improved** for claims: OPAC's client side is optional,
so a player without it is still protected and can use `/oclaims` chat commands.
## 6. Rollback
Re-add `mods/ftb-chunks-forge.pw.toml` (and the client config if the minimap default is wanted) and
`packwiz refresh`. FTB Chunks' claim/forceload data is untouched in the world save, so existing claims
resume. Then remove OPAC and the Xaero's mods. Keep the pre-swap world backup regardless.
Note: rolling back the FTB Quests/Teams removal is a separate, larger job - re-adding them restores the
mods but **not** any quest content or team progress that was discarded, unless `<world>/ftbquests/` was
archived first.
## 7. Follow-up: removing the rest of the FTB suite
Follow-on decision (2026-09-30): drop **FTB Quests, FTB Teams and FTB XMod Compat** as well, leaving
only FTB Backups 3 and FTB Library.
**Why FTB Teams could not go on its own** - FTB Quests has a hard runtime dependency on it, not just a
launcher one:
| Evidence | Result |
| --- | --- |
| `FTB-Quests@1.21.1/main` build.gradle | `requires('ftb-library-forge')`, `requires('ftb-teams-forge')` |
| FTB Quests bytecode | references `dev/ftb/mods/ftbteams/` in **14 classes**, incl. `FTBQuestsEventHandler` |
| FTB Quests internals | `TeamData` class - quest progress is keyed per team |
The `mandatory = false` in FTB's `neoforge.mods.toml` files is launcher metadata; the bytecode
references are what actually break. FTB Quests also ships no claim-chunk task type, so nothing about
claims depended on it.
**Why XMod Compat went with it:** its integrations were Quests/Chunks/Ranks plus JEI/KubeJS/LuckPerms
bridges. With Quests and Chunks gone there is nothing left for it to bridge.
**Why Library stayed:** FTB Backups 3 uses FTB Library's config/UI classes (`Panel`, `Theme`, `Widget`,
`ConfigGroup`, `ConfigValue`, `SNBTCompoundTag`) - 13 classes, and it does **not** bundle them, despite
declaring only `neoforge` in its own metadata. Library in turn references `dev/architectury` in 47
classes, so Architectury API stays too.
**Verified before removing:** FTB Library and FTB Backups 3 reference `ftbteams`, `ftbquests` and
`ftbxmodcompat` in **0 classes** each, and nothing else in the pack references XMod Compat.
**Consequences accepted:** any authored FTB Quests content and per-team quest progress is discarded.
There is no longer any party system to point OPAC at, so `primaryPartySystem` stays at OPAC's built-in
default. The pack dropped from 9 to **5 CurseForge-sourced mods** and from 149 to 146 mods.
## 8. Docs that need follow-up
- **Map/waypoint rescue from the old FTB data** - see `analysis/FTB-XAERO-MAP-MIGRATION.md` and the
`tools/ftbchunks-reveal.py` + `tools/prune-world-to-reveal.py` scripts. Mask extraction is validated;
the world-save pruning step is written and unit-tested but not yet run.
- `FINDINGS.md` - §3.3, §7.1, §8 rows 2-3, appendix A and appendix B updated in this change; §1's
mod-count statistics were left at their earlier snapshot (a note was added).
- `MODLIST-REVIEW.md` §7.4 and §8 still say Open Parties and Claims is a SKIP/duplication and "Keep
FTB". **Stale** - the swap is now the intended design.
- `MODLIST-GROUPS.md` / `analysis/master-table.md` / `analysis/groups-table.md` carry the same stale
OPAC verdict.
- Not done: re-adding `xaero-train-map` (was `Ov2r3aVY`, 1.0.0). It is unblocked again by this change and
the pack has Create trains; one-line addition if wanted.