Implement terrain symbol generation profiles
Build / build (push) Canceled after 0s

This commit is contained in:
dnorberg committed 2026-09-30 16:44:22 -04:00
1 parent 28c2ca0db3
commit e28079566b
21 files changed
+398 -78

No files matched your search

+25 -5
View File
@@ -30,15 +30,35 @@ resources and can be overridden by a higher-priority pack. The example under
directory. Valid custom profiles join the stable, sorted pool used when a new
Age rolls its base terrain; the selected ID is then persisted with that Age.
Each built-in profile now has a matching `terrain/<name>` Symbol Page. Put one
of those pages after the Link Panel in a Book Binder to select that terrain
instead of the seed-selected random profile. Standard, Amplified, and Cave use
their corresponding registered noise settings; Island uses Minecraft's
floating-islands noise settings; Flat and Void use flat-source generators.
The Cave and Island pages are Rivencraft terrain choices based on existing
profiles, not claims that Legacy had identically named terrain symbols.
Every family retains a safe cobblestone arrival platform. An omitted terrain
page still uses the deterministic seed-selected profile.
## Persistence and reload behavior
An Age permanently stores its selected profile ID, generation version, seed,
and rolled traits. `/reload` replaces the profile definitions but does not
reroll those immutable values. An unloaded Age resolves its stored profile
again when it loads, so intentional profile overrides affect its runtime
resources and newly generated chunks.
and rolled traits. For an **authored** Age, the generation plan also stores a
copy of the resolved runtime profile: terrain shape, noise settings, biome
preset, and dimension type. `/reload` cannot reinterpret that plan; an unloaded
authored Age uses the saved profile snapshot when it loads, even if the defining
symbol or profile JSON has since changed. An older, page-free Age has no plan
and continues to resolve its saved profile ID at load time.
A profile removed after an Age was created resolves to `rivencraft:standard`.
Registered noise, biome-preset, and dimension-type IDs are validated when
profiles load. Before loading an authored Age, the saved references are checked
again. If a data pack supplying one has been removed, the dimension stays
unloaded and the log identifies the missing resource; the Age's plan is not
silently replaced. Restore the pack to load that Age. A custom dimension type
retains its own skylight capability: normal lighting cannot make a Nether-style
type skylit.
A profile removed after a page-free Age was created resolves to `rivencraft:standard`.
The legacy `rivencraft:random_vanilla` alias also resolves to `standard`.
Rivencraft logs this fallback. Invalid built-in overrides do not replace the
required built-in definitions; a reload fails if a required built-in profile