Port seeded Age completion and Accelerated pages to 26.3 beta
Build / build (push) Waiting to run

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

+149
View File
@@ -10,6 +10,17 @@ tracks issues #97–#103 under parent #96.
## Version boundary
Local slice `1.0.1.98-beta.1` ports the 1.21.1 Accelerated environment page:
stacking extra random block ticks in already-loaded player-nearby chunks,
eight-chunk/16,384-attempt default budgets, fair rotating section allocation,
and an Age-local saved page count. The 26.3 LOCAL config holds these limits.
Entities, machines and scheduled ticks are unaffected. Existing Ages remain
unaccelerated; random Age inclusion and instability scoring are not added.
The suspected host-seed biome zoom mismatch was checked against NeoForge's
patched ServerLevel constructor: seedOverride already replaces it correctly,
so the backend seed path was left unchanged. Native Cave policy issue #111
remains separate future work for both Minecraft tracks.
Minecraft 26.3/NeoForge uses Java 25, while Rivencraft 1.21.1 uses Java 21.
Build and publish separate artifacts; do not widen the Minecraft dependency
range of the 1.21.1 JAR. The official [26.3 release notes](https://www.minecraft.net/en-us/article/minecraft-java-edition-26-3),
@@ -1801,6 +1812,144 @@ fresh chunks after full restart again used Nylium/End Stone. No full feature
or entity chunk scans were run. The server was stopped and temporary world
deleted. Nothing was committed, pushed or published.
## Structure-aware biome completion
`1.0.1.94-beta.1` adapts root `AgeBiomeSelection.completeStructureBiomes` for
explicit non-Native biome controllers. It reads compatible biome IDs from
the active registered structure sets and shares this lookup with random
structure eligibility, avoiding two different compatibility definitions.
Repeated structure pages produce one requirement; Dungeons are excluded.
Single with no supplied biome chooses from the intersection of all structure
requirements and terrain-eligible biomes. No intersection leaves ordinary
seeded filling intact. An explicit Single biome is never rewritten.
Multi-biome completion adds one seeded compatible biome for each unmet
requirement where a terrain-eligible candidate exists, before ordinary minimum
filling. Root's salts, requirement order and shuffled candidate selection are
preserved. Existing biome order and duplicate weights remain, but a structure
can intentionally extend a pool beyond the usual minimum. Native and the
port's no-controller fallback remain unchanged. Impossible requirements do
not become new writing rejections: authored structure overrides still apply.
No saved format, network protocol or generated chunks are changed.
The completed-biome fixture accepts an optional structure page and checks
32 seeds for compatible Single/Cave Fortress choices, common Village/Stronghold
requirements, explicit End Single precedence, Native behavior, multi-biome
prefix preservation and avoiding unnecessary additions for already-compatible
or repeated structure pages. Existing biome plan codec checks remain in place.
The .94 build and disposable server checks passed. Village Single and Tiny
fixtures included compatible Plains; Cave Fortress Single selected Crimson
Forest. The 32-seed authoring assertions and the preexisting no-structure
completion checks passed. Saved generator pools survived unload/reload,
terrain reseed and full restart. The server was stopped and its temporary
world deleted. No structure-placement chunk scan was needed. Client book
authoring remains a manual check; no commit, push or publication occurred.
## Omitted biome-controller completion
`1.0.1.95-beta.1` ports the no-controller branch of root `AgeBiomeSelection`
and the first `AgeTraits.select` draw. The rank table and seed stream are
shared with `PortRandomAgeSelection` rather than duplicated. The production
seeded biome compiler uses that default when there is no explicit controller;
the registry-only diagnostic overload retains its exact older defaults.
Explicit controllers are unchanged. Native rolls with authored biomes, or
Single rolls with more than one biome page, fall back by authored count to
Single/Tiled/Medium. Other multi-biome rolls retain their distribution and
ordinary minimum-only filling, plus .94's structure requirements.
Void's omitted controller remains Single for empty pools and count-based
for supplied biome pages. Cave's omitted Native roll follows the port's
existing page-free seeded Single workaround; a native multi-cave source is
still not implemented. Explicit Native is not silently converted. No other
terrain, weather, lighting, color or body seed stream changes. Saved plans
remain frozen through restart and terrain reseed; old Ages are not rewritten.
The completed-biome diagnostic accepts `auto` and checks 128 seeds for all
nine distribution results, independence from unrelated weather pages,
authored prefix preservation, one/two-biome fallbacks, Void behavior and
structure-aware completion. Existing explicit-controller checks still run.
The .95 build and disposable-server checks passed. The expanded 128-seed
matrix covered all distributions, authored one/two-biome rules and Cave pools.
Created automatic Standard, Cave, Void and Cave Fortress fixtures, plus the
unchanged full-random command and explicit Single/Native Cave controls.
Generator pools survived unload/reload, reseed and full restart. A second seed
produced Small regions with three biomes, while explicit Native Cave retained
its Lush Caves source. No chunk-generation scan was needed. The server was
stopped and its temporary world deleted. Client authoring remains a manual
check; nothing was committed, pushed or published.
## Omitted terrain completion
`1.0.1.96-beta.1` adapts root `AgeRuntimeProfiles.selectForWriting`. A partly
authored book without terrain starts with the shared ranked terrain draw;
if unsupported, compatible profiles in stable ID order are indexed using
`floorMod(Long.hashCode(seed), count)`. Explicit terrain is never substituted.
Unlike root's feature-only candidate test, the port additionally preflights
registry-backed biome restrictions to avoid selecting an unloadable Cave
combination for supplied surface biomes. This is a deliberate compatibility
guard while the broader writing/instability recovery remains unported.
Binder availability checks now consider whether any supported terrain can
host an omitted-terrain book instead of assuming Standard. The server resolves
the actual terrain and biome plan once, then passes the resolved internal page
view to material/feature compilers. The inferred terrain is appended internally,
not inserted before original pages or written back to the book. Original
indices and ordered modifiers remain intact. Environment controllers use the
selected terrain, while sky colors and celestials still compile from original
pages. Page-free random books retain their original path and seed streams.
The chosen terrain and generator plans use existing saved fields, so no
network protocol change or retroactive terrain reroll is introduced.
The fixture checks 64 seeds for terrain coverage, deterministic selection,
original page prefixes, Cave-only Fortress support, implied-fluid constraints,
surface-biome compatibility, explicit terrain precedence and Binder
availability. Generator placement still uses the previously ported routines.
The .96 build and disposable server checks passed. The 64-seed assertions
covered all six terrains, deterministic fallback, page-prefix preservation,
explicit Flat, surface-biome protection and Cave-only Fortress availability.
Created Sky-only, Fortress-only, Water-only, Plains-only, explicit Flat and
full-random fixtures. A Water page retained Water as its implied lake fluid;
Fortress-only selected Cave with eligible biomes. Plans survived unload/reload,
reseed and full restart. The server was stopped and its temporary world
deleted. No chunk scan was needed; client Binder checks remain manual.
Nothing was committed, pushed or published.
## Native Cave regions
`1.0.1.97-beta.1` ports root `AgeBiomeSelection`'s full Native Cave pool and
`AgeDimensionService.createBiomeSource`'s Native-to-Tiny mapping. New Native
Cave plans retain distribution NATIVE with a saved recognized Cave/Nether
list, and the backend uses `PortScaledBiomeSource` at scale 0 (or Fixed for
a one-biome pool). Explicit Native biome pages remain prohibited. Both authored
and page-free/omitted-controller paths use the same eligibility query; the
temporary Native-to-Single Cave conversions are removed.
Native pool data is permitted only for Cave terrain at backend validation.
Other Native terrain sources are unchanged. Empty older Native Cave records
still load the old Lush source; old Single choices also remain frozen. New
Native pools are saved through the existing biome-plan codec without a new
network protocol, but earlier betas cannot decode populated Native pools, so
downgrading those saves is not supported. The current pool is passed to random
structure eligibility rather than incorrectly assuming Lush Caves.
The fixture verifies registry-derived pool ordering, old empty Native codec
defaults, the actual generator source, deterministic Tiny-region equivalence,
horizontal region variation and sampled pool membership without loading
chunks. The omitted-controller matrix now expects Native Cave to remain
Native with its full pool. This does not implement modded surface rules.
The .97 build and disposable-server checks passed: explicit and omitted
Native Cave, the full-random Native Cave path (seed 114), Native + Fortresses,
explicit Single and the legacy Lush-only control. The vanilla registry pool
contained nine biomes, including Sulfur Caves and all five Nether biomes;
the actual Native source passed Tiny-equivalence and sample-membership checks.
Pools survived unload/reload, reseed and full restart. The server was stopped
and its temporary world deleted. No chunk scan was needed. Client exploration
remains a manual check; nothing was committed, pushed or published.
## Verification of this first slice
The 1.21.1 `compileJava` and `build` tasks passed offline after the backend