Public Access
Apply authored biome distributions and expose biome pages (#33)
Build / build (push) Canceled after 0s
Build / build (push) Canceled after 0s
This commit is contained in:
1 parent
e28079566b
commit
050a9537e9
44 files changed
+981
-133
No files matched your search
@@ -40,6 +40,45 @@ 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.
|
||||
|
||||
## Written biome selection (generation version 16)
|
||||
|
||||
Biome pages follow the terrain page and precede the distribution-control page
|
||||
in the Binder. Bundled controls are Native, Single, Tiled, Grid, and Tiny through
|
||||
Huge regions. Single needs one distinct biome; Tiled/Grid and Tiny–Huge need
|
||||
two. An authored book receives seeded filler only when it falls below that
|
||||
minimum, while extra authored pages are retained as weighted entries. A book
|
||||
with no biome pages selects a seeded count from 2–4 for Tiled/Grid or 2–6 for
|
||||
Tiny–Huge, capped by the number of eligible terrain biomes. Single uses one;
|
||||
Native uses its preset biome pool. These random-age maximums do not truncate
|
||||
authored pages: the Binder's 27 symbol-page positions bound an authored book.
|
||||
Native cannot be paired with explicit biome pages. Legacy filled Tiny–Huge to
|
||||
three; Rivencraft deliberately uses two so a pair of written biome pages stays
|
||||
exactly as written.
|
||||
The Pages creative tab offers pages for every registered vanilla biome.
|
||||
Hand-authored symbol definitions take precedence; the remaining vanilla pages
|
||||
are generated from the biome registry, so they do not each need a JSON file.
|
||||
Custom/modded biomes still require a data-pack symbol definition.
|
||||
|
||||
Standard, Amplified, and Sky Island terrain fill from the vanilla Overworld
|
||||
biome preset, including its underground Lush Caves, Dripstone Caves, and Deep
|
||||
Dark biomes. Standard terrain therefore keeps Overworld-style cave generation,
|
||||
and cave biome pages can also be written explicitly. Sky islands can use an
|
||||
explicitly authored End biome page.
|
||||
Cave terrain fills only from `#rivencraft:cave_biomes` (Lush Caves, Dripstone
|
||||
Caves, and Deep Dark by default); explicitly authored Nether biome pages are
|
||||
also accepted. Other cave/biome pairings are diagnosed and blocked for now.
|
||||
Milestone 6 instability should allow such illegal combinations as unstable
|
||||
Ages, without silently treating them as ordinary cave generation. Flat terrain
|
||||
uses Overworld choices when a distribution is authored; its Native default
|
||||
remains Plains. Void terrain defaults to The Void and needs additional authored
|
||||
biomes for a multi-biome distribution.
|
||||
|
||||
The resolved list of biome IDs, their order/repetitions, and distribution are
|
||||
frozen into the Age plan. A removed biome ID emits a warning and uses an
|
||||
eligible fallback for that load; restoring the biome recovers the original
|
||||
selection. Generation-version-15 Ages keep their prior registry-wide biome
|
||||
selection algorithm instead of being silently regenerated.
|
||||
|
||||
## Persistence and reload behavior
|
||||
|
||||
An Age permanently stores its selected profile ID, generation version, seed,
|
||||
|
||||
+3
-4
@@ -1,15 +1,14 @@
|
||||
# GameTest suites
|
||||
|
||||
The default dedicated-server run is a small smoke suite: 19 Rivencraft tests
|
||||
The default dedicated-server run is a small smoke suite: 23 Rivencraft tests
|
||||
cover core linking, deterministic Age definition, writing persistence, legacy
|
||||
data migration, workstation transactions, and forged/replayed menu actions.
|
||||
NeoForge currently adds two of its own tests, so the runner reports 21.
|
||||
|
||||
```shell
|
||||
./gradlew runGameTestServer
|
||||
```
|
||||
|
||||
The remaining 49 Rivencraft tests are archived, not deleted. They cover
|
||||
The remaining 56 Rivencraft tests are archived, not deleted. They cover
|
||||
completed milestone details such as every Age terrain profile, Notebook and
|
||||
Desk surface interactions, refill edge cases, book assembly controls, and
|
||||
workstation break/drop behavior. Run only the relevant archive alongside the
|
||||
@@ -21,7 +20,7 @@ core tests when investigating an issue:
|
||||
```
|
||||
|
||||
Available suite names are `linking`, `writing`, `grammar`, `desk`, `binder`, `mixer`, and
|
||||
`recipe`. Run all 68 Rivencraft tests (70 including NeoForge's two) before a
|
||||
`recipe`. Run all 79 Rivencraft tests before a
|
||||
release or after broad cross-system changes:
|
||||
|
||||
```shell
|
||||
|
||||
@@ -6,7 +6,7 @@ New Binder writing has at most one Link Panel plus 27 symbol pages. The Link Pan
|
||||
|
||||
The supported order follows the representable subset of the [Legacy grammar audit](LEGACY_AGE_GRAMMAR_AUDIT.md): terrain; zero or more biome pages; biome controller; weather; lighting; zero or more period, angle, or phase modifiers; one celestial page; then zero or more distinct features. Biome pages precede the controller that consumes them, and celestial modifiers precede the celestial page. Terrain, controller, weather, lighting, and celestial are single-choice categories; identical repeats are duplicates and differing values conflict. Repeated modifiers are intentional. Biome pages may repeat, preserving author order and any future weighting; feature IDs may not repeat.
|
||||
|
||||
Missing terrain, controller, weather, lighting, celestial, or the controller's minimum biome count is an **incomplete** warning, not an error: the compiler retains the seed-selected profile and traits for missing branches. The minimum is zero for Native, one for Single, two for Tiled/Grid, and three for Tiny–Huge. Native cannot consume authored biome pages; Single accepts only one. Unknown IDs, schema-v1 display-only symbols, wrong ordering, misplaced modifiers, duplicates, conflicts, missing/extra Link Panels, and oversized writing are errors. The Binder disables output and exposes the first error on the result-slot tooltip. When that error belongs to a page, its thumbnail is tinted and outlined red, the strip scrolls to it, and hovering it shows the diagnostic. This maps the parser's compact entry position back through any empty page positions. Rejected inputs remain removable. Binding an unwritten Descriptive Book rechecks its server-owned writing and reports the first error without creating an Age. A terrain symbol whose profile is unavailable is also rejected before Binder inputs are consumed.
|
||||
Missing terrain, controller, weather, lighting, celestial, or the controller's minimum biome count is an **incomplete** warning, not an error: the compiler retains the seed-selected profile and traits for missing branches. The minimum is zero for Native, one for Single, and two for Tiled/Grid and Tiny–Huge. Native cannot consume authored biome pages; Single accepts only one. Unknown IDs, schema-v1 display-only symbols, wrong ordering, misplaced modifiers, duplicates, conflicts, missing/extra Link Panels, and oversized writing are errors. The Binder disables output and exposes the first error on the result-slot tooltip. When that error belongs to a page, its thumbnail is tinted and outlined red, the strip scrolls to it, and hovering it shows the diagnostic. This maps the parser's compact entry position back through any empty page positions. Rejected inputs remain removable. Binding an unwritten Descriptive Book rechecks its server-owned writing and reports the first error without creating an Age. A terrain symbol whose profile is unavailable is also rejected before Binder inputs are consumed.
|
||||
|
||||
The plan stores the original writing order, the authoritative semantic value of each resolved symbol, the Age seed, and a copy of the selected runtime profile. An explicit terrain page replaces the random terrain selection; an omitted terrain uses the seed-selected profile. The built-in Standard, Amplified, Cave, Island, Flat, and Void terrain pages now select their matching generation resources. Age loading uses the frozen runtime profile and does not need the original symbol definition or runtime-profile JSON, though its referenced noise, biome-preset, and dimension-type registry entries must remain available. Existing bound books without plans are not reinterpreted. Page-free and Link-Panel-only books keep the pre-existing random path. Biome, lighting, weather, celestial, and feature effects are retained in the plan but will be applied in issues #33–#35; instability remains Milestone 6 work.
|
||||
|
||||
|
||||
Reference in new issue
Block a user