- COE 1.6.8 races kubejs-create for the ProcessingOutput rhino wrapper
(guard flag set in @Mod ctor, KubeJS plugin callbacks run during its own
construction) → nondeterministic 'Wrapper already exists!' boot crash.
Ship ASM-patched jar (tools/patches/build_patched_coe.sh, Patcher.java).
- validate_pack.py: new 'remote' command — fetches every direct URL and
byte-verifies non-CDN hashes; catches unpushed/ drifted patched jars.
- docs/server.md: stale-metadata failure row (-g is GUI-only), patched-jars
table; docs/mods.md compat notes.
- Patch worldportal-neoforge-0.0.10+1.21: remove EntityLMixin (priority 750
@WrapOperation getRelativePortalPosition) which conflicts with sable
EntityMixin @Overwrite (priority 1000). Keeps other 10 mixins
(EntityMixin, PortalForcerLMixin, etc.) so Void Dimension portals still
work. IPSable 0.5.0 only fixes Entity::collide, not this method, so
worldportal must be patched directly. Patched jar at tools/patches/
with sha512 efbf5fac... and pw.toml now points to
https://git.mithraic.cloud/.../tools/patches/worldportal-...-patched.jar
(side=server, both packs).
- Add tools/pterodactyl-start.sh: correct NeoForge 21.1.248 Pterodactyl
startup for yolks:java_21 egg. Handles packwiz -s server, neoforge
installer (--installServer generates user_jvm_args.txt + unix_args.txt +
run.sh), injects {{SERVER_MEMORY}} into user_jvm_args.txt (replaces
-Xmx), and exec bash run.sh nogui (correct order
java @user_jvm_args.txt @unix_args.txt). Replaces broken
Hytale/start.sh exec java @unix_args.txt (missing user_jvm_args,
hardcoded -Xms128M, no nogui, no run.sh, wrong CWD).
- Also fixed Hytale/start.sh to delegate to new script.
- Worldgen (both packs): Terralith 2.6.2, Tectonic 3.0.26, Continents 1.1.12
(realistic continent-based overworld; applies to NEW worlds)
- Client: bundle MakeUp Ultra Fast shaderpack (LGPL) + Vanilla Live resource
pack (CC-BY-SA), force-enabled via Resource Pack Overrides
- FTB Quests: add Protocol Tome starter item (given on first login) that opens
the quest book via KubeJS network -> FTBQuestsClient.openGui(); + lang keys
- Optimize: add Lithium 0.15.4 (NeoForge 1.21.1) to both packs
- Docs: mods.md updated with worldgen/shader/resource/quest notes
Root cause: lithostitched (worldgen library) was marked 'server' side, so it
was excluded from the mrpack. But reintegrated_chipped and waystones ship
worldgen JSON referencing lithostitched's custom registry keys
(lithostitched:random_block, condition, block_swap, etc.). The singleplayer
integrated server runs inside the client and fails to parse those → crash.
Fixes:
- client_pack: lithostitched + lootjs → side 'both' (needed by singleplayer
integrated server for worldgen + 04_loot.js LootJS)
- doctor-who-client-mod → side 'client' (is client-only)
Server pack hygiene (client-only mods removed so dedicated server only
gets what it needs):
- Remove athena-ctm, simply-tooltips, badoptimizations, entityculling,
immediatelyfast, inventory-profiles-next, journeymap-integration,
just-enough-mekanism-multiblocks, libipn, stellaris-stellarview-compat,
stellar-view-mixin-renderer, stellarview, the-doctor-who-client-mod
- (131 → 118 server mods)
Add .gitignore for crash logs / pack build artifacts (cleanup).
Verified: client 140 mods, server 118 mods, all validate; 57 story keys.
Both packs now support singleplayer + dedicated server with correct sides.
- Replace Immersive Portals 6.0.7 with IPSable 0.5.0
(r2smith141/IPSable) — a purpose-built fork that resolves the
@Redirect conflict on Entity::collide between IP and Sable
- Fork has 23 collision-handling classes vs IP's 18 (5 extra for
Sable compat bridge)
- Version match: Sable 2.0.5 ✓, Create 6.0.10 ✓, Aeronautics 1.3.1 ✓,
Sodium 0.8.x ✓, Iris 1.8.x ✓
- This fixes both the original worldportal→sable and the
IP→sable mixin conflicts without removing any mods
- Remove worldportal (redundant: IP 6.0.7 + Dimensional Doors already provide
portal mechanics; zero lore/story impact — not referenced anywhere in the
pack's KubeJS scripts, advancements, datapacks, or story files)
- Swap Sodium 0.8.13-beta.2 → Embeddium 1.0.15 (NeoForge-native fork with
better mod compatibility; resolves the mixin conflict with sable 2.0.5)
- Root cause: worldportal EntityLMixin (priority 750) and sable EntityMixin
(priority 1000) both inject into Entity::getRelativePortalPosition. Sable is
required by Create Aeronautics; worldportal was the redundant mod.
- Verified: all 16 Create addons at latest versions, pack validates (140 client
/ 131 server mods), story generation OK (57 keys)