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