Sundered Realms PUBLISHED VERSION.zip
What's new
SUNDERED REALMS — CHANGELOG
v0.1.0 — Initial Release
332 mods · 892 quests · Minecraft 1.20.1 · Forge 47.4.10
💥 CRASHES FIXED — 6
Every one diagnosed from bytecode, logs or file inspection rather than guesswork.
1. Traveloptics — NoClassDefFoundError: DungeonEyeItem
Cataclysm 3.31 flattened items/Dungeon_Eye/DungeonEyeItem to items/DungeonEyeItem. Traveloptics 6.3.0 still referenced the old path. Its declared range [2.57.,) is open-ended, so Forge loaded the incompatible version silently. Fix: Cataclysm 3.31 → 3.16. Verified all 8 Cataclysm dependents resolve against 3.16 with zero missing class references.
2. Cataclysm items — AbstractMethodError: BasicEntityModel.root()
LionfishAPI 3.0 made root() abstract; Cataclysm 3.16's item models don't implement it. Any render of a Cataclysm custom-model item crashed the client — it surfaced through the quest book but would equally have crashed from JEI or the inventory. Fix: LionfishAPI 3.0 → 2.7. All 24 referenced classes verified present.
3. Hexerei — InvalidMixinException: cannot reduce visibility
Sinytra Connector's patch_data.json widened HumanoidArmorLayer.getArmorModelHook to public; Hexerei's mixin declares it protected. Found by searching every file in all 348 jars for the method name — an access-transformer grep alone missed it. Fix: Connector removed. Nothing in the pack needed it — zero mods declared connectormod, zero Fabric-only jars.
4. Mod loading — connectorextras_architectury_bridge requires connectormod
ConnectorExtras bundles architectury-bridge in JarJar, which hard-requires Connector. Fix: ConnectorExtras removed. (Also exposed a gap in the validator — see below.)
5. Duplicate mod id origins
Two loose jars both declaring origins: the multiloader build (requires Connector) and the native Forge build. Fix: kept origins-forge, disabled the Connector-based build.
6. Traveloptics — NoClassDefFoundError: DeadKingAnimatedWarlockAttackGoal
Traveloptics 6.3.0 was built against Iron's Spellbooks 3.15.x; 3.16.3 removed that class. Improved Mobs exposed it by instantiating every registered entity on world load. Fix: Iron's Spellbooks 3.16.3 → 3.15.6, which cascaded into irons_lib 2.1.0 → 1.0.2 (3.15.6 requires the upper-bounded range [1.20.1-1,1.20.1-2)). Cost: Dark Doppelganger and Twilight Spellbooks, which hard-require 3.16.2+.
🗑️ MODS REMOVED OR SWAPPED
Version swaps (fix, don't remove — content preserved)
- Cataclysm
3.31→3.16 - LionfishAPI
3.0→2.7 - Iron's Spellbooks
3.16.3→3.15.6 - irons_lib
2.1.0→1.0.2
Removed — caused crashes
- Sinytra Connector · ConnectorExtras · Origins (Connector build)
Removed — caused visual bugs
- FancyMenu + Konkrete — double-rendered the title screen over Aether Redux's menu
- First-person Model — appeared in all four player-model mixin collision sets; caused the split-face rendering bug
Removed — version conflict
- Dark Doppelganger · Twilight Spellbooks (both require Iron's Spellbooks 3.16.2+)
🐛 BUGS FIXED
| Bug | Cause | Fix |
|---|---|---|
| Quest book completely empty | Quests were written to <world>/ftbquests/ — FTB Quests reads from config/ftbquests/quests/ |
Path corrected, proven by disassembling ServerQuestFile.load() |
| Quest files silently ignored | SNBT used space-separated values on one line | Comma-separated every list and inline compound |
| Duplicate acts in the book | Generator never cleared old chapter files | Directory now cleared before each build |
Visible \n in quest text |
Mod descriptions carry literal backslash-n; esc() doubled it |
Stripped before wrapping |
21 quest icons showed as purple ? |
A lang entry doesn't prove an item is registered | Now cross-checked against real item models |
| Same icon on 37 quests | Structure-only mods register no items | Added a themed vanilla fallback pool |
| Broken items as rewards | _inventory render variants and potion_charm_broke |
Filtered from all reward pools |
| Published version crashed on world load | Density datapack copied from the full pack still referenced 5 removed mods | Regenerated against its own mod set |
| HUD bars stacked on each other | Mana anchored to hunger; hydration at the same offset | Mana +22, hydration −11 |
| JVM wouldn't start | Typo in the flags I supplied — InitiateHeapOccupancyPercent |
Corrected to Initiat**ing**…, tested against the actual JRE |
⚙️ PERFORMANCE & CONFIG
- JVM:
-Xmsmatched to-Xmxat 10 GB + full G1GC tuning. The heap was growing from 256 MB to 12 GB during chunk loading — every growth step was a stall - Distant Horizons:
FEATURES→PRE_EXISTING_ONLY, threads 7 → 3, duty cycle 1.0 → 0.5. It was generating terrain for 27 dimensions while you played - Improved Mobs:
breakTileEntitiesfalse (protects Create, AE2, Mekanism and chests), whitelist flipped to blacklist so mobs dig through ordinary walls, obsidian made a meaningful defensive block, stealing 30% → 15% - Blood Moons: chance 0.10 → 0.45, minimum gap 4 → 3 nights, monster multiplier 2.25 → 3.5
🌍 WORLDGEN
- 406 structure sets rewritten — spacing halved, every salt made unique
- Fixed a silent conflict where 41 sets shared a salt and 16 declared none, causing dozens of structure types to compete for identical chunks and never generate
- Result: roughly 4× structure density
- Moved to Paxi's global folder so it applies to every world, including new ones
🧹 PUBLISHING CLEANUP — 32 files
CurseForge rejects any CurseForge-hosted archive bundled in the zip. It reported the first two; a full sweep found thirty more.
| What | Count |
|---|---|
.disabled jars in mods/ |
12 |
Loose jars in essential/ |
11 |
Hidden mods/.connector/ cache (dot-prefixed, invisible in a normal listing) |
3 |
| CurseForge-hosted shaderpacks | 6 |
| CurseForge-hosted resourcepacks | 2 |
Final state: 332 jars, all at the top level of mods/, zero nested, zero elsewhere, zero CurseForge-tracked files outside mods/.
🔧 TOOLING BUILT
Five validators, in _packtools/, run before every release:
preflight.py— duplicate mod ids, wrong MC versions, missing dependencies, version violations. Recurses into bothMETA-INF/jarjar/andMETA-INF/jars/, resolves${file.jarVersion}from the manifest, and scans nested module dependenciesmixinscan.py— parses 3,478 mixin classes' constant pools to find two mods claiming the same injection pointworldscan.py— structure salts, spacing, and spawn biome modifierscheck_snbt.py— quest syntax (verified against a deliberately broken file)check_ids.py— every icon, item, entity, dimension and structure resolves- Plus generators for the quest book, currency, density datapack, EMC lock and menu art
Two gaps found in my own tooling and fixed:
preflight.pyonly read top-level dependencies, so a nested JarJar module's requirement was invisible — it reported "none missing" immediately before a hard crash
This mod has no additional files

