WDL 1.2.2

Config layout / usability
- Generated Config now follows the rule: default behavior is expressed by omission.
- Added a fully commented ALL OPTIONS TEMPLATE to generated Config.
- Practical examples now omit values already equal to WDL defaults.
- common.toml may be left with no active assignments; code defaults remain authoritative.
- dimensions.toml minimal examples omit default-only root and optional-section values.
- gates.toml keeps the functional default Overworld Gate while removing redundant default-only fields.
- Java-generated Config and bundled *.example.toml files are synchronized.
- *.template.toml files are now valid comment-only TOML rather than intentionally incomplete placeholders.
- JA/EN README, Tutorial, Config Guide, Troubleshooting, Upgrade Guide and Release Notes were synchronized.

Compatibility
- No intentional runtime/parser default changes.
- Existing 1.2.1 Config remains valid and is never automatically rewritten.
- Regeneration is optional and recommended only for users who want the cleaner 1.2.2 layout.
- allowed_igniters wildcard semantics, Gate History, Policy, Return Scroll, DH/Forge lifecycle handling and Advanced Igniter durability behavior are unchanged.

---

WDL 1.2.1

Config / Igniter usability
- Automatically generated common.toml, dimensions.toml and gates.toml now use English-only comments.
- Bundled Config example/template files also use English-only comments.
- allowed_igniters is optional: omitted or [] means unrestricted for normal WDL Dimension Igniters.
- A non-empty allowed_igniters list restricts normal Gate activation to the listed IDs.
- Unrestricted default/copy-ready Gate examples omit allowed_igniters entirely.
- Same-frame ambiguity validation is wildcard-aware and remains fail-closed.
- Creative Dimension Igniter remains the separate admin/master path with unchanged cost/Policy bypass and disambiguation behavior.
- Existing Config is never destructively rewritten; regeneration is optional for users who want the cleaner generated format.

Compatibility
- Explicit Basic+Advanced lists from 1.2.0 keep the same exact restriction.
- Omitted/empty 1.2.0 entries become future-proof unrestricted normal-Igniter Gates.
- Gate Cost, Inventory/Travel Policy, Gate Travel History, Return Scroll, destination architecture, DH/Forge lifecycle handling and Advanced Igniter durability semantics are unchanged.

---

WDL 1.2.0
- Advanced Dimension Igniter max durability is configurable in common.toml (default 100, range 1..10000; restart required).

Gate / Travel Architecture
- Added per-dimension Inventory Import/Export and Travel Import/Export Policy.
- Inventory Policy is enforced at actual traversal rather than blocking Gate activation.
- New-format Gates no longer use gate_type; Overworld is a normal explicit destination.
- Legacy gate_type=DIMENSION/RETURN remains compatibility input; old RETURN is treated as an Overworld Gate alias.
- Added Gate Travel History for player-local exact reverse-route landing near the original source Gate. Default 3, configurable 1-10.
- Gate History assists landing only; Config/ActiveGate always owns the destination.
- Return Scroll remains a separate emergency direct-Overworld path and clears Gate History on success.

Gate Cost / Admin
- Hardened ITEM RANGE costs: the player must hold max stock before activation starts; actual consumption is one min..max roll.
- Creative Dimension Igniter remains the master/admin Igniter, bypassing configured Gate costs and Policy for the Gate Session while preserving physical/destination/ambiguity safety.

Per-Dimension Controls
- Added/organized Anchor, Return Scroll, Bed Respawn, keep_loaded and Policy controls per imported dimension.
- Travel Policy now consistently applies to normal Gate and Return Scroll routes.

Config / Compatibility
- Missing common.toml, dimensions.toml and gates.toml are generated at game startup before a world is opened.
- Existing Config is never automatically overwritten or destructively rewritten.
- Backup + Config regeneration is recommended for 1.2.0 while legacy read compatibility is preserved as far as practical.
- New [gate_history] replaces old return-history configuration for normal Gate landing behavior; legacy max_entries may be read as fallback.

Runtime / Compatibility Hardening
- Dynamic WDL ServerLevels participate in Forge Level Load/Unload lifecycle.
- Added commit-aware managed player teleport so WDL post-transfer state is preserved when an external listener throws after the dimension change already committed.
- Gate Travel History, Return Scroll, /wdl tp, Session Resume and respawn paths use the managed transfer path.
- Testing of WDL 1.2.0 with Distant Horizons 3.2.0-b no longer showed the previously observed null-level PlayerChangedDimensionEvent NPE.

Release Packaging / Documentation
- Expanded Japanese and English public documentation to cover first setup, dedicated servers, Gate geometry, random weights, same-frame ambiguity, recipes, source WorldGen preservation, Policy, Gate History, migration and troubleshooting.
- Bundled the complete JA/EN public document set and all config example/template files in the release JAR.
- Development-only test/build documents are explicitly excluded from the public JAR.
- JAR verification now checks all required public files and rejects accidental bundling of development-only documents.

---

WDL 1.1.3
- Beginner setup now makes keep_loaded / Bed Respawn explicitly opt-in: omit both sections unless enabling them with true.

Release Packaging / Documentation Hardening
- Updated the release version to 1.1.3.
- Fixed the build packaging so the Japanese and English user guides are actually bundled inside the final JAR.
- Bundled copy-ready config samples, changelog, license, credits, and root README inside the JAR.
- Reworked the Japanese and English guides for first-time users, including a shortest-path setup tutorial.
- Added a clear existing-user config upgrade guide.
- Existing configs remain compatible and are not automatically rewritten.
- Users who want newly generated settings/comments can back up and move the old config folder, generate a fresh config, then copy their Dimension/Gate definitions into the new files.
- Documented per-dimension [dimensions.runtime] keep_loaded behavior and its max_loaded_dimensions interaction.
- Documented Creative Dimension Igniter master/admin behavior and same-frame ambiguity safety.
- Documented Session Resume and shutdown hardening behavior.
- No new runtime travel mechanic is introduced over 1.1.2; 1.1.3 focuses on release quality and documentation packaging.

Compatibility
- Existing 1.0.0 / 1.1.x configs remain supported.
- Missing dimensions.runtime.keep_loaded defaults to false.
- Missing dimensions.bed.allow_bed_respawn defaults to false.
- Existing Return History, Session Resume, Gate selection, rarity/weight, Anchor, Auto-Unload, source WorldGen inheritance, and VS cleanup behavior is preserved.

---

WDL 1.1.2

New / Advanced Runtime
- Added per-dimension [dimensions.runtime] keep_loaded.
- keep_loaded=false (or omitted) preserves normal Lazy Mount / Auto-Unload behavior.
- keep_loaded=true automatically requests the READY dimension and pins it resident so Auto-Unload/capacity eviction cannot remove it.
- keep_loaded dimensions still consume max_loaded_dimensions slots; WDL warns when configured resident worlds exceed the global cap.
- /wdl scan reconciles keep_loaded changes immediately.
- Initial generated dimensions.toml, example/template configs, and README documentation include the new setting and comments.

Creative Dimension Igniter
- worlddimensionloader:creative_dimension_igniter is now an admin/master Igniter.
- It may activate a Gate even when omitted from allowed_igniters.
- It bypasses configured Gate costs and remains unlimited.
- Physical frame validation, destination validity, current-dimension exclusion, and same-frame ambiguity safety remain enforced.
- When multiple Gate definitions physically match one frame, Creative fails closed unless exactly one matching definition explicitly lists Creative as a disambiguation hint.

Shutdown Hardening
- Added a lifecycle shutdown guard when vanilla/Forge begins server shutdown.
- New staging, mount, unload, Auto-Unload, and keep_loaded mount requests are blocked during shutdown.
- Pending mount/unload queues are canceled instead of being dispatched while worlds are being saved/stopped.
- Late background staging results are discarded using a runtime-generation guard.
- Added WDL SHUTDOWN BEGIN / COMPLETE diagnostics, including lifecycle queue and runtime-pin counts.
- No synchronous shutdown wait was added, avoiding deadlock-prone blocking behavior.

Compatibility
- Existing 1.1.0/1.1.1 configs require no migration. Missing dimensions.runtime.keep_loaded defaults to false.
- Session Resume, Return History, Bed Respawn, rarity/weight, LIST/ALL, source WorldGen inheritance, Gate lifecycle, Anchor, and VS 2.4.11 cleanup are preserved.

---

WDL 1.1.1

Bug Fix
- Fixed players being restored into the Overworld at stale WDL coordinates after logging out inside a Lazy-Mounted WDL dimension and restarting/reconnecting.
- Added persistent per-player Session Resume records for WDL logout location (dimension, position, yaw, pitch).
- On login, WDL now Lazy Mounts the previous WDL dimension when necessary and restores the player after the target becomes available.
- Players are moved to a safe Overworld holding position while the previous WDL dimension is being prepared, preventing underground/unsafe stale-coordinate placement.
- Missing, disabled, or invalid resume targets safely fall back to the Overworld.
- Session Resume is player-specific and uses runtime pin tokens so multiplayer restore operations do not interfere with each other.
- Session Resume does not alter Return History.

Compatibility
- No config migration is required.
- No new config key is added in 1.1.1.
- Lazy Dimension Loading remains enabled; this fix makes reconnect/restart restoration compatible with Lazy Mount.
- Gate selection, Return History, Bed Respawn, Anchor, Auto-Unload, WorldGen inheritance, and VS 2.4.11 cleanup are intentionally unchanged.

---

WDL 1.1.0

New
- Player Return History for normal successful DIMENSION Gate travel.
- Return Gate uses unresolved Gate history by default.
- Return Scroll can optionally use Gate history; default remains direct Overworld return.
- Per-dimension bed respawn opt-in with safe sleep-only default.
- Multiplayer-safe token-based runtime dimension pins.

Return History
- Default max history: 3; configurable 1-10.
- Loop compression treats history as unresolved return path, not a chronological log.
- Auto-unloaded WDL history targets may Lazy Mount and return in one request.
- History is cleared by death, direct Overworld return, and successful /wdl tp admin teleport.
- Permanent stale entries are pruned; transient mount failures keep history intact.

Bed Respawn
- [dimensions.bed] allow_bed_respawn = false by default or when omitted.
- false: beds remain usable for sleep but do not replace the player's respawn point with a WDL dimension.
- true: that WDL dimension may be used as a personal bed respawn target.
- Opted-in unloaded targets may Lazy Mount for respawn.
- Missing/blocked beds safely fall back to Overworld; Dimensional Anchor is never used as a death fallback.

Compatibility
- Existing 1.0.0 configs load without migration edits.
- LIST / ALL / rarity / weight, Gate Resolver, current-dimension exclusion, Gate lifecycle, Anchor, Auto-Unload and VS 2.4.11 cleanup remain unchanged.

---

WDL 1.0.0

First public release of World Dimension Loader for Minecraft Forge 1.20.1.

Highlights
- Import existing Minecraft worlds and expose them as configurable WDL dimensions.
- Lightweight catalog with lazy mount/unmount instead of keeping every registered world loaded.
- Preserve imported WorldGenSettings / LevelStem behavior, including superflat generators.
- Configurable Dimension Gates and Return Gates with timed or permanent sessions.
- LIST / ALL destination pools with rarity weights and explicit per-dimension weight overrides.
- Multiple Gate definitions can share one physical frame when size/Igniter conditions are unambiguous.
- Current-dimension exclusion prevents DIMENSION Gates from acting as same-dimension spawn warps.
- Atomic Gate costs for items, XP, health, and hunger.
- Dimensional Anchor and Return Scroll support.
- Configurable Overworld respawn behavior.
- Auto-Unload and loaded-dimension limits.
- Valkyrien Skies 2.4.11 same-ID unload/remount cleanup compatibility.
- Thin X/Z-oriented DIMENSION and RETURN portal membrane visuals.

Release hardening
- Breaking/replacing required Gate frame, corner, or portal blocks closes the entire active Gate session.
- Stale OPEN states self-heal and allow safe re-activation.
- Gate definition resolution is deterministic and config-order independent.
- Ambiguous activation fails closed without consuming costs, mounting a destination, or creating an ActiveGate.
- Existing LIST / ALL weighted selection behavior is preserved after current-dimension exclusion.

Known scope
- IMPORT is the stable 1.0.0 storage path.
- DIRECT remains future/experimental work and is not a stable 1.0.0 feature.
