3.4 KiB
3.4 KiB
STORY — SCICRAFT: The Dark Photon Protocol
This folder is the single source of truth for the pack's story. Every piece of player-facing text in the game comes from here.
How editing works
- Edit prose and text in
STORY/*.md. - Run the generator:
python tools/gen_story.py - It merges every ````lang
JSON block intoen_us.json` in both packs and fails if any referenced lang key is missing. - Reload in-game:
/reloadfor server text,F3+Tfor client text.
Golden rule: never hand-edit
en_us.jsonand never hardcode a story string inside a.jsscript. Text lives here (or in theSTORY/*.mdprose); scripts only reference lang keys.
File map
| File | What lives here | Game artifact |
|---|---|---|
00-index.md |
This index + the editing workflow + verified IDs | — |
01-canon.md |
The canon, in one page (the actual story) | — |
02-items.md |
Item/block names, hover tooltips, JEI pages | item.*, block.*, tooltip.*, jei.* |
03-dimensions.md |
Dimension lore + verified dimension IDs | — |
04-phases.md |
The advancement phase tree (titles + descriptions) | advancements.scicraft.protocol.* |
05-dialogue.md |
Player messages: tide warnings, signals, lattice hum | scicraft.phrases.* |
06-loot.md |
Who drops what, and why | 04_loot.js (LootJS) |
07-todo.md |
Future story beats (drop in whenever) | — |
The phase tree (non-terminal — the Protocol is maintained)
root— The Dark Photon Protocol (on login)first_signal— recover a Photon Fragmentthe_core— press 3 fragments → Photon Corethe_seal— craft the Void Stabilizerthe_lattice— assemble the Quantum Latticethe_legacy— craft Renegade Glassthrough_the_doors— enter Dimensional Doors Limbothe_wound/the_answer/per_spatium— Void, Deeper&Darker, Stellaris
Adding a new story beat (5-minute workflow)
- Write the prose in the right
STORY/*.mdfile (canon →01-canon.md, item →02-items.md, message →05-dialogue.md, goal →04-phases.md). - Add the lang keys to that file's ````lang` block.
- If it's a new item/block: add to
kubejs/startup_scripts/registry_blocks.js- run
tools/gen_textures.pyfor a placeholder texture. Restart to apply.
- run
- Wire the beat into a script (tide →
01_corruption_tide.js, powers →02_events.js, craft →03_recipes_tags.js, drop →04_loot.js). UseText.translate('key')— never a raw string. - Run
python tools/gen_story.py, then sync:bash tools/sync_kubejs.sh - Reload:
/reload(server) orF3+T(client). Startup items need a restart.
Verified IDs (do not guess these — they were checked against the jars)
| Thing | Correct ID |
|---|---|
| Limbo (Dimensional Doors) | dimensionaldoors:limbo |
| The Wound (Void Dimension) | thevoiddimension:overworld |
| The Othersides (Deeper & Darker) | deeperdarker:otherside |
| Stellaris moon | stellaris:moon (mars/venus/mercury likewise) |
| Warden | minecraft:warden |
| Mutant Zombie / Skeleton / Enderman | mutantmonsters:mutant_zombie / mutant_skeleton / mutant_enderman |
| Born in Chaos Dark Vortex / Dread Hound / Nightmare Stalker | born_in_chaos_v1:dark_vortex / dread_hound / nightmare_stalker |
When in doubt, verify against the installed jar before writing an ID into a script.