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