Port seeded Age completion and Accelerated pages to 26.3 beta
Build / build (push) Canceled after 0s

This commit is contained in:
dnorberg committed 2026-11-05 15:19:11 -05:00
1 parent 40770841ee
commit f13bedd26f
20 files changed
+976 -63

No files matched your search

+123 -1
View File
@@ -9,7 +9,7 @@ independent Age weather and lighting, multiple authored or seeded celestial
bodies and eclipses, biome/material completion, and random features/structures.
Instability, crystal portals, discovery/stations, writing recovery and optional
integration parity remain unfinished. The latest published beta is
[1.0.1.93-beta.1](RELEASE_NOTES_1.0.1.93-beta.1.md).
[1.0.1.98-beta.1](RELEASE_NOTES_1.0.1.98-beta.1.md).
Use a test world and keep a backup; do not
substitute this JAR for the 1.21.1 mod or import 1.21.1 saves.
@@ -1291,6 +1291,128 @@ and `age material_probe <name> [chunk_x chunk_z]`. The latter examines one
terrain-stage chunk (default 0,0) without feature, lighting or entity generation. Nothing is committed
or published without explicit request.
The local `1.0.1.94-beta.1` slice ports **structure-aware completion of explicit
biome distributions** from 1.21.1. Single Biome without a supplied biome now
prefers a biome compatible with every authored structure page, when a common
candidate exists. Cave + Single + Nether Fortresses therefore selects an
eligible Cave/Nether biome rather than an unrelated cave biome. If there is
no common candidate, ordinary seeded filling and authored structure overrides
remain available, as in root.
For multi-biome controllers, each uncovered structure requirement can add one
compatible biome from the terrain's available pool. This is an intentional
exception to ordinary minimum-only filling: an already-full pool may gain
another biome for its structure pages. Supplied biomes, their order and
duplicate weights remain intact. A supplied Single Biome is never replaced,
Native remains unchanged, and Dungeons impose no biome requirement. The
no-controller fallback remains unchanged in this slice.
Test Single Biome + Villages without biome pages, Cave + Single Biome + Nether
Fortresses, and a multi-biome book with structures. Compare an explicit End
Single Biome + Villages to confirm that authored override still works.
`age create_completed_biomes <name> <seed> <terrain> <distribution> [structure-page-id]`
now accepts an optional structure fixture. Existing Ages are not rerolled;
restart/reseed retains completed pools. Nothing is committed or published
without explicit request.
The local `1.0.1.95-beta.1` slice seed-completes **omitted biome controllers**
in partly authored books, using 1.21.1's first AgeTraits distribution draw.
Native, Single and Medium are common; the other supported distributions are
rarer. Explicit controllers still win. Supplied biomes are never discarded:
a Native roll with authored biomes falls back by count, as does a Single roll
with multiple biome pages. Other seeded multi-biome controllers are retained,
so a lone supplied biome may receive a second biome to meet the minimum.
Void without biome pages still uses The Void; supplied Void biome pages keep
their existing count-based behavior. An omitted controller that rolls Native
on Cave terrain uses the same seeded Single fallback already used by random
Ages, since the port has no native multi-cave source. Explicit Native Cave
behavior remains unchanged. Structure-aware completion from .94 applies to
the resulting nonnative controller. Full Link-Panel-only random generation
retains its existing selector and seeds.
Test new terrain-only books without biome controllers, one/two supplied biome
pages without a controller, and Cave + Nether Fortresses without a biome
controller. Compare an explicit Single Biome book and restart/revisit.
`age create_completed_biomes <name> <seed> <terrain> auto [structure-page-id]`
provides an omitted-controller fixture. Existing Ages are not rerolled.
Nothing is committed or published without explicit request.
The local `1.0.1.96-beta.1` slice seed-completes **omitted terrain pages** in
partly authored books. It starts with the same ranked terrain draw as random
Ages, following 1.21.1's `selectForWriting` model. If that terrain cannot host
the supplied features/materials, a deterministic fallback chooses a compatible
terrain in stable profile order. The port also preflights its current biome
restrictions, avoiding an automatic Cave choice for supplied surface biomes.
Explicit terrain still wins and incompatible explicit combinations remain
rejected. Missing-terrain Fortress books can now bind using Cave terrain;
unpaired fluids use supported surface noise terrain. No extra random features
are added to partly authored books. The original book page list stays intact;
the chosen terrain is appended only to internal generation input so material
and color/controller indices do not shift. Sky/color/celestial compilation
still reads the original pages. Fully random Link-Panel-only Ages retain their
existing selector. Already-created Ages do not change terrain.
Test several new books with Sky or a feature but no terrain page, Nether
Fortresses alone, and an unpaired Water page. Compare an explicit Flat book
and a Plains biome page without terrain; the latter must not choose Cave.
`age create_auto_terrain <name> <seed> <page-id>` exercises the production
selector for one-page fixtures. Restart and revisit to confirm persistence.
Nothing is committed or published without explicit request.
The local `1.0.1.97-beta.1` slice ports **Native Cave biome distribution** from
1.21.1. A new Cave + Native book now freezes the full recognized Cave/Nether
biome pool and distributes it with the existing seeded Tiny-region sampler,
instead of forcing Lush Caves. An omitted controller or random Cave Age that
rolls Native now uses that same pool rather than converting to Single.
Random structures inspect the saved pool, so eligible Nether structures are
no longer hidden behind an assumed Lush-only source.
Existing Single Cave Ages remain Single. Old empty Native Cave records keep
their Lush fallback; they are not silently expanded on load. Other Native
terrains remain unchanged, and explicit Native still rejects biome pages.
Pools persist across restart/reseed; reseeding can still change future region
layout. Modded biome surface-rule integration remains separate pending work.
Back up before updating and do not downgrade worlds containing new Native
Cave pools to earlier beta builds.
Test a **new** Cave + Native Biomes book without individual biome pages,
explore multiple regions, then restart/revisit. Compare an explicit Single
Cave book and an existing old Cave Age. The existing
`age create_completed_biomes <name> <seed> cave native` fixture also checks
the native source against Tiny's sampler without generating chunks.
Nothing is committed or published without explicit request.
### Accelerated random block ticks
The local `1.0.1.98-beta.1` slice ports the **Accelerated** environment page
from 1.21.1. Repeated pages stack: each adds three extra random positions per
eligible block section per tick. Only already-loaded chunks within one chunk
of players are candidates; no extra chunks are loaded. Defaults match 1.21.1:
at most eight candidate chunks and 16,384 attempted positions per Age tick,
shared across sections with rotating selection. These limits live in
`config/rivencraft-local.toml` under `accelerated_age`; setting
`max_random_tick_attempts_per_tick` to zero disables the extra ticks.
This affects random-ticking blocks such as crops and saplings, not entities,
machines, scheduled block ticks, or the day/night clock. The authored page
count persists with the Age across unload/reload, reseeding and restart.
Existing Ages default to zero; pageless random Ages do not gain Accelerated
automatically. Instability costs remain part of the pending instability port.
Test two otherwise comparable new Ages, one with a single Accelerated page
and one with repeated pages. Plant crops/saplings with suitable light and
space, remain nearby, and compare growth. Revisit after restart. The operator
command `/rivencraft_port age acceleration <name>` reports the saved count
and current budgets. Disposable-server fixture
`age create_accelerated <name> <seed> <pages>` checks authoring and bounded
attempt arithmetic and creates a Flat Age; it does not prove live growth.
Build and disposable dedicated-server checks passed for counts 0, 1 and 32,
overflow/disabled budget arithmetic, unload/reload, reseed and full restart.
No player was connected for the server checks, so live growth remains an
in-game acceptance check. The test server was stopped and its world removed.
From the repository root:
```sh