SciCraft/STORY_CANON.md

5.6 KiB

STORY CANON — SCICRAFT: The Dark Photon Protocol

This is the single source of truth for the pack's story. All lore text lives here or is referenced from here. Editing the story means editing this file (or the files it points to) — nothing else.


The canon, in one page

  1. Dark photons are real. A fifth force the Second Renegade Flight harnessed. They are the binding force of the Door — the pressure that keeps a collapsed star-empire from unravelling back into reality.
  2. You are a proto-Time-Lord. Born with the resonance, never finished training. The signal chose you because only a renegade could read the Protocol the mortals can't.
  3. The wound. The Flight sealed the empire inside a Dimensional Door. The seal is failing. The Void Dimension is the raw wound; the Doors are scar-tissue; the Deeper and Darker is what's answering from inside.
  4. The job. Rebuild the Quantum Lattice — the Protocol's emitter — and keep it online. The Protocol is never finished; it is maintained.
  5. The tide. Corruption rises while Doors go unsealed (global, shared by all players). Re-seal Doors at the Lattice to push it back. No fail state — just a world that gets darker while you procrastinate.
  6. The Doctor connection is atmospheric only. TARDIS-blue glass ("Renegade Glass"), the phrase Per Spatium, portal styling. Present but never plot-driving; players who don't care can ignore it entirely.

Where the story lives (file map)

What you want to change Where Reload
Global story strings, tide tuning, dimension IDs kubejs/server_scripts/00_lore.js /reload
Item/block names + advancement titles/descriptions kubejs/assets/scicraft/lang/en_us.json resource reload
Player messages (tide warnings, signals) 00_lore.jsscicraft.phrases.* + en_us.json /reload
Item tooltips (hover lore) kubejs/client_scripts/01_tooltips.js F3+T
JEI info pages kubejs/client_scripts/02_jei_info.js F3+T
Crafting chain / gating recipes kubejs/server_scripts/03_recipes_tags.js /reload
Corruption tide logic kubejs/server_scripts/01_corruption_tide.js /reload
Player powers / void hazards kubejs/server_scripts/02_events.js /reload
Boss → Photon Fragment drops kubejs/server_scripts/04_loot.js (LootJS) /reload
Advancement phase tree kubejs/data/scicraft/advancements/protocol/*.json /reload
Advancement reward loot kubejs/data/scicraft/loot_tables/protocol/*.json /reload
Item & block definitions (ID, texture, stats) kubejs/startup_scripts/registry_blocks.js restart
Textures kubejs/assets/scicraft/textures/{item,block}/*.png F3+T

Golden rule: 00_lore.js is the bible. If you add a new story beat, put its strings there first, then reference SC.<path> from the other scripts. Never hardcode lore text in a script body.


Adding a new story beat (5-minute workflow)

  1. Edit 00_lore.js — add your phrase to phrases, or your item to items.
  2. Add the lang key to en_us.json (same key you used in Text.translate).
  3. If it's a new item/block: add to registry_blocks.js + run tools/gen_textures.py for a placeholder texture. This step needs a full restart.
  4. Add a tooltip / JEI page if it's a carried item.
  5. Wire the beat into the tide (if it's an event) or into a recipe (if it's a gated item) or into an advancement JSON (if it's a goal).
  6. Sync to both packs:
    rm -rf client_pack/kubejs && cp -r server_pack/kubejs client_pack/kubejs
    
  7. Reload: /reload (server scripts/advancements/recipes) or F3+T (client assets/tooltips). Startup item changes require a game restart.

Adding a new advancement node

Copy data/scicraft/advancements/protocol/the_core.json and change:

  • "parent" — the node before it
  • "title"/"description" — lore text (also add the matching advancements.scicraft.protocol.<name>.title/.description keys to en_us.json)
  • "criteria" — the trigger (inventory_changed / changed_dimension / tick)

Rename the file <your_node>.json. The tree is non-terminal: the Protocol is maintained, not completed.


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.


TODO — future story beats (drop in whenever)

  • New Doors: a "Door network" that opens/closes on a schedule, each carrying its own phrase in 00_lore.js.
  • Star fragments: Stellaris planets each recover a named fragment ("Mars shard", "Venus shard") → new advancement nodes.
  • Lattice upkeep: it slowly consumes Photon Cores while powered; running dry raises the tide (ties tide to real infrastructure).
  • Final "The Legacy" tier of Renegade Glass builds that hum — block interactions that whisper one scicraft.phrases.* line.
  • FTB Quests questbook mirroring the advancement phases.