Files
onion-mc/analysis/FTB-CHUNKS-SWAP.md
T
logan 769af6fa2d chore(tools): add FTB Chunks -> Xaero's map reveal migration tooling
The swap does not carry players' explored terrain across. FTB Chunks stores no
rendered map (its region zips hold chunks.dat plus five data PNGs, one of which
packs height into an image channel), and Xaero's region format is closed and now
version 6 with per-pixel NBT blobs, so the community converters no longer work.
Rather than convert pixels, prune a copy of the world save down to exactly the
chunks a player revealed and let Xaero's own generator map it.

Validated against real data: extracting the 167-region / 98,170-chunk mask
cross-checks clean against FTB's own pixel data, and Anvil pruning round-trips
byte-identically (15.7 MB -> 471 KB on a live region file, slot-to-chunk mapping
confirmed against 1024 chunk NBT headers).

Deferred for now: needs the world save and one singleplayer pass per player.
See analysis/FTB-XAERO-MAP-MIGRATION.md.
2026-09-30 22:04:56 -04:00

8.8 KiB

FTB Chunks -> Open Parties and Claims + Xaero's maps

Status: implemented in the pack (working tree, uncommitted) - 2026-09-30 Decision: replace FTB Chunks with Open Parties and Claims (OPAC) for claims/forceloading and Xaero's World Map + Minimap for mapping. FTB Teams, FTB Quests, FTB Library, FTB XMod Compat and FTB Backups 3 all stay. Accepted cost: every player re-claims their land and re-creates their waypoints.

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 primaryPartySystem = FTB Teams Must be set, or OPAC runs its own parallel party system.
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 -> FTB Teams
  • 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
  1. 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.

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