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

+210 -3
View File
@@ -4,9 +4,9 @@ This is an **experimental beta port** for issues #97–#104, not gameplay parity
with the Minecraft 1.21.1 release. The 26.3 backend persists separate Ages and
their seeds. Books, the Book Binder, and the Ink Mixer work, and the Binder can
author Standard, Amplified, Island, Flat, Void, or Cave terrain with supported
biome-distribution pages. Other terrain families, feature/material effects,
portals, and much of
the 1.21.1 gameplay remain unported. Use a test world and keep a backup; do not
biome-distribution pages, selected material/vegetation/structure features, and
independent Age weather. Celestial/lighting systems, instability, crystal
portals, and much of the 1.21.1 gameplay remain unported. 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.
The entries below record how the port was built, including earlier alpha-only
@@ -351,6 +351,213 @@ the arrival point (generally east/south), descend through the rift, and touch
the starfield to return. Re-enter after restarting; check that the same fissure
and its portal still work. A Cave Age checks that carving leaves the roof intact.
The local `1.0.1.55-beta.1` slice adds authored Villages, Mineshafts, and
Strongholds. Repeated pages (up to 32 per type) scale the registered placement
using the 1.21.1 frequency/spacing and ring-count rules. Copies are Age-local:
the Overworld's placements and biome source are not modified. Authored
structures can bypass their usual biome eligibility without changing the
terrain biome; their instability cost remains pending with the instability port.
Villages and Strongholds allow surface noise terrain and Flat, but not Cave
or Void. Mineshafts allow noise terrain including Cave, but not Flat or Void.
These pages do not accept Block/Fluid modifiers. Their ordered counts persist
in the feature plan. In books using these structure pages, unselected sets
from these three families are disabled; other structure families and random
feature selection remain later port work. Earlier books without this new
structure plan retain their existing native structure behavior.
For manual checks, bind a new Standard/Plains Age with Villages, Mineshafts,
and Strongholds, then use `/locate structure minecraft:village_plains`,
`/locate structure minecraft:mineshaft`, and
`/locate structure minecraft:stronghold` to inspect generated structures.
Compare one page with several copies in a different Age, and restart/revisit.
Flat/Plains with Villages and an otherwise incompatible surface biome with
Villages provide separate terrain and biome-override checks.
The local `1.0.1.56-beta.1` follow-up fixes authored structures outside their
normal biomes. Build 55 only bypassed the final biome check; 26.3's jigsaw
placement can reject a whole biome column earlier. The override now supplies
the generation context's biome predicate before either check, only for the
explicitly authored structures in that Age. Terrain/height/geometry rules and
unrelated structures keep their normal checks.
Test with a new Standard or Flat Age using a normally unsupported village
biome, such as The End, plus a Villages page. Multiple copies increase density.
Use `/locate structure #minecraft:village` rather than selecting only the
Plains variant: an override Age can choose other village styles. Old chunks
that already rejected their structure attempt are not regenerated; existing
build-55 Ages can also test the fix in previously unexplored chunks.
The local `1.0.1.57-beta.1` slice adds the remaining 1.21.1 authored structure
families: Nether Fortresses, Bastions, Trial Chambers, Buried Treasure,
Shipwrecks, Ocean Ruins, Pillager Outposts, Ruined Portals, Nether Fossils,
Ancient Cities, and Trail Ruins. It also enables the existing 26.3-only
Abandoned Camps page using Minecraft's registered camp set and variants.
All 15 supported structure-set pages share saved counts, biome overrides,
and repeated-page density scaling (up to 32 per type). Fortress and Bastion
sets reuse the separate 1.21.1 placement definitions; the combined vanilla
Nether set is disabled for authored structure plans so the pages stay separate.
Unselected supported families are gated in these plans. Already generated
chunks and Ages without an authored structure plan keep their existing path.
Only Villages/Strongholds support Flat; none support Void. Fortress, Bastion,
and Nether Fossils require Cave terrain. Villages/Strongholds, Buried Treasure,
Shipwrecks, Ocean Ruins, Outposts, Trail Ruins, and Abandoned Camps require
surface terrain. Mineshafts, Trial Chambers, Ancient Cities, and Ruined Portals
allow surface noise or Cave terrain. Physical terrain/height checks still apply
even when the authored page overrides biome eligibility. Instability penalties
and random selection of these features are not part of this slice.
For a quick in-game check, author a new Standard Age with Trial Chambers,
Trail Ruins, and Abandoned Camps. Use `/locate structure minecraft:trial_chambers`,
`/locate structure minecraft:trail_ruins`, and
`/locate structure minecraft:abandoned_camp_forest` to inspect actual generation.
Separately, test a Cave/Nether Wastes Age with Fortress and Bastion pages
(`/locate structure minecraft:fortress` and
`/locate structure minecraft:bastion_remnant`). Repeated pages and restart/
new-chunk generation remain useful checks. Structures can still fail when
their geometry or required terrain is unavailable.
The local `1.0.1.58-beta.1` slice enables Caves and Ravines feature pages.
They add carving to the chosen noise terrain (Standard, Amplified, Island,
or Cave); they are not aliases for the Cave terrain page. Flat/Void and
Block/Fluid modifiers remain unsupported, matching the 1.21.1 feature rules.
Authored paths retain 1.21.1's source range and seeded salts, using 26.3's
registered cave/Nether-cave/canyon carvers. Nether-biome sources select the
Nether cave carver and skip Ravines. The paths merge into the native carving
mask before Minecraft applies aquifer, replacement, and surface rules; no
second approximation carves raw air after terrain generation. Biomes are not
replaced. The page list is saved, and old plans default to no extra carving.
Duplicate pages are accepted up to 32 per type, but repeat the same seeded
pattern in 1.21.1; this port skips those redundant passes rather than multiplying
carving density. Random feature selection and instability remain pending.
New chunks only. For manual testing, author a Standard/Plains Age with one
Caves page and one Ravines page and inspect underground in Spectator mode.
Restart and explore more chunks. A separate Cave/Nether Wastes Age with Caves
checks the Nether variant without altering its biome distribution.
The local `1.0.1.59-beta.1` slice audits page presentation for the current port.
Each Symbol Page now reports whether its effect is implemented. Unported pages
have red-tinted item artwork and a red Binder page background, plus a red status
line. Supported pages retain their normal artwork. This indicates port
availability only: supported pages in an invalid order, terrain combination,
or excessive quantity are not individually tinted red. Link Panels are unchanged.
The stale Standard/one-Biome message is removed. Structure descriptions now
describe authored biome overrides rather than falsely requiring vanilla biome
eligibility. Material pages explain the immediate-before-feature requirement;
Flat/Caves/Ravines/Floating Islands descriptions reflect the current rules.
These overrides are specific to the 26.3 language file and do not change 1.21.1.
No new generation effect is introduced in this UI slice.
For manual validation, compare a working Villages or Caves page with an
unported celestial or lighting page in Creative inventory
and the Binder. Only the latter should be red; supported Block/Fluid modifiers
and biome controllers should stay normal even though they need other pages.
The local `1.0.1.60-beta.1` slice implements Poplar Trees, Fallen Poplar Trees,
Red Shrubs, and Shelf Mushrooms. They use the existing saved vegetation plan,
ordered attempts, surface-biome rules, and combined 32-vegetation-page limit.
They accept Standard, Amplified, Island, and Flat terrain, but not Cave/Void
or Block/Fluid modifiers. The four pages now show as supported, without a red tint.
Poplar Trees uses the vanilla red/orange/yellow leaf-litter tree variants with
their relative Dappled Forest weights and six attempts per page per chunk;
it does not also select spruce or fallen trees. Fallen Poplar Trees makes one
surface attempt per page, using the vanilla fallen-tree feature, decorators,
and sapling survival rules. Red Shrubs uses the vanilla patch placement.
All still require suitable ground and space; authoring does not bypass those
requirements, and existing chunks are not redecorated.
Shelf Mushrooms applies Minecraft's standing/fallen-log decorator to existing
log groups, not a new tree feature. It can decorate natural trees or logs from
earlier authored tree pages; no suitable logs means no mushrooms. The vanilla
side/age/spacing and water-avoidance logic is retained. Writes stay within the
current chunk and require valid support. Consecutive mushroom pages reuse the
host scan; adding trees invalidates the cached host list for subsequent pages.
For manual testing, bind a new Flat/Plains Age with Poplar Trees, Fallen Poplar
Trees, Red Shrubs, then Shelf Mushrooms. Check leaf colours, fallen trunks,
shrubs, and mushrooms on logs. The four pages should no longer be red. Restart,
revisit existing terrain, and explore new chunks to check persistence.
The local `1.0.1.61-beta.1` follow-up removes the inappropriate surface-terrain
and surface-biome gates from Shelf Mushrooms only. No tree page is required:
natural logs or generated log Tendrils/Spheres/other features are hosts on
any terrain, including Void and Cave, and in any biome. Other plants keep their
existing terrain/biome restrictions. For example, Void + Oak Log + Tendrils +
Shelf Mushrooms is valid authoring; there must still be exposed log faces.
The mushroom scan now considers log faces throughout the chunk height instead
of treating a connected tendril as a standing tree with a small base-height
decoration band. Placement retains native replaceability/water checks, valid
support, random age, a per-side chance, and spacing checks. It does not grow
hosts or continuously decorate player-built logs after chunk generation.
Test a new Void Age with the example pages and inspect tendril surfaces.
The local `1.0.1.62-beta.1` sound slice reuses the complete 1.21.1 sound manifest
and all six OGG files directly in the build. Successful Linking/Descriptive Book
travel now plays the normal, Intra-Linking, or Disarm sound at departure and
arrival, with the same modifier precedence and cloud bursts as 1.21.1. Failed
travel stays silent. Star Fissures also play their return sound after arrival,
instead of relying only on audio sent immediately before a dimension switch.
Portal and meteor sound events are bundled for their later gameplay ports;
this does not implement those systems. Binding still uses vanilla page audio.
Manual checks: normal book travel, Intra-Linking, Disarm, rejected travel, and
a Star Fissure return. Existing books/Ages do not need to be recreated.
The local `1.0.1.63-beta.1` slice ports the six active weather pages: Normal,
Fast, Slow, Off, Always, and Storm. One weather page is accepted per book and
its policy is saved in the Age's own data directory. Missing weather pages
currently use Normal; random weather selection is still part of the pending
random-trait port. Cave terrain forces Off, matching 1.21.1. Precipitation
still follows biome temperature and precipitation rules; a desert does not
start showing rain merely because Always or Storm is selected.
26.3 normally shares server WeatherData. Runtime Ages now use an isolated
native WeatherData instance with its own persisted rain/thunder timers. The
weather controller runs before the native cycle, allowing vanilla rendering,
lightning, snow and client dimension-specific packets to handle the result.
Fixed weather is refreshed before its timers expire; Fast and Slow use the
1.21.1 duration ranges and preserve saved timers on reload. Overworld weather
and other Ages are not changed. The vanilla `/weather` command still targets
the server's global weather, not the independent Age policy.
Operator diagnostics: `/rivencraft_port age create_weather <name> <seed> <mode>`
creates a Flat test Age; `/rivencraft_port age weather_probe <name>` reports
its policy, rain/thunder state and timers, data independence, and global state.
For manual testing, bind separate Storm/Always/Off books with Plains, compare
the Overworld, revisit and restart, and check that Cave + Storm remains dry.
The six weather pages should no longer be tinted red. Existing Ages get a
Normal independent cycle; author a new book to select another policy.
The local `1.0.1.64-beta.1` fix corrects the Binder's biome compiler: it now
positively selects biome-category pages instead of treating every page not
in an exclusion list as a biome. Weather pages no longer trigger an unknown
biome lookup. The weather fixture command now exercises the same page compiler
before creating an Age, covering the weather-only symbol list used by a Link
Panel + Storm book. Existing Binder contents can be reused after updating.
The local `1.0.1.65-beta.1` spawn correction removes the Flat-layer shortcut
and heightmap-only choice for non-Cave Descriptive Book arrivals. The search
starts at the actual maximum build height and traces each nearby column down
to its first colliding block, leaves, or fluid. A column without safe dry
footing/headroom is skipped instead of descending through its roof or water
into an underground pocket. Leaves are valid footing; fluids are not.
This also revalidates a stored Star Fissure arrival from above on non-Cave
terrain. Cave terrain retains its Y=64-downward search, and bound Linking
Books retain their exact coordinates. If no natural surface is safe, the
safety platform is placed above the actual highest obstruction (or floor
Y=63 in an empty Void), never buried below it. Plain Flat terrain still lands
on its ground, not an artificially elevated platform. No new Age is required.
Operator-only `/rivencraft_port age surface_probe <name> <x> <z>` reports the
actual highest obstruction and a safe nearby surface without creating a
platform or teleporting. It can generate chunks while inspecting the region.
From the repository root:
```sh