Port structures, weather, vegetation and safe surface arrivals to 26.3 beta
Build / build (push) Canceled after 0s

This commit is contained in:
dnorberg committed 2026-11-02 09:30:22 -05:00
1 parent c223f3fdca
commit 48fbae9be9
38 files changed
+1474 -93

No files matched your search

+219
View File
@@ -681,6 +681,225 @@ resource packaging, and static checks pass for this slice. Generation, visual
rendering, actual return travel, and restart checks are left to the player;
no development server is started.
The local `1.0.1.55-beta.1` slice begins the authored structure-set port with
Villages, Mineshafts, and Strongholds. Saved page occurrences use the existing
feature plan's new optional structure list. Terrain gates, random-spread
frequency/spacing scaling, and bounded concentric-ring count/spread follow
1.21.1. Modern `AbstractSpreadingStructurePlacement` accessors replace the old
placement-class accessors. Scaled holder copies never mutate global registries.
Structure-state planning includes authored eligibility biomes while continuing
to sample the actual terrain source. A scoped Structure mixin carries over
1.21.1's authored biome override. The wrapper handles structure starts itself
when a structure plan exists, allowing the hook to recognize the authored Age;
unrelated/unplanned generators remain delegated. Only these three controlled
families are gated in this slice; remaining structure families, random picks,
and biome-mismatch instability remain unported. Existing plans without the
optional list retain their previous structure path. Mod metadata now correctly
calls this target Beta rather than Alpha.
The player passed Star Fissures. Build/static checks pass for this new slice.
A disposable dedicated-server startup reached `Done` without mixin-loading
errors. Its console `/stop` command hit a null-level CommandSourceStack error;
the exact test JVM was then stopped through SIGTERM and saved/shut down. This
was a startup check, not authored generation or density validation. The
disposable world is removed; client authoring, actual structures, density,
biome overrides, and restart checks are handed to the player.
The local `1.0.1.56-beta.1` follow-up corrects the structure biome override.
Client logs confirmed the build-55 mixin was applied, but 26.3 JigsawPlacement
checks `GenerationContext.couldStructureExistInColumn` inside generation,
before the final check bypassed by the 1.21.1 hook. The replacement ModifyArg
changes only the biome predicate passed to the GenerationContext constructor
in Structure.generate for explicitly authored Age structures. Both early
and final checks now see the override; all other generation constraints and
unrelated generators retain their existing behavior.
Build/static checks pass. An isolated `--initSettings` bootstrap initialized
settings without a mixin application error, then FML exited nonzero because
that settings-only mode creates no server thread. This is not a full server
or generation pass. No world was created, and the temporary settings directory
is removed. In-game validation requires a new Age or ungenerated chunks;
previously rejected chunks are not regenerated. No commit/release is made.
The local `1.0.1.57-beta.1` slice completes the existing 1.21.1 structure-page
mapping (Dungeons remains its separate placed feature) and enables 26.3's
Abandoned Camps page. The shared planner now recognizes 15 structure sets.
Page/terrain restrictions match AgeStructureSelection for the 1.21.1 families;
Abandoned Camps follows surface noise terrain. No material modifiers are added.
The separate Fortress/Bastion set resources are reused directly from 1.21.1.
The controlled-set gate includes the vanilla combined Nether set, preventing
unrequested cross-family placement. All structure pages share the previously
validated saved list, density logic, and corrected context-level biome override.
Unknown non-spreading placements are left unchanged rather than cast unsafely.
Unmodified/no-authored-structure Ages retain their prior native path; previously
saved authored plans now gate all supported families in new chunks. Instability
and random feature selection remain pending.
The player passed the build-56 biome fix. Build, diff checks, all 15 registry
and Creative-page mappings, and target structure resource existence checks pass.
Packaged Fortress/Bastion definitions match 1.21.1 byte-for-byte. No server is
started; actual structure placement, terrain-specific limits, repeated density,
and restart validation are handed to the player. Changes remain local.
The local `1.0.1.58-beta.1` slice ports Caves/Ravines feature pages separately
from Cave terrain. A new optional saved carver-page list participates in the
existing feature-plan lifecycle. Grammar accepts noise terrain including Cave,
rejects Flat/Void and material modifiers, and checks the modern CARVER registry.
26.3 combines carving with terrain construction and exposes carvers that emit
geometry rather than mutate blocks. A scoped NoiseBasedChunkGenerator mixin
adds authored geometry to its native CarvingMask immediately before that mask
is tested/applied. It only acts for the matching runtime Age wrapper, using
its frozen seed and actual biome resolver. Vanilla applies the combined mask
with its own aquifer/surface rules; no closed NoiseChunk is accessed afterward.
The source range, salts, Nether cave selection, and Nether ravine skip match
1.21.1. Duplicate Caves/Ravines repeat identical seeds in the baseline, so the
port avoids redundant identical mask passes while retaining authored pages.
Added terrain volumes still follow the combined terrain operation, as noted
for the earlier Floating Islands port.
The player passed structure slice 57. Build/static checks and packaging checks
for the hook, Creative entries, and three required vanilla carvers pass. A
settings-only bootstrap completed initialization without a mixin application
error; FML then returned nonzero because no server thread exists in that mode.
This is not world-generation validation. No world was created; the temporary
settings directory is removed. Actual carving and restart checks are manual,
and no commit/push/publication is performed.
The local `1.0.1.59-beta.1` slice replaces stale per-page port information
and adds the requested red hue for unsupported pages. A shared
PortAuthoredWriting.isPageImplemented classifier uses the same terrain,
controller, material/biome, and feature recognizers as the grammar, without
misclassifying context-dependent modifiers/controllers by testing them alone.
Page tooltips, the extracted item-render color, and the Binder background use
this single availability check. Tinting does not generate extra textures or
change stored page data. Corrupted-page names/descriptions remain obfuscated.
Port language overrides remove the old Standard/one-Biome claim, distinguish
implemented/unimplemented pages and invalid combinations, and correct all
15 structure-family descriptions, material adjacency, and selected terrain/
feature restrictions. The 1.21.1 language assets are unchanged. This is a UI
and information slice, not new generation functionality.
The player passed Caves/Ravines. Build, diff checks, unique language-key checks,
and packaged-language override checks pass. No server/world is started.
Inventory tint, Binder tint/layering, and tooltip readability await the
player's visual check. Changes remain local and unpublished.
The local `1.0.1.60-beta.1` slice implements the four requested 26.3-only
vegetation pages: Poplar Trees, Fallen Poplar Trees, Red Shrubs, and Shelf
Mushrooms. They extend PortVegetationPlan recognition, so grammar, saved plans,
Creative status, item tint, and tooltip availability agree without another
page list. The existing ordered vegetation cap and surface-terrain/biome
restrictions are retained. The 1.21.1 code/assets are unchanged.
Poplar Trees selects only the three vanilla poplar variants, retaining their
relative native weights and six placement attempts. Fallen poplars reuse the
vanilla feature but add authored in-square/surface placement before its sapling
check; the vanilla placed feature alone has no surface-height placement. Red
Shrubs directly reuses its registered patch. No tree/shrub algorithm or artwork
is duplicated.
Shelf Mushrooms is a tree decorator in 26.3, not a placed feature. The authored
page therefore applies ShelfMushroomDecorator to existing connected log hosts
at its position in the vegetation sequence. Section palettes skip log-free
sections, repeated pages reuse the host scan, and tree placements invalidate
that cache. Host ordering and page seeds are deterministic; callback writes
are chunk-local, fluid-free, supported, and height-bounded. The decorator keeps
its native standing/fallen logic and side/age/adjacency checks. This is an
authored extension using the native decorator, not a new vanilla feature ID.
Build/static and resource-reference checks pass. The four pages' descriptions
explain their actual effects and requirements. No server/world is started;
the player validates vegetation appearance, support/tint, ordering, and restart.
Changes remain local and unpublished.
The local `1.0.1.61-beta.1` follow-up separates log-hosted Shelf Mushrooms
from surface plants. A shared requiresSurface classification now governs
terrain/explicit-biome validation; decoration handles Shelf Mushrooms before
the surface-biome skip. Trees, shrubs, and flowers retain their restrictions.
Void/Cave/End-biome log hosts are no longer excluded by the vegetation path.
The host scan is a stable log-position list rather than connected tree groups.
Native tree decorators assume a meaningful base and only decorate a limited
height band, which is unsuitable for log tendrils. The authored extension
therefore checks exposed log faces at all heights, reusing the native decorator's
replaceability/water predicate and block facing/age/survival rules, with spacing
and chunk bounds. Cached scans still avoid repeated full-volume work. No tree
page or log-producing page is required, but actual log hosts must exist during
chunk generation. This supersedes slice 60's whole-tree height-band behavior.
Build/static checks pass. Manual validation: new Void + Oak Log + Tendrils +
Shelf Mushrooms Age, without any tree page; inspect exposed log faces and
restart/new-chunk generation. No server is started and nothing is published.
The player passed the local `1.0.1.62-beta.1` sound slice: the complete 1.21.1
sound manifest/OGGs are reused, book travel emits modifier-selected audio and
cloud bursts, and Star Fissures play audio after arrival as well as departure.
Portal/meteor events are registered but their gameplay ports remain separate.
The local `1.0.1.63-beta.1` slice adds authored Normal/Fast/Slow/Off/Always/Storm
weather policies. One policy is accepted per book, with availability/tint and
tooltips following the shared classifier. Cave terrain always suppresses it.
An omitted policy defaults to Normal for now; random-trait selection is pending.
Unlike 1.21.1, 26.3 ServerLevel.getWeatherData delegates to the server's shared
weather object. A scoped Runtime Age ServerLevel subclass instead loads native
WeatherData from that Age's data storage, alongside its saved policy. Native
weather ticking and client packets remain in charge; only the data owner and
Legacy-style duration policy change. The constructor replaces inherited global
rain/thunder visual levels before publishing the level. Retirement, reseeding,
reload and restart retain the policy through existing per-Age storage lifecycle.
Vanilla /weather remains a global server command; the Age policy is not a
global command override. Native biome precipitation rules still apply.
Build/diff checks pass. A disposable dedicated server created all six weather
policies: every Age reported independent native data and the expected flags/
duration ranges. Setting global thunder left the Off Age clear. Unload/reload
retained Storm, and a full stop/restart restored all six policies and their
live timers. Both servers shut down cleanly; the temporary test world is
deleted after completion. Client appearance, cross-Age travel, authoring/tint,
and Cave suppression remain manual checks.
No commit/push/publication is authorized by the player's testing pass alone.
The local `1.0.1.64-beta.1` follow-up fixes weather-only authoring. Build 63's
server weather checks bypassed the Binder's biome compiler, whose exclusion
list did not yet include weather. As a result weather/storm was incorrectly
resolved as a biome ID despite grammar acceptance. The biome compiler now
selects actual biome-category entries after full-book grammar validation;
controllers retain their separate handling. This avoids repeating the same
missed-exclusion bug as more non-biome page families are ported. The operator
weather fixture now calls that compiler before backend creation. All six
weather-only symbol lists compiled and created their expected weather states
on a fresh dedicated server. Build/diff checks pass. The server shut down
cleanly and its disposable world was removed; player GUI validation remains.
The local `1.0.1.65-beta.1` spawn correction traces non-Cave arrival columns
from maximum build height, inspecting actual fully generated chunk blocks.
The configured Flat-layer shortcut could select ground below later authored
terrain, and the old heightmap-only path did not explicitly ensure an exposed
surface. The new path stops at the first fluid/leaves/collision, requires dry
footing and headroom, and otherwise tries the next column rather than searching
below an obstruction. Chunk lookup is cached per column and a mutable position
avoids per-air-block allocations. A fallback platform goes above the actual
highest obstruction; empty Void retains floor Y=63. Surface footing accepts
leaves, rejects fluid-bearing floors, and checks build/border bounds.
Stored non-Cave Star Fissure arrivals also use the surface search rather than
accepting old underground pockets. Cave terrain keeps its Y=64-down search.
Exact bound Linking Books and the general fissure Overworld-return anchor
search are not redirected to the sky. A read-only surface probe command helps
validate the chosen column/nearby surface (chunk generation is possible).
Build/diff checks pass. A disposable dedicated-server probe selected Y=4 on
plain Flat ground, Y=141 above leaves placed at Y=140, and a neighboring dry
column instead of descending below water added above those leaves. A larger
roof-fixture fill was rejected by vanilla because some target chunks were not
loaded; that fixture is not claimed as tested. The server shut down cleanly,
and its temporary world was deleted. Actual player arrival in the affected
Age and the unchanged Cave/Linking Book paths remain manual checks.
## Verification of this first slice
The 1.21.1 `compileJava` and `build` tasks passed offline after the backend