World Dimension Loader (WDL) 1.4.1-beta3
Examples / Play Ideas
Minecraft 1.20.1 / Forge 47.4.22 / Java 17


Public beta note: 1.4.1-beta3 can enter the same configuration through the WDL Workbench. Use WDL_GUI_GUIDE_EN_1.4.1-beta3.txt for GUI flow and safety. The examples below intentionally remain exactly ten complete recipes.

============================================================
How to use this document
============================================================
This document collects copy-ready WDL configurations around actual play ideas instead of only listing Config keys.

Basics:
- Each example assumes a copied source world with the same folder name as the Dimension ID under WDL_custom_dimensions/ unless folder is explicitly configured.
- Example: id = "forest_ruins" -> WDL_custom_dimensions/forest_ruins/level.dat
- After ordinary Dimension/Gate edits, run /wdl scan to reload them.
- Settings marked STARTUP ONLY take effect only after a full game/server restart; /wdl scan does not switch them in the current process.
- If you combine several recipes in one gates.toml, do not leave several Gate definitions with overlapping physical signatures. Distinguish them with frame/corner blocks, non-overlapping sizes, or Igniter restrictions.
- selection_mode = "ALL" targets currently eligible READY WDL imported Dimensions. It does not automatically include Overworld.
- Do not mix minecraft:overworld and WDL Dimension IDs in one LIST.
- Random weights are relative among candidates that are currently eligible. Readiness, Travel Policy, and the current logical Dimension can remove candidates from a draw.

============================================================
Recipe 1 - Basic single-world Gate
============================================================
Purpose:
Use the smallest possible Config to enter one copied world.

Play style:
Use this first to confirm WDL works, or use one imported world as a normal adventure destination.

[dimensions.toml]
```toml
[[dimensions]]
id = "test_world_01"
```

[gates.toml]
```toml
[[gates]]
id = "test_world_01_gate"
dimensions = ["test_world_01"]
```

Behavior:
- folder defaults to test_world_01.
- Because dimensions is present, omitted selection_mode resolves to LIST.
- The Gate uses default obsidian frame/corners, default size range, a 10-second open time, and no cost.

Notes:
- Put the source copy at WDL_custom_dimensions/test_world_01/level.dat.
- For a first WDL test, confirm entry and return with this recipe before adding advanced options.

============================================================
Recipe 2 - Random choice from a fixed LIST
============================================================
Purpose:
Randomly choose from a curated set of imported worlds.

Play style:
One expedition Gate may lead to forest, desert, or ice content on each activation.

[dimensions.toml]
```toml
[[dimensions]]
id = "forest_ruins"

[[dimensions]]
id = "desert_temple"

[[dimensions]]
id = "ice_cave"
```

[gates.toml]
```toml
[[gates]]
id = "expedition_gate"
dimensions = [
    "forest_ruins",
    "desert_temple",
    "ice_cave"
]
```

Behavior:
- Omitted selection_mode + non-empty dimensions resolves to LIST.
- All three use the default COMMON weight, so they have equal relative weight when all are READY and travel is allowed.

Notes:
- When used from one of the listed WDL Dimensions, the current logical Dimension is excluded from destination candidates.
- Readiness or Travel Policy can also remove a candidate.

============================================================
Recipe 3 - Random choice from ALL imported worlds
============================================================
Purpose:
Choose from the configured WDL catalog without maintaining a destination list on the Gate.

Play style:
Add imported worlds later and let them become candidates without editing this Gate.

[dimensions.toml]
```toml
[[dimensions]]
id = "world_a"

[[dimensions]]
id = "world_b"
```

[gates.toml]
```toml
[[gates]]
id = "all_random_gate"
selection_mode = "ALL"
```

Behavior:
- Chooses among enabled, READY, currently eligible WDL imported Dimensions.
- Future READY WDL imported Dimensions automatically become eligible.

Notes:
- ALL does not include Overworld.
- The current logical WDL Dimension is not selected as its own destination.
- For an Overworld Gate, explicitly use selection_mode = "LIST" and dimensions = ["minecraft:overworld"].

============================================================
Recipe 4 - Rarity-weighted destination roulette
============================================================
Purpose:
Make ordinary destinations common and special destinations rare.

Play style:
Most activations lead to common_cave, sometimes to rare_vault, and occasionally to legendary_ruin.

[dimensions.toml]
```toml
[[dimensions]]
id = "common_cave"
rarity = "COMMON"

[[dimensions]]
id = "rare_vault"
rarity = "RARE"

[[dimensions]]
id = "legendary_ruin"
rarity = "LEGENDARY"
```

[gates.toml]
```toml
[[gates]]
id = "rarity_gate"
dimensions = [
    "common_cave",
    "rare_vault",
    "legendary_ruin"
]
```

Behavior:
With untouched common.toml defaults, relative weights are:
- COMMON = 100
- RARE = 25
- LEGENDARY = 3

When all three are eligible, the draw uses the relative ratio 100 : 25 : 3.

Notes:
- This is a relative weighted draw, not a guarantee that a rare result appears every fixed number of activations.
- The effective candidate set can change when a destination is not READY or is denied by policy.
- An explicit per-Dimension weight overrides the rarity default.

============================================================
Recipe 5 - Ten-minute Timed Dungeon
============================================================
Purpose:
Create a dungeon with a fixed exploration time.

Play style:
Enter, gather loot for ten minutes, then get safely evacuated when the shared Timed Session expires.

[dimensions.toml]
```toml
[[dimensions]]
id = "timed_dungeon"

[dimensions.time_limit]
minutes = 10
exit_destination = "PREVIOUS"
```

[gates.toml]
```toml
[[gates]]
id = "timed_dungeon_gate"
dimensions = ["timed_dungeon"]
```

Behavior:
- timed_dungeon uses a shared ten-minute Timed Session.
- At expiry, WDL attempts a safe Forced Exit toward the trusted PREVIOUS destination.

Notes:
- If PREVIOUS is no longer a safe/valid destination, WDL may fall back to Overworld.
- Configure exactly one duration key: seconds, minutes, hours, or minecraft_days.
- This example does not reset the dungeon by itself.

============================================================
Recipe 6 - Repeatable reset dungeon
============================================================
Purpose:
Rebuild the dungeon from the imported source copy after players leave.

Play style:
Complete a run, leave, then start the next run from a fresh runtime generation.

[dimensions.toml]
```toml
[[dimensions]]
id = "loop_dungeon"

[dimensions.runtime]
reset_on_empty = true
reset_delay_seconds = 30
```

[gates.toml]
```toml
[[gates]]
id = "loop_dungeon_gate"
dimensions = ["loop_dungeon"]
```

Behavior:
- After the Dimension becomes safely empty, WDL uses a 30-second grace period.
- When Reset completes, the next runtime generation is rebuilt from the imported source copy under WDL_custom_dimensions.

Notes:
- Builds, block changes, entities, and other runtime changes can be lost on Reset.
- The imported source copy under WDL_custom_dimensions is not the Reset target and remains untouched.
- Safe defaults retain old runtime generations until the next game/server startup. Repeating Reset before restart can temporarily consume substantial disk space.
- Live game-time deletion can be enabled in common.toml, but it is not recommended for safety and mod compatibility.
- If Valkyrien Skies is detected, a request for live deletion is ignored and safe deferred startup cleanup is forced.

============================================================
Recipe 7 - Persistent adventure world
============================================================
Purpose:
Use an imported world as a long-term secondary adventure/home world.

Play style:
Keep building and exploration progress instead of rebuilding the world after visits, while allowing beds, Anchor, and Return Scroll.

[dimensions.toml]
```toml
[[dimensions]]
id = "adventure_world"

[dimensions.runtime]
reset_on_empty = false

[dimensions.bed]
allow_bed_respawn = true

[dimensions.anchor]
enabled = true

[dimensions.return_scroll]
enabled = true
```

[gates.toml]
```toml
[[gates]]
id = "adventure_world_gate"
dimensions = ["adventure_world"]
```

Behavior:
- Runtime Reset is disabled.
- For a new/pristine runtime, 1.4.1-beta3 keeps the fixed physical ID wdl:<id>.
- An existing timestamp runtime is not reverse-migrated just because Reset is disabled.
- Bed spawn registration is allowed for this WDL Dimension.
- Dimensional Anchor and Return Scroll remain available.

Notes:
- reset_on_empty = false, Anchor enabled, and Return Scroll enabled are defaults; they are written explicitly for teaching.
- Bed respawn is not a default and must be enabled explicitly.
- A missing/invalid bed or unsafe runtime state can still fall back safely instead of forcing a bad respawn.

============================================================
Recipe 8 - Empty-handed entry + limited loot export
============================================================
Purpose:
Create a challenge where players enter without equipment and can normally leave only with approved rewards.

Play style:
Start empty, find loot inside, and keep only diamonds and emeralds on a normal return.

[dimensions.toml]
```toml
[[dimensions]]
id = "inventory_trial"

[dimensions.inventory.import]
mode = "BLOCK_ALL"
items = []

[dimensions.inventory.export]
mode = "WHITELIST"
items = [
    "minecraft:diamond",
    "minecraft:emerald"
]
```

[gates.toml]
```toml
[[gates]]
id = "inventory_trial_gate"
dimensions = ["inventory_trial"]
```

Behavior:
- Ordinary entry is denied while the player carries any managed inventory item.
- Ordinary exit is denied while the player carries items outside the export whitelist.

Notes:
- Main inventory, armor, and offhand are evaluated.
- The player may need to discard/store non-whitelisted loot before a normal return.
- During a Timed Session Forced Exit, violating stacks may be removed by the safe cleanup plan so evacuation cannot be permanently blocked. Understand this behavior before combining inventory restrictions with valuable timed loot.
- Ordinary travel does not silently delete violating items; ordinary travel is denied instead.

============================================================
Recipe 9 - One-way two-floor route with Travel Policy
============================================================
Purpose:
Build a progression route where players advance from Floor 1 to Floor 2 but cannot go back from Floor 2 to Floor 1.

Play style:
Overworld -> Floor 1 -> Floor 2 -> Overworld.

[dimensions.toml]
```toml
[[dimensions]]
id = "floor_01"

[[dimensions]]
id = "floor_02"

[dimensions.travel.import]
mode = "WHITELIST"
dimensions = ["floor_01"]

[dimensions.travel.export]
mode = "BLACKLIST"
dimensions = ["floor_01"]
```

The two policy sections above belong to the most recent [[dimensions]] table, so they configure floor_02.

[gates.toml]
```toml
[[gates]]
id = "floor_01_entry"
dimensions = ["floor_01"]

[[gates]]
id = "floor_01_to_02"
corner_block = "minecraft:crying_obsidian"
dimensions = ["floor_02"]
```

Behavior:
- floor_02 accepts WDL-managed entry from floor_01.
- floor_02 refuses travel back to floor_01.
- Export to Overworld remains allowed because only floor_01 is blacklisted.

Notes:
- The Floor 2 Gate may physically exist elsewhere, but Travel Policy will seal entry unless the source is allowed.
- The second Gate uses crying-obsidian corners so it is physically distinct from the first Gate definition.
- Short WDL IDs in Travel Policy are normalized as WDL Dimension IDs.

============================================================
Recipe 10 - Hub with multiple Gate roles
============================================================
Purpose:
Use normal, random, and boss Gates with distinct roles in one hub.

Play style:
Place:
- a normal adventure Gate;
- a random Gate across READY WDL Dimensions;
- an XP-paid boss Gate;
- the built-in Overworld return Gate.

[dimensions.toml]
```toml
[[dimensions]]
id = "adventure_world"

[[dimensions]]
id = "boss_world"
rarity = "EPIC"
```

[gates.toml]
```toml
[[gates]]
id = "adventure_gate"
dimensions = ["adventure_world"]

[[gates]]
id = "random_gate"
corner_block = "minecraft:crying_obsidian"
selection_mode = "ALL"

[[gates]]
id = "boss_gate"
corner_block = "minecraft:gold_block"
dimensions = ["boss_world"]
open_time_seconds = 20

[[gates.costs]]
type = "XP_LEVEL"
amount = 10
```

Behavior:
- adventure_gate uses the normal obsidian definition.
- random_gate is distinguished by crying-obsidian corners and uses ALL selection.
- boss_gate is distinguished by gold-block corners, costs 10 XP levels, and stays open for 20 seconds.
- The generated default Overworld Gate uses a stone-brick frame and emerald-block corners, so it is physically separate.

Notes:
- Destination IDs alone do not distinguish physical Gate definitions.
- If enabled Gate definitions overlap in frame/corner blocks, size ranges, and applicable Igniters, WDL fails closed instead of silently choosing by Config order.
- [[gates.costs]] belongs to the immediately preceding Gate, boss_gate in this example.
- Multiple cost blocks are cumulative and all configured costs must be payable.

============================================================
More ideas
============================================================
You can also combine WDL with:

- fixed ADVENTURE mode + HARD difficulty + night through dimensions.environment;
- Gate reopen cooldown;
- ITEM-cost keys;
- per-Dimension Return Scroll XP cost;
- keep_loaded = true for a world that should remain loaded;
- Anchor-disabled exploration challenges;
- bed-respawn-enabled long-term survival worlds.

See WDL_CONFIG_GUIDE_EN_1.4.1-beta3.txt and WDL_GUI_GUIDE_EN_1.4.1-beta3.txt and the generated Config ALL OPTIONS sections for exact defaults and accepted values.
