Commit graph

20 commits

Author SHA1 Message Date
MiTHRAL
be6fa51900 fix: patch Create Ore Excavation kubejs_create wrapper race + validate remote URLs
All checks were successful
Build & Release Pack / build (push) Successful in 1m50s
- 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.
2026-08-24 14:17:35 -04:00
MiTHRAL
a88a0c2421 fix: B1 patch worldportal no EntityLMixin (fixes sable mixin crash) + pterodactyl startup
All checks were successful
Build & Release Pack / build (push) Successful in 1m38s
- 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.
2026-08-24 00:07:32 -04:00
MiTHRAL
1417dd9c73 fix: Protocol Tome quest-book open — correct KubeJS event to NetworkEvents.dataReceived
All checks were successful
Build & Release Pack / build (push) Successful in 1m44s
The client script used 'NetworkEvents.fromServer', which doesn't exist in
KubeJS 1.21.1 (error: Unknown event). The correct receive event is
'NetworkEvents.dataReceived'. This makes the Protocol Tome actually open the
FTB Quests book on right-click.
2026-08-20 16:24:26 -04:00
MiTHRAL
ff02f1df0c feat(v1.0.8): realistic worldgen + bundled shader/resource packs + Protocol Tome + Lithium
All checks were successful
Build & Release Pack / build (push) Successful in 1m47s
- 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
2026-08-20 16:11:22 -04:00
MiTHRAL
970e9ad3c6 fix: pause-menu clutter (hide Create/Supplementaries config buttons) + add World Portal dep + docs + server pack CI
All checks were successful
Build & Release Pack / build (push) Successful in 1m44s
- create-client.toml: ingameMenuConfigButtonRow=0 (hide pause-menu config button)
- supplementaries-client.toml: configs_button=false (hide Quark-style config button)
- add World Portal 0.0.10 (server-side) to both packs — hard dep of The Void Dimension
- docs/mods.md: correct outdated Sinytra/Steam'n'Rails refs, document physics stack + compat notes
- CI: also build/validate/release the server_pack alongside the client pack
2026-08-20 13:54:23 -04:00
MiTHRAL
68b3bc302c feat: FTB Quests guidance book (hybrid - advancements remain primary)
All checks were successful
Build & Release Pack / build (push) Successful in 1m41s
Add an FTB Quests 'The Dark Photon Protocol' chapter that guides players
while the KubeJS advancement tree stays the primary progression.

Design (per user): FTB provides guidance/onboarding; advancements own the
actual progression. Quests auto-complete on the same triggers as the
advancements (item obtained / dimension entered) so there's no double
friction.

Chapter 'chapter_dark_photon_protocol.snbt' - 10 quests mirroring the phase
tree:
  First Steps (Corruption Tide onboarding) -> The Signal -> The Core ->
  The Seal -> The Lattice -> The Legacy, then branches: Through the Doors /
  The Wound / The Answer / Per Spatium.

Tasks: item tasks (scicraft items) + dimension tasks (Limbo, Void, Othersides,
Stellaris moon). Rewards: XP + 2 starting Photon Fragments on First Steps.

Titles/descriptions stored in lang/en_us/ translation file using FTB's
<objectType>.<id>.<subkey> key format (chapter.<id>.title, quest.<id>.quest_desc).

Format: FTB Quests 1.21 uses the marhali JSON5 format (comma-separated
properties) - validated with the json5 parser. Files ship in both client and
server packs (FTB quest progress is server-authoritative).

data.snbt + chapter_groups.snbt are auto-generated by FTB Quests on first
load if absent.
2026-08-20 01:28:28 -04:00
MiTHRAL
26a9fe775d fix: KubeJS redeclaration of const SC across server scripts
All checks were successful
Build & Release Pack / build (push) Successful in 1m46s
Three server scripts each declared 'const SC' at top level, but KubeJS 2101
shares a single global scope across all server scripts → 'redeclaration of
const SC' TypeError.

Rename per-file to unique consts:
- 01_corruption_tide.js → const TIDE_SC
- 02_events.js          → const EVENTS_SC
- 03_recipes_tags.js    → const RECIPES_SC

(The IP warnings in the log — Iris portal artifacts + HAR 1010 wrong-mods —
are informational from the IPSable fork, not errors.)
2026-08-19 22:14:35 -04:00
MiTHRAL
2fdd487786 fix: singleplayer join crash (mekanismcovers sodium mixin) + KubeJS/LootJS API migration
All checks were successful
Build & Release Pack / build (push) Successful in 1m40s
FATAL fix — mekanismcovers Sodium mixin crash:
- mekanismcovers 1.3-BETA targets an old Sodium BlockRenderer API that
  doesn't exist in Sodium 0.8.13 → 'No refMap loaded' InjectionError.
- Add config/mekanismcovers.json with disableAdvancedCoverRendering=true
  (the mod's documented workaround for Sodium/Iris/Embeddium crashes).
  Also set enableShaderCompatibleRendering=true.

KubeJS 2101.x API migration (global assignment no longer allowed):
- Remove 00_lore.js (it only set global.SCICRAFT, which is now forbidden)
- Inline the config object into 01_corruption_tide/02_events/03_recipes
  (global.SCICRAFT → local const SC per script)
- Remove unused 'const SC = global.SCICRAFT' from registry_blocks.js

LootJS 3.x API migration:
- addEntityLootModifier → addEntityModifier (04_loot.js, 7 call sites)

Pack validates: client 140 / server 118 mods, 57 story keys.
2026-08-19 21:32:35 -04:00
MiTHRAL
bc83e93d05 fix: singleplayer worldgen crash + server/client side hygiene
All checks were successful
Build & Release Pack / build (push) Successful in 1m41s
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.
2026-08-19 21:02:47 -04:00
MiTHRAL
1cc4df514d fix: KubeJS client events - tooltip and JEI API changes
All checks were successful
Build & Release Pack / build (push) Successful in 1m41s
- ItemEvents.tooltip → ItemEvents.modifyTooltips (new KubeJS 2101 API)
- JEIEvents.information → RecipeViewerEvents.addInformation('item', ...)
  (JEI integration moved to unified RecipeViewerEvents system)
2026-08-19 19:29:16 -04:00
MiTHRAL
aaa2ecea1e fix: remove 'glass' block type from renegade_glass (not a valid KubeJS block type in 1.21; glass behavior handled by renderType + opaque)
All checks were successful
Build & Release Pack / build (push) Successful in 1m42s
2026-08-19 19:21:07 -04:00
MiTHRAL
1741dbfed4 fix: KubeJS block methods - replace material/translucent/noSolid with valid 1.21 API
All checks were successful
Build & Release Pack / build (push) Successful in 1m46s
- Replace .material('metal') with .soundType('metal').mapColor('color_gray')
- Replace .material('glass'), .translucent(true), .noSolid(true) with
  .soundType('glass').renderType('translucent').opaque(false)
- Verified all methods against jar: hardness, resistance, lightLevel,
  tagBlock, texture, soundType, mapColor, renderType, opaque all exist
2026-08-19 19:05:16 -04:00
MiTHRAL
c989b34921 fix: KubeJS textureAll → texture (method doesn't exist on BasicKubeBlockBuilder in this KubeJS version)
All checks were successful
Build & Release Pack / build (push) Successful in 1m43s
2026-08-19 18:54:20 -04:00
MiTHRAL
b7a4b04a90 fix: KubeJS startup errors - remove unbreakable() and basic type
All checks were successful
Build & Release Pack / build (push) Successful in 1m37s
- Remove .unbreakable() from void_stabilizer item (not valid on
  ItemBuilder; KubeJS forbids it)
- Remove explicit 'basic' type from quantum_lattice block creation
  (defaults to basic; explicit caused unknown type error)
2026-08-19 18:45:09 -04:00
MiTHRAL
a6aa2db772 fix: swap IP 6.0.7 → IPSable v0.5.0 fork for Sable compat
All checks were successful
Build & Release Pack / build (push) Successful in 1m39s
- 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
2026-08-19 18:31:02 -04:00
MiTHRAL
e0f50097a6 fix: resolve mixin crash by removing worldportal and swapping sodium→embeddium
All checks were successful
Build & Release Pack / build (push) Successful in 1m41s
- 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)
2026-08-19 17:42:25 -04:00
MiTHRAL
3e2edaa89d Fix loading crash: swap to NeoForge IP port, drop Connector stack, JEI-MBM 7.6
All checks were successful
Build & Release Pack / build (push) Successful in 1m41s
2026-08-19 16:46:14 -04:00
MiTHRAL
65de1eb5c8 Reorganize repo: STORY/ as prose source of truth, gen_story.py generator, docs/ ops guides, lang-key single-sourcing 2026-08-19 14:54:58 -04:00
MiTHRAL
09e0b03b80 Fix pack integrity: remove duplicate Moonlight, add Potentials, swap to Stellaris StellarView compat, drop dead Xaero/Sinytra#1343, correct side flags 2026-08-19 03:36:59 -04:00
MiTHRAL
e6433d3f70 SCICRAFT: The Dark Photon Protocol — packwiz packs, story system, guides 2026-08-19 03:03:24 -04:00