Port Age lighting and animated sky styles to 26.3 beta
Build / build (push) Canceled after 0s

This commit is contained in:
dnorberg committed 2026-11-02 15:49:58 -05:00
1 parent 48fbae9be9
commit a7a73d3c17
23 files changed
+967 -24

No files matched your search

+141 -1
View File
@@ -5,7 +5,7 @@ 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, selected material/vegetation/structure features, and
independent Age weather. Celestial/lighting systems, instability, crystal
independent Age weather and lighting. Celestial 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.
@@ -558,6 +558,146 @@ 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.
The local `1.0.1.66-beta.1` slice ports Normal, Dark, and Bright Lighting.
One lighting page is accepted per book and its choice is saved in the Age
index before catalog publication. Missing lighting currently defaults to
Normal; random lighting selection and Bright's instability cost await those
systems' later ports. Lighting pages should no longer be tinted red.
Normal surface Ages retain the Overworld type. Dark removes skylight with
ambient light 0.0; Bright uses ambient light 0.25 and retains surface skylight,
matching 1.21.1. **Cave + Bright is supported:** it has ambient light 0.25
without skylight. Cave Normal/Dark use no skylight and ambient light 0.0.
Placed light sources continue working; ambient light is not a placed light
level or a guarantee that monsters cannot spawn.
The build derives three registered dimension-type variants from the current
vanilla Overworld JSON, changing only has_skylight and ambient_light. This
preserves native attributes/timelines and synchronizes types through the
normal login registry exchange; no dynamic client registry mutation is used.
These variants currently use the vanilla type, not custom runtime changes to
the host Overworld dimension type made by another data pack.
Saved lighting survives reload, reseed, restart and retirement rollback.
Existing non-Cave Ages without a choice remain Normal; old Cave Ages now use
the no-skylight baseline. Use new Ages for clear visual comparisons and avoid
confusing previously lit chunks with the current dimension settings.
Manual check: create Normal/Dark/Bright surface books and Cave + Bright;
compare an unlit enclosed room, check placed torches, revisit/restart and
confirm the Overworld stays unchanged. Operator diagnostics:
`/rivencraft_port age create_lighting <name> <seed> <mode> <terrain>` and
`/rivencraft_port age lighting_probe <name>` report the registered type,
skylight and ambient light. Test JAR: `1.0.1.66-beta.1`.
The local `1.0.1.67-beta.1` correction supersedes slice 66's Bright rendering:
26.3's lightmap uses `minecraft:visual/ambient_light_color`, not the old
dimension `ambient_light` field. Bright surface/Cave types now set that native
attribute to white and ambient_light to 1.0. Cave still has no skylight.
Bright Ages reject natural/chunk-generation hostile spawns independently of
stored light levels. Existing mobs, passive mobs, spawners, eggs, commands
and special-event spawns are not deleted or globally disabled. Actual block
light propagation and plant light requirements are unchanged. Existing Bright
Ages receive the corrected registered types after restart; no new Age needed.
Planned color-page target: **ambient light color**, alongside sky/celestial
colors. Reuse the native 26.3 attribute for authored tints; Bright defaults to
neutral white until the color-page port. This does not enable color pages yet.
The local `1.0.1.68-beta.1` replaces slice 67's special spawn veto with actual
effective ambient brightness. The spawn event handler is removed. Bright's
combined light-engine reading now has a minimum of 15 on server and client,
including after sky darkening. Its white rendering attribute is retained.
Vanilla darkness checks therefore reject light-sensitive monsters naturally;
light-ignoring mobs, spawners and other spawn sources use their native rules,
not Rivencraft exemptions or bans. This does not remove existing mobs.
Ambient light is not stored as emitted block light or fabricated skylight.
Consumers of combined brightness, including plant light checks, now see the
ambient contribution. Normal/Dark and non-Rivencraft dimensions are unchanged.
Cave Bright remains without skylight. Existing Bright Ages update on restart.
This supersedes slice 67's statement that crop light checks are unchanged.
The local `1.0.1.69-beta.1` slice seed-completes missing weather and lighting
pages for newly bound books, including Link-Panel-only random Ages. Explicit
pages take precedence. Cave weather remains Off, while Cave lighting can
still choose Bright. Old Ages retain their saved choices; they are not rerolled.
The supported pool uses the 1.21.1 Legacy-rank rule: Normal is rank 1, other
choices rank 2. Lighting weights are 3:1:1 for Normal/Dark/Bright; weather
weights are 6:1:1:1:1:1 for Normal/Fast/Slow/Off/Always/Storm. The common weight
is derived from the supported pool size. Unported Cloudy/Rain/Snow modes are
not selected. Independent seed salts keep a missing lighting roll unchanged
when weather is explicitly written, and vice versa. This matches the rank
policy, not the exact 1.21.1 seed stream/pool. No random feature list, sky or
celestial choices are added by this slice.
`/rivencraft_port age create_random <name> <seed>` uses the same environment
resolver and logs its frozen plan. `/rivencraft_port age environment_probe
<seed> <terrain>` inspects deterministic defaults and explicit Storm/Bright
precedence without creating an Age. Other explicit operator fixtures keep
their Normal defaults to isolate the feature under test.
For manual checking, create several Link-Panel-only books and verify weather/
lighting varies across Ages and persists on revisit/restart. Then author an
explicit Normal Weather + Normal Lighting book, and a Cave + Bright book.
Include explicit Normal pages when comparing terrain without random lighting
or weather changes. Random blocklist policy and instability remain pending.
The local `1.0.1.70-beta.1` slice ports the Overworld, Nether, and End Sky
pages. One sky style is accepted per book and persisted independently of
terrain, weather and lighting. Missing sky pages still use Overworld; random
sky selection is not part of this slice. Static Sky remains unsupported/red
until its Legacy animated renderer is ported, rather than being replaced by
a flat gray backdrop. Color and individual celestial pages are also pending.
Nether Sky uses the native no-sky backdrop and reddish fog; End Sky uses the
native End backdrop. Neither changes dimension height, coordinate scale,
terrain, Nether water/bed rules, or enables an End dragon fight. All lighting
choices work with these styles, including Cave + Bright. Bright's render
attribute and effective ambient level 15 are retained on each variant.
The registered variants derive the vanilla Overworld type and preserve its
gameplay attributes. Non-Overworld skies use a derived day timeline without
the three sky/fog/cloud tint tracks, retaining native gameplay schedules and
illumination while avoiding Overworld day tint on those backdrops. Their
cloud color is transparent. Biome/weather fog modifiers still apply. Types
sync through normal registry login; no new rendering dependency is required.
Sky choices survive reload/reseed/restart and retirement rollback. Old Ages
without a sky choice retain Overworld style.
For visual checks, author Plains + Normal Lighting + No Weather with each
sky page; compare the sky/fog and verify the same terrain and normal bed/water
behavior. Then try Cave + Bright + End Sky and revisit after restarting.
Static Sky should remain red. Operator fixtures:
`/rivencraft_port age create_sky <name> <seed> <sky> <lighting> <terrain>` and
`/rivencraft_port age sky_probe <name>`. Use new books to author a sky choice;
this does not rewrite the sky choice of already-bound books.
The local `1.0.1.71-beta.1` slice adds the previously pending Static Sky.
Its client renderer adapts the 1.21.1 Legacy-style background: six independent
48×48 noise faces, default gray tint `#929292`, and noise intensity 65–224.
The noise updates every two world ticks. A single small dynamic texture and
cached cube replace thousands of per-cell draw vertices; resources are closed
with the sky renderer. No artwork or rendering dependency is added.
Static Sky is now supported rather than red, and persists through the same
Age index as other sky styles. Four registered lighting variants retain the
existing terrain/gameplay rules. Their native skybox is NONE (no End flashes);
only the extracted client state schedules the custom background sky pass.
Animation state resets between frames and does not consult a different live
world while rendering. Color pages, celestial pages, and random sky selection
remain pending.
Build and disposable dedicated-server creation/restart checks passed for
Static + Normal + Standard and Static + Bright + Cave. These do not validate
client rendering. For manual testing, bind a new Static Sky + Normal Lighting
+ No Weather book, look around/above/below for animated gray static, then
visit an Overworld/End Sky Age and return to check there is no sky-state leak.
Revisit after restarting. Also try Static Sky + Cave + Bright (look outside
terrain or in spectator mode). The fixture accepts `static` as its sky value.
The dedicated test server was stopped and its temporary world deleted.
Changes remain local; no commit/push/publication was requested.
From the repository root:
```sh