Public Access
110 lines
5.3 KiB
Markdown
110 lines
5.3 KiB
Markdown
# Age creation and administration
|
|
|
|
## Creation
|
|
|
|
A page-free Descriptive Book creates an Age when the player assigns a name and
|
|
presses **Create**. Rivencraft immediately assigns a UUID, derives a unique
|
|
Minecraft-safe dimension identifier from the requested name, rolls a seed and
|
|
traits, and persists that definition before asking Dynamic Dimensions to create
|
|
the runtime world. Names that normalize to the same identifier receive stable
|
|
suffixes such as `_2` and `_3`.
|
|
|
|
The selected terrain profile, biome distribution, lighting, weather, celestial
|
|
period, celestial angle, and phase are deterministic and become part of the
|
|
saved definition. A five-by-five cobblestone platform with clear headroom is
|
|
prepared at a safe arrival point. The completed book and every copy carrying
|
|
the same UUID resolve to that definition.
|
|
|
|
Creating an Age can take several ticks. The book cannot be reopened while its
|
|
creation request is active. If creation is interrupted after the definition is
|
|
saved, using the book again resumes from the same immutable definition instead
|
|
of rolling a replacement.
|
|
|
|
## Persistence
|
|
|
|
Rivencraft owns each Age definition for the lifetime of a world. A definition
|
|
contains the Age UUID, canonical name, seed, generation version, runtime
|
|
dimension identifier, spawn, and deterministic traits. Definitions are stored
|
|
in the Overworld saved data and are never rerolled during ordinary loading.
|
|
Runtime terrain and entity data remain in the normal world dimension storage
|
|
managed by Minecraft and Dynamic Dimensions. Back up the complete world folder
|
|
while the server is stopped; copying only a dimension folder does not preserve
|
|
the authoritative Age registry.
|
|
|
|
## Lifecycle
|
|
|
|
An Age definition is created before its runtime dimension. If dimension
|
|
creation is interrupted, the saved definition remains authoritative and the
|
|
same Age is reconstructed the next time its Descriptive Book is used.
|
|
|
|
Registered Ages load when the server starts. A book also loads its destination
|
|
on demand when an administrator previously unloaded it. Unloading retains the
|
|
definition and world folder, so existing books continue to reference the same
|
|
Age and later reload the same terrain.
|
|
|
|
Rivencraft does not automatically delete Ages. Safe permanent deletion needs a
|
|
complete reference index for books in inventories, containers, Book Stands,
|
|
and unloaded chunks. Until that exists, retaining the definition prevents an
|
|
administrator action from silently orphaning books.
|
|
|
|
Destination-preview chunk loaders are temporary. Rivencraft releases them when
|
|
the book closes, the player travels, the player disconnects, the destination
|
|
Age is unloaded, or the server stops.
|
|
|
|
## Commands
|
|
|
|
The commands require permission level 2.
|
|
|
|
- `/rivencraft age list` lists every registered Age and whether its runtime
|
|
dimension is currently loaded.
|
|
- `/rivencraft age unload <dimension>` safely unloads one Age. Players in that
|
|
Age are handled by Dynamic Dimensions, and its definition and world data are
|
|
retained. Use the command suggestions to select a registered dimension.
|
|
|
|
Opening a Descriptive Book for an unloaded Age loads it again from its saved
|
|
definition.
|
|
|
|
## Configuration
|
|
|
|
Rivencraft writes gameplay settings to the world/server configuration managed
|
|
by NeoForge. `descriptive_books.return_link_mode` accepts:
|
|
|
|
- `ON_CREATION` (default): create one Return Link the first time a player
|
|
enters each Age.
|
|
- `ALWAYS`: create a Return Link after every successful Descriptive Book trip.
|
|
- `DISABLED`: never create Return Links automatically.
|
|
|
|
Each client has a separate `rivencraft-client.toml`. Its `book_preview.mode`
|
|
setting accepts `AUTO`, `IMMERSIVE_PORTALS`, `PONDER`, or `LEGACY`. This changes
|
|
only presentation and cannot change server-side Age generation or travel
|
|
validation. See [PREVIEW_COMPATIBILITY.md](PREVIEW_COMPATIBILITY.md) for the
|
|
selection matrix and integration limits.
|
|
|
|
Runtime generation profiles are server data-pack resources. Their schema,
|
|
override rules, reload behavior, and deterministic fallback are documented in
|
|
[AGE_PROFILES.md](AGE_PROFILES.md).
|
|
|
|
## Administrator recovery
|
|
|
|
Use this sequence when a book cannot load an existing Age:
|
|
|
|
1. Stop the server and make a copy of the complete world folder.
|
|
2. Start the server and run `/rivencraft age list`. Confirm that the expected
|
|
canonical name and dimension identifier remain registered.
|
|
3. If the Age is listed as unloaded, open its Descriptive Book to reload it.
|
|
This keeps the UUID, seed, profile, traits, and existing world folder.
|
|
4. If a data-pack profile is missing or invalid, restore or repair that pack,
|
|
run `/reload`, then unload and reopen the Age. A removed custom profile uses
|
|
the deterministic `rivencraft:standard` fallback and logs the substitution.
|
|
5. If the definition is missing, restore the complete world backup. Moving a
|
|
dimension folder into another world cannot reconstruct its UUID or books.
|
|
6. If the definition exists but its dimension data is damaged, restore the
|
|
matching dimension data and authoritative world saved data from the same
|
|
backup generation. Do not combine them from different backups.
|
|
|
|
There is intentionally no delete command in Milestone 3. Do not manually
|
|
delete an Age definition or rename its dimension folder: books may exist in
|
|
inventories, containers, Book Stands, or unloaded chunks, and would be
|
|
orphaned. `/rivencraft age unload` is the supported reversible maintenance
|
|
operation.
|