Table of Contents
Expedition Jigsaw Rules
Expedition rooms use vanilla Jigsaw Blocks and template pools. Do not use orange wool or custom marker blocks for connectivity.
Paths
Minecraft writes live Structure Block saves to the world folder with plural structures:
saves/<world>/generated/lanteacraft/structures/expedition/*.nbt
Packaged mod resources use singular structure:
src/main/resources/data/lanteacraft/structure/expedition/*.nbt
Template pools live here:
src/main/resources/data/lanteacraft/worldgen/template_pool/expedition/*.json
Import finished server structures from the generated folder into the packaged structure/expedition folder before shipping the mod.
Tools
Generate pools from packaged structures:
python tools/generate_expedition_pools.py
Import server-saved structures and regenerate pools:
.\gradlew.bat importExpeditionStructures
By default this imports from:
run/saves/New World/generated/lanteacraft/structures/expedition
For a different local/server world:
.\gradlew.bat importExpeditionStructures -PexpeditionGeneratedDir="E:\LanteaCraftServer\world\generated\lanteacraft\structures\expedition"
The underlying script is also available directly:
python tools/generate_expedition_pools.py --import-generated run/saves/TestWorld/generated/lanteacraft/structures/expedition
Validate packaged structures and pools:
.\gradlew.bat validateExpeditionStructures
or:
python tools/validate_expedition_jigsaws.py
Validate server-saved structures too:
python tools/validate_expedition_jigsaws.py --generated run/saves/TestWorld/generated/lanteacraft/structures/expedition
Required Start Socket
ExpeditionGenerator starts vanilla jigsaw placement with:
lanteacraft:expedition/start
and asks for this jigsaw name:
lanteacraft:expedition/door
At least one structure in the start pool, normally gate_room.nbt, must contain a Jigsaw Block whose Name is exactly:
lanteacraft:expedition/door
Matching Rule
A spawning jigsaw connects when:
previous_jigsaw.target == candidate_piece_jigsaw.name
The previous piece chooses a target pool. Minecraft picks a candidate structure from that pool, then looks for a Jigsaw Block in the candidate whose Name matches the previous jigsaw's Target.
Simple Chain
Expected basic flow:
gate_room → hall_1 → room/intersection/combat → reward_room
Useful socket names:
- Start:
lanteacraft:expedition/door - Halls:
lanteacraft:expedition/hall_in,lanteacraft:expedition/hall_out - Rooms/intersections:
lanteacraft:expedition/room_in,lanteacraft:expedition/room_out - Combat:
lanteacraft:expedition/combat_in,lanteacraft:expedition/combat_out - Reward:
lanteacraft:expedition/reward_in
Runtime Placement
Expedition spawning starts Minecraft's jigsaw placement from lanteacraft:expedition/start. After Minecraft finishes generating the structure, the mod scans the generated blocks and replaces expedition marker blocks.
This applies to both /lanteacraft spawn_trial and expeditions generated after dialing an expedition address.
The reward lock uses the reward-room entrance jigsaw as its anchor. Put lanteacraft:expedition/reward_in at the center-bottom block of the reward doorway, facing out toward the room/path the player comes from. When the expedition spawns, that jigsaw block is replaced by a 5 wide by 5 tall Ancient Containment Block lock. When all tracked combat mobs are cleared, that same 5 by 5 area is cleared.
Other gameplay placement uses marker blocks inside the saved structures:
- Blue glazed terracotta: Stargate base position and facing.
- Cyan glazed terracotta: DHD position and facing.
- Lime wool: combat mob spawn position.
- Trapped chest: final reward chest. It is replaced with a normal filled chest.
- Chest or barrel: side loot container.
- Decorated pot: side loot jar.
lanteacraft:expedition_reward_door_marker: reward lock marker. Put this at the center-bottom of the reward doorway. It is replaced with Ancient Containment Blocks and cleared when the trial is complete.
Troubleshooting
No starting jigsaw lanteacraft:expedition/door found
The start pool exists, but none of its structures has a Jigsaw Block with Name = lanteacraft:expedition/door. Add one to gate_room.nbt, save the structure, and rerun the validator.
Missing pool JSON
A Jigsaw Block references a pool that does not exist under data/lanteacraft/worldgen/template_pool/expedition/. Fix the pool field or regenerate pools.
Typoed socket names
If a previous jigsaw targets lanteacraft:expedition/room_in, at least one structure in that previous jigsaw's pool must contain a Jigsaw Block named lanteacraft:expedition/room_in.
Pool references missing structure
The pool JSON points at a structure location that has no packaged .nbt. Run the pool generator after copying the NBTs into src/main/resources/data/lanteacraft/structure/expedition/.
Generated structures saved in plural structures but not copied into singular structure
Structure Blocks save to the world generated/lanteacraft/structures/expedition/ folder. The mod jar reads packaged resources from src/main/resources/data/lanteacraft/structure/expedition/. Copy or import the generated files before building.
