Implement first-party 26.3 runtime Age creation and persistence #99

Open
opened 2026-10-27 00:05:40 -04:00 by dnorberg · 1 comment
Owner

Part of #96. Replace Dynamic Dimensions AR Edition in the 26.3 target only. Fresh 26.3 saves are acceptable; importing old 1.21.1 Age worlds is not required. Use Rivencraft Age definitions to create distinct runtime ServerLevels with authored generators, dimension types, and correct saved seeds.

Acceptance criteria:

  • Binding two books creates two distinct Ages while the server runs.
  • Generated chunks use each Age seed, including chunk random state; reopening an Age preserves its chunks and seed after restart.
  • All non-retired Ages are registered before clients join after restart.
  • Failed creation leaves no half-registered Age or stranded player.
  • 1.21.1 continues using Dynamic Dimensions AR Edition unchanged.
Part of #96. Replace Dynamic Dimensions AR Edition in the 26.3 target only. Fresh 26.3 saves are acceptable; importing old 1.21.1 Age worlds is not required. Use Rivencraft Age definitions to create distinct runtime ServerLevels with authored generators, dimension types, and correct saved seeds. Acceptance criteria: - Binding two books creates two distinct Ages while the server runs. - Generated chunks use each Age seed, including chunk random state; reopening an Age preserves its chunks and seed after restart. - All non-retired Ages are registered before clients join after restart. - Failed creation leaves no half-registered Age or stranded player. - 1.21.1 continues using Dynamic Dimensions AR Edition unchanged.
dnorberg added this to the Dual-version support milestone 2026-10-27 00:05:40 -04:00
Author
Owner

26.3 runtime Age backend progress: added a first-party server-side loader and SavedData seed index. The backend constructs ServerLevels using NeoForge 26.3 LevelStem seed overrides and restores indexed Ages during Overworld loading, before server ready. Dedicated-server probe created two Ages (seeds 123456789 and 987654321), generated chunks with distinct terrain fingerprints (2865094 vs 3227421), then restarted and confirmed both seeds, levels, region files, and fingerprints persisted. Both 1.21.1 and 26.3 builds pass. This is a non-distributable prototype: it currently reuses vanilla Overworld terrain; authored generators, book binding, client dimension sync/travel, and full failure/lifecycle tests remain. Issue #99 stays open.

26.3 runtime Age backend progress: added a first-party server-side loader and SavedData seed index. The backend constructs ServerLevels using NeoForge 26.3 LevelStem seed overrides and restores indexed Ages during Overworld loading, before server ready. Dedicated-server probe created two Ages (seeds 123456789 and 987654321), generated chunks with distinct terrain fingerprints (2865094 vs 3227421), then restarted and confirmed both seeds, levels, region files, and fingerprints persisted. Both 1.21.1 and 26.3 builds pass. This is a non-distributable prototype: it currently reuses vanilla Overworld terrain; authored generators, book binding, client dimension sync/travel, and full failure/lifecycle tests remain. Issue #99 stays open.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dnorberg/rivencraft#99