Public Access
Port seeded sky colors and Normal Time celestial controls to 26.3
Build / build (push) Canceled after 0s
Build / build (push) Canceled after 0s
This commit is contained in:
1 parent
a7a73d3c17
commit
38e40ddba3
27 files changed
+1516
-35
No files matched your search
@@ -1065,6 +1065,244 @@ the temporary server/world was deleted. Client animation, travel between sky
|
||||
styles, and restart appearance still require manual validation. No user world
|
||||
was modified, and nothing was committed, pushed or published.
|
||||
|
||||
## Seeded sky completion slice
|
||||
|
||||
`1.0.1.72-beta.1` completes missing sky controllers using the first seeded
|
||||
selection from 1.21.1 `AgeSkyProfile.random` (`0x534B5950524F464C` salt).
|
||||
Inherited and Overworld currently map to the same native Overworld style;
|
||||
the effective Overworld/Nether/End/Static weights are 2:1:1:1. This deliberately
|
||||
ports only style selection, not random colors or celestial-body lists.
|
||||
|
||||
The player book path and `create_random` fixture now share one environment
|
||||
record containing weather, lighting and sky. Explicit pages win. Separate
|
||||
seed streams keep controllers independent, including when one is supplied
|
||||
explicitly, and Cave weather remains Off. Existing Age index values/defaults
|
||||
remain authoritative; this does not reroll old Ages or reseeded Age skies.
|
||||
The one-purpose controlled fixtures keep their explicit Overworld defaults.
|
||||
|
||||
The environment probe checks repeatability and every explicit sky override
|
||||
with and without explicit lighting/weather. Manual seeds 0–11 and -1 covered
|
||||
all four sky choices, Cave and Void, without changing established weather/
|
||||
lighting results; signed-long boundary seeds also passed. Disposable-server
|
||||
fixtures created all four random styles plus Bright Static and an explicit
|
||||
Overworld override. Static survived unload/reload; Nether retained its saved
|
||||
style after reseeding to an End-selecting seed. All six choices survived a
|
||||
server restart. The server stopped cleanly and its temporary world was deleted.
|
||||
The port build passed (no unit-test sources are configured). Player rendering
|
||||
still needs validation of new book creation and travel. No user save is changed
|
||||
and nothing is committed or published.
|
||||
|
||||
## Shared colors and ambient-light target slice
|
||||
|
||||
`1.0.1.73-beta.1` adapts the 1.21.1 `AgeSkyProfile.ColorAccumulator` rules:
|
||||
Number 0–24 followed by Red/Green/Blue adds ten times that amount to one
|
||||
channel, White adds to all, Black subtracts from all, and final channels are
|
||||
clamped. Unnumbered colors use the same seeded index-salt approach. Color
|
||||
groups preceding Sky pages, or trailing the book, tint the sky. No colors
|
||||
means native rendering; omitted channels within an authored group are zero.
|
||||
The new port-only `lighting/ambient_color` target consumes the preceding group
|
||||
as ambient color instead. It appears in the existing Lighting creative tab
|
||||
and uses the shared procedural glyph/item compositor, not generated artwork.
|
||||
|
||||
Profiles are frozen in the Age index with native defaults, retained on reload/
|
||||
reseed/retirement rollback, and included in the full catalog. The catalog
|
||||
protocol is now 2; both peers need the matching beta. The client replaces its
|
||||
profile map before catalog acknowledgment, invalidates the current attribute
|
||||
cache and clears the map on disconnect. Age-only default-layer hooks apply
|
||||
the native sky/fog/ambient RGB attributes dynamically; vanilla dimensions are
|
||||
not changed. No runtime dimension registry mutation or RGB variant explosion
|
||||
is involved. Client sky state carries tint separately from the live world:
|
||||
Static cells use that tint, and the native End texture uses a color modulator.
|
||||
Native celestial rendering is otherwise unchanged; authorable bodies remain
|
||||
pending. Explicit ambient tints do not alter the effective Bright floor or
|
||||
fabricate block/sky light; native lightmap tinting controls their appearance.
|
||||
|
||||
Numbers are supported only before shared colors in this slice. Celestial
|
||||
numeric modifiers and variable Static resolution (#109) remain unsupported.
|
||||
Random sky color completion and deprecated legacy fixed-color aliases remain
|
||||
pending; this is not a claim of full celestial/color parity. Rendering needs
|
||||
manual checks of authored groups, all sky types, ambient color, no leakage on
|
||||
travel/reconnect, and persistence. Dedicated-server fixtures exercise known
|
||||
RGB results, zero/upper amounts, clamping, seeded repeatability, rejection of
|
||||
dangling numbers, and a catalog encode/decode round trip. All four colored
|
||||
styles and an uncolored native fixture restored correctly after restart with
|
||||
the expected sampled RGB attributes. The server stopped cleanly and its
|
||||
temporary world was deleted. Port build/static checks passed; there are no
|
||||
unit-test sources configured. Client rendering and live multiplayer sync
|
||||
remain manual checks. No commit, push, or publication was requested.
|
||||
|
||||
## Authored native day-cycle slice
|
||||
|
||||
`1.0.1.74-beta.1` ports Normal Time with Full/Half/Double/Zero Length modifiers,
|
||||
using the fixed values from the 1.21.1 symbol definitions. Number pages before
|
||||
Length apply the existing `CelestialPageValues` rule (`number × 0.08` days).
|
||||
Zero chooses a seeded time once and saves it. Missing Normal Time retains the
|
||||
native cycle. The strict interim grammar requires at most one Length preceding
|
||||
one Normal Time; broader ordered recovery and multiple celestial bodies remain
|
||||
separate work. Number targets other than colors and lengths are still unported.
|
||||
|
||||
The Age index persists a native-default day-cycle profile. Lifecycle load,
|
||||
reseed, retirement/rollback and catalog sync include it. Catalog protocol 3
|
||||
carries the new profile map; clients replace it before acknowledgment, clear it
|
||||
on logout and invalidate current attributes/sky brightness. Both peers need
|
||||
the same beta build. A small Age-only Builder mixin preserves native dynamic
|
||||
timeline ordering and weather layers, but supplies a read-only wrapped clock
|
||||
manager for this Age's timeline samples. Its clock instances are cached per
|
||||
definition, read profiles lazily (including during level construction), and
|
||||
delegate non-Overworld clocks untouched. No global clock mutation occurs.
|
||||
|
||||
Native day shading, sun/moon tracks, moon phase, and gameplay attributes in
|
||||
those timelines share the scaled sample. Zero has a constant integer sample,
|
||||
rate zero, and partial tick zero, preventing the prior stopped-time bounce.
|
||||
This does not accelerate blocks/entities, change the native `/time query`
|
||||
result, make a Nether/End/Static sky show bodies, or port custom bodies. Global
|
||||
time commands still affect moving samples. Authored RGB overrides and existing
|
||||
Bright/Dark behavior remain independent. Separate Sun/Moon, angle/phase/size/
|
||||
direction, eclipses, and randomized celestial completion are still pending.
|
||||
|
||||
Fixtures validate parser eligibility, known half/double/zero clock values,
|
||||
Number overrides, deterministic stopped time, and the shared catalog codec.
|
||||
At shared native time 18022 the sampled Full time was 18022 (sky light 4),
|
||||
Half 36044 (sky light ~13.92), Double 9011 (sky light 15), and Zero stayed at
|
||||
11611 with its unchanged sun angle. An unmodified Age matched Full exactly.
|
||||
Zero survived unload/reload and reseeding without rerolling; the color fixture
|
||||
retained its RGB values. All authored profiles, numeric endpoints 1/24, zero
|
||||
override, native fallback, and the color fixture restored after server restart.
|
||||
The final port build passed (no unit-test sources configured). Test servers
|
||||
stopped cleanly; their temporary world was deleted. Visual/client reconnect
|
||||
checks remain manual. No commit/push/publication is performed without an
|
||||
explicit request.
|
||||
|
||||
## Native cycle phase and direction slice
|
||||
|
||||
`1.0.1.75-beta.1` extends the existing day-cycle profile with a saved native
|
||||
clock origin, phase offset and direction. Phase conversion is adapted directly
|
||||
from 1.21.1 `AgeDimensionService.applyInitialCelestialPhase`: the symbolic
|
||||
angle is measured from Nadir, then shifted 18000 native ticks. Rising/Zenith/
|
||||
Setting/Nadir give 0/6000/12000/18000, and preceding Number pages override a
|
||||
Phase using the `CelestialPageValues` 15-degree rule (24 wraps to 0). Length
|
||||
and phase remain independent. Explicit phase starts at Age creation, not at
|
||||
the current Overworld position divided by Length.
|
||||
|
||||
Moving samples are `direction * (nativeTicks - origin) / period + phase`;
|
||||
Counterclockwise reverses the native day timelines, including moon-phase and
|
||||
gameplay tracks. Stopped samples remain constant and prefer written phase,
|
||||
otherwise the previous saved seeded stopping time. Existing profiles without
|
||||
the new optional fields retain their former behavior. Saved/profile lifecycle
|
||||
and catalog synchronization already carry the extended codec. Catalog protocol
|
||||
4 requires matching client/server beta versions. No registry types, textures,
|
||||
or global clock mutations are added. Angle/size/per-body color and multiple
|
||||
celestial rendering remain pending, as do eclipses and random celestial
|
||||
completion. #110's Time/Normal Length naming changes remain separate work.
|
||||
|
||||
The interim grammar accepts at most one Length, Phase and Direction preceding
|
||||
one Normal Time; numbers currently target Color/Length/Phase only. Fixtures
|
||||
check all phase mappings at a shared origin, forward/reverse deltas, stopped
|
||||
behavior, parsing of the earlier three-field profile, and full catalog codec
|
||||
round trips. At native tick 1518, profiles sharing origin 496 and noon offset
|
||||
sampled 7022 forward and 4978 backward, with sun angles ~10.756° and ~349.244°.
|
||||
Zero Zenith stayed at 6000 / 0° / sky light 15; Zero Nadir stayed at 18000 /
|
||||
180° / sky light 4. Number 6 yielded sunrise; Number 24 yielded midnight.
|
||||
The reverse profile survived unload/reload; reseeding retained frozen midnight.
|
||||
All sampled profiles restored after a server restart, retaining their origins,
|
||||
direction and fixed phases; the old-style seeded Zero fixture also retained
|
||||
its saved stopping time. Build checks passed (no unit-test sources configured).
|
||||
The test server stopped cleanly and its temporary world was deleted. Rendered
|
||||
motion and reconnect behavior remain manual. No commit/push/publication is
|
||||
performed without explicit direction.
|
||||
|
||||
## Native orbital bearing slice
|
||||
|
||||
`1.0.1.76-beta.1` ports the four Angle pages and the existing 1.21.1
|
||||
`CelestialPageValues` number rule (15° per number, modulo 360). North/East/
|
||||
South/West map to 0/90/180/270. The interim grammar accepts one Angle before
|
||||
Normal Time, independent of Length, Phase and Direction. Missing Angle keeps
|
||||
the native orientation rather than enabling random-bearing completion.
|
||||
|
||||
The cycle codec adds an optional bearing defaulting to -1 (native). Existing
|
||||
origin/phase/direction defaults and lifecycle persistence remain unchanged.
|
||||
Catalog protocol 5 carries the extended profile; older peers must update.
|
||||
Extracted sky state carries/resets bearing. Native SkyRenderer's Y rotation
|
||||
for the shared sun/moon/star path uses the explicit value; the sunrise/sunset
|
||||
pose receives the corresponding delta from the native -90° body bearing, with
|
||||
balanced pose-stack restoration. No live-world lookup occurs during drawing.
|
||||
Colors, native geometry/textures, phase timing, illumination, and direction
|
||||
are retained. Angle changes only horizontal orientation, not altitude. Body
|
||||
counts/sizes/colors and eclipses remain pending; no extra rendering backend,
|
||||
asset or registry variant is introduced. #110 is deliberately not implemented
|
||||
as part of this port slice.
|
||||
|
||||
The port build passes (no unit-test sources configured), and the targeted
|
||||
PoseStack invocation signature was checked against the patched native class.
|
||||
Disposable-server fixtures exercise cardinal values, all 0–24 Number values,
|
||||
six-field profile fallback, and the complete catalog stream codec. All four
|
||||
frozen-sunrise fixtures sampled the same time 0 and sky light ~14.19; only
|
||||
their saved bearings differ. Number 3 gave 45°, Number 24 gave 0°. Unwritten
|
||||
bearing retained -1. East survived unload/reload; the 45° profile retained its
|
||||
bearing after reseed. Client rendering/glow alignment and travel isolation
|
||||
still require manual validation; server probes cannot prove the drawn result.
|
||||
All six explicit bearings and the native fallback restored correctly after
|
||||
restart. The test server stopped cleanly and its temporary world was deleted.
|
||||
No commit/push/publication is performed without an explicit request.
|
||||
|
||||
## Celestial-compatible missing-Sky fallback
|
||||
|
||||
`1.0.1.77-beta.1` restricts the missing-Sky fallback for celestial writing to
|
||||
the current renderer's compatible style, Overworld. Normal Time no longer
|
||||
inherits an unsuitable seeded Nether/End/Static background. The resolver
|
||||
also recognizes Sun/Moon intentions for future support without enabling
|
||||
those pages prematurely. Explicit Sky pages always win; no-celestial random
|
||||
selection, terrain, and independent weather/lighting streams are unchanged.
|
||||
No packet or saved-profile format changes are needed. Existing Ages retain
|
||||
their saved style; tests of the fix must create new Ages.
|
||||
|
||||
1.21.1 comparison: `AgeSkyProfile.compile` starts with inherited sky style;
|
||||
the bundled Age profiles all use the Overworld dimension type. Authored Sun/
|
||||
Moon selects `AgeEnvironmentCompiler.CUSTOM_SKY_EFFECTS`, whose renderer draws
|
||||
the body list after its background without a sky-style exclusion. Thus the
|
||||
bundled 1.21.1 paths already avoid this visibility regression, and no follow-up
|
||||
issue or root-code change is needed for them. This is not a claim about every
|
||||
possible third-party datapack profile.
|
||||
|
||||
The environment diagnostic checks missing/explicit Sky for Normal Time, Sun,
|
||||
and Moon, including both explicit-page orders, and verifies other environment
|
||||
choices are unchanged. The day-cycle fixture now supplies no Sky page and
|
||||
uses the same environment resolver as player books. Client creation/travel
|
||||
checks remain manual. Build and disposable-server creation checks passed:
|
||||
Normal Time without Sky selected native Overworld for seeds 0, 6 and 8,
|
||||
while the same seeds without celestials retained Nether, Static and End.
|
||||
Explicit-Sky precedence and independent environment choices passed the
|
||||
diagnostic checks, including Cave terrain. The server stopped cleanly and
|
||||
its temporary world was deleted. No commit/push/publication is performed
|
||||
without an explicit request.
|
||||
|
||||
## Normal Time sun size
|
||||
|
||||
`1.0.1.78-beta.1` ports Small/Normal/Large Celestial Size modifiers to the
|
||||
native Normal Time sun. Presets are 0.5×/1×/2×. An immediately preceding Number
|
||||
uses the root compiler's `0.25 + number * (2.75 / 24)` rule, covering 0.25×
|
||||
through 3×. Root Normal Time creates a size-modified sun and a 1× moon; this
|
||||
slice preserves that distinction rather than resizing both. Standalone Sun/
|
||||
Moon controllers, multiple bodies, per-body colors and eclipses remain pending.
|
||||
No random size completion is added yet.
|
||||
|
||||
`PortDayCycle` persists optional `sun_size`, defaults old profiles to 1×,
|
||||
validates the supported range and transmits it in catalog protocol 6. Size
|
||||
is extracted into the sky render state and multiplies only the native sun
|
||||
transform. Native texture/glow and rendering pipeline remain; no new assets
|
||||
or buffers are allocated. State resets/defaults prevent size leaking to other
|
||||
dimensions. Clock sampling, illumination and orbit bearing are unaffected.
|
||||
|
||||
The `create_size` op fixture freezes the sun at Zenith with Zero Length and
|
||||
omits Sky to exercise compatible completion. Diagnostic checks cover all
|
||||
25 numeric sizes, presets, older profile defaults, unchanged timing and
|
||||
catalog round trips. Disposable dedicated-server checks produced sizes
|
||||
0.5/1/2/0.25/1.625/3 with the same noon angle and sky light; reload, reseed
|
||||
and full restart retained them. Build passed. Visual size/glow alignment,
|
||||
unchanged moon, and travel isolation still require the user's client check.
|
||||
The server stopped cleanly and its temporary world was deleted. Nothing is
|
||||
committed, pushed or published without an explicit request.
|
||||
|
||||
## Verification of this first slice
|
||||
|
||||
The 1.21.1 `compileJava` and `build` tasks passed offline after the backend
|
||||
|
||||
Reference in new issue
Block a user