- 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)
- 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 Embeddium 1.0.15 (breaks Iris, Iris-FLW-Compat, and Sable's
embedded Veil — all require Sodium 0.8.x API)
- Re-add Sodium 0.8.13-beta.2 (same version used before, verified
compatible with all three)
- World Portal removal from prior commit stays (fixes the original
sable mixin conflict)
- Pack validates: 140 client / 131 server mods, 57 story keys
- 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)
Users get one SCICRAFT-<tag>.mrpack to import into Prism Launcher.
Dropping the 362MB CurseForge zip eliminates the large-upload 502 that
failed release asset uploads. All 144 mods are bundled (32 CF jars in
overrides) or auto-fetched from Modrinth at import.
upload-artifact@v4 requires the GitHub-only artifact v2 API
(GHESNotSupportedError on Gitea). v3 uses the v1 protocol that
Gitea's act_runner implements, and is mirrored on the Forgejo
mirror.
The node:20-bullseye runner image ships Python 3.9, which lacks
tomllib (3.11+). Extract inline workflow validation into
tools/validate_pack.py using regex-based parsing of the machine-
generated packwiz TOML subset, and call it from the workflow.
softprops/action-gh-release@v1 is not mirrored on the Forgejo action
mirror, which fatally aborted the job at action-download. Create the
release via the Gitea REST API using the built-in GITHUB_TOKEN and
upload both pack artifacts directly.
Builds the client pack on the media-server docker runner: refreshes the
packwiz index, runs integrity + download-resolvability checks, exports
Modrinth (.mrpack) and CurseForge (.zip) artifacts, validates the
CurseForge manifest completeness, uploads artifacts, and publishes a
release on v* tags.