Port libraries, crystal portals and instability decay to 26.3 beta
Build / build (push) Waiting to run

This commit is contained in:
dnorberg committed 2026-11-10 04:14:59 -05:00
1 parent 35980338e1
commit d2904eaa8d
47 files changed
+3438 -71

No files matched your search

+157
View File
@@ -2169,3 +2169,160 @@ Server stopped and temporary world removed. Manual checks: Q/inventory toss,
death/Disarm, broken stand, full-inventory delivery/retrieval, open-book visual
orientation, motion, ownership/pickup, component preservation and restart. Root
1.21.1 remains unchanged and #114 stays open until both tracks are complete.
## Handheld Link Panel resource policy
`1.0.1.116-beta.1` adapts root WritingInkService and the configurable
`writing.link_panel_ink_cost` (2 default, 1–16 allowed). The item delegates the
server transaction to the service; Writing Desk cost reads also use its shared
getter. Mixer cost remains independently fixed at one ink per Link Panel.
Unsynchronized LOCAL config is not consulted for client affordability prediction;
the server validates both inputs and constructs outputs before mutation.
Build passed. No additional server fixtures were added; the user offered manual
validation. Check default/custom cost, insufficient ink, final bottle, both hands,
stacked/full-inventory inputs and dedicated-server cost differing from the client.
Root 1.21.1 is unchanged; no commit/push/publication was performed.
## Library discovery port
`1.0.1.117-beta.1` ports MystcraftLibraryFeature from the 1.21.1 implementation,
using the shared schematic/loot table and final five-stand orientation. Natural
placement runs after all vanilla/authored decoration via the Age feature wrapper,
with the same bounded footprint, candidate RNG/spacing, slope/footing and obstruction
rules. The wrapper now applies to every runtime Age; Cave terrain disables libraries
as in root. Existing chunks are not rewritten and vanilla Overworld generation is
not modified.
A separate saved writing map holds the original symbol list for AGE_ONLY loot,
avoiding expansion of the already-large backend index record. Creation stores it
before constructing/publishing the level; the wrapper captures an immutable list
and serializes library flags/list in its codec. Reload reconstructs the same pool.
LEGACY is the default; AGE_ONLY uses known distinct written IDs. Full random-page
policy integration remains pending. The snapshot list does not alter generation
traits or the book's original contents.
Added operator placement, session-only spacing override, cheap candidate reporting,
current-chunk probe/loot inspection and a locator restricted to loaded nearby chunks.
The locator checks a clear, dry, footed aisle; it never performs a mass remote
chunk-generation search. Explicit test placement checks empty space and entities.
Build passed; shared schematic/Sealed Notebook loot packaging verified. Dedicated
server startup passed. The user offered manual testing, so generation/loot checks
were handed over before running them. Temporary server stopped and world removed.
No new test fixture, commit or publication. This is a substantial discovery-system
slice; instability/recovery, crystal portals and remaining optional integrations
remain the other large parity gaps.
## .118 crystal portal gameplay port
The player confirmed .117 library generation and retracted the missing-library report.
Ported the 1.21.1 Book Receptacle, bounded crystal flood/tension network, portal
surface ownership and orientation, activation protection checks and rollback, removal
cleanup, queued transport and cooldown. Reused existing crystal, portal and receptacle
assets, recipe and progression node. The book renderer retains all final six mounting
orientations and explicitly clears its extracted presence when the book is removed.
Player traversal uses existing Linking/Descriptive Book paths, with portal audio
precedence. Descriptive arrival resolution is now shared; no separate portal offset
or generated exit position is introduced. Existing Intra-Linking, Disarm, momentum,
client Age acknowledgement, Return Link configuration and progression remain in force.
Non-player traversal uses modern TeleportTransition, collision/permission checks,
and the same landing resolver. A shared Disarm helper supports container/horse/mob
inventory and equipment without requiring the old protected-method mixin.
Book and owner pointers use modern ValueInput/ValueOutput and update packets. Startup
waits for loaded frame chunks; periodic bounded reconciliation retains root's cleanup
of disconnected cells, staggered every 200 ticks per holder. The surface remains the
animated facing-only fallback, tinted to the saved destination sky. Live portal views
are still optional integration work, not advertised as ported.
Build/resources and dedicated-server startup passed. A command-seeded 3x3 opening
verified exact-coordinate entity transport, persistence and traversal after restart,
and support-removal teardown/open-book recovery. Player interaction and client visuals
are handed over for manual testing. Temporary server stopped/world deleted; no new
permanent GameTest, commit, push or publication. Version: 1.0.1.118-beta.1.
## .119 instability foundation and status-effect gameplay
The player passed .118. Ported the complete five-deck catalog and deterministic
provider selection from 1.21.1. Separate modern codec SavedData freezes new Ages'
scoring contributions, seed, selected providers/levels and an enabled flag. Older
Ages remain neutral. Creation-time scoring currently covers Bright Lighting,
Accelerated, all three Corrupted sizes, ignored Cave weather/celestial modifiers,
excess/biome-forced structures and additional suns. Original page indices are retained.
Corrupted Pages now bind and contribute their Legacy costs; existing redacted rendering
is reused. The new Abandoned Camps structure follows the same modern-structure costs.
Adapted the bounded occupied-Age scheduler and the 18 local/global/general/hostile
potion providers, preserving 1.21.1 defaults, effect durations, level-based amplifiers,
sky exposure and Survival/Adventure targeting. The owned-instance lease system revokes
only Rivencraft's effects on exit/disable/shutdown, preserving other sources. Runtime
uses already-loaded chunks and shared per-Age work budgets; failed providers receive
a temporary quarantine. The config retains server ownership and can disable providers
without rerolling stored plans.
OP-only `/rivencraft_port instability` supplies status/breakdown, persistent enabled
control, session-only score override/reset and one-provider pulses. Pulse output tracks
successful application separately from attempted work so event-cancelled effects are
not reported as applied. No scoring data is sent to player book/Binder UI. Unimplemented
hazards stay selected with an explicit status; they are never replaced or rerolled.
Build/startup passed. Temporary dedicated-server checks verified neutral creation,
provider selection at a test score, Poison application/duration, immediate owned-effect
revocation, unrelated stronger-effect retention, local-versus-global roof behavior,
enabled-state persistence and test-score reset across restart. Server stopped/world
deleted; no new permanent GameTests, commit, push or publication. Manual checks cover
authored Corrupted/Accelerated/lighting score contributions, automatic player-occupied
scheduling, Survival/Creative policy, exit cleanup and hostile buffs. Version .119.
Still pending: full writing grammar recovery/penalties, live block abundance, decay,
lightning/explosions, meteors, burning and erosion, plus optional integration parity.
## .120 colored decay gameplay
The player passed .119. Ported the 1.21.1 DecayBlock, four provider handlers and bounded
frontier persistence. Reused all four active 16x16 block textures/models and the
protected-block tag. Modern adaptation uses BreakBlockEvent, Value/codec SavedData,
ChunkPos accessors, loaded-chunk lookup and server-side magic damage for White.
No decay item/recipe/drop is added.
Provider metadata now distinguishes world-mutating handlers, so world_mutation gates
decay independently of potion policy. Defaults remain enabled/four neighbor attempts,
one successful conversion per call under the shared scheduler budget. Conversion
hardness/air/color odds, infrastructure/BE/fluid/unbreakable protection, positioned
fake-player claim events and placement rollback are retained from 1.21.1.
The instability record adds an optional first resolved spawn, preserving old records'
scores/plans and enable flags. Shared Descriptive Book landing resolution records it
once; decay protects the same +/-4 horizontal and -2..+4 vertical region as root.
Older Ages record this on the next book/portal arrival; OP status exposes the point.
Frontiers and attempt counters live in each Age, capped at 1,024 positions per color.
Added OP-only `/rivencraft_port instability decay <color> [1..32 attempts]`, reporting
actual changes and nearby tracked positions. Existing generic pulses now report block
as well as entity actions. Invalid input/out-of-Age commands use proper command errors.
White block contact damage retains root's decay/world_mutation policy; disabling an
Age scheduler stops spread but does not remove existing decay or alter its block form.
Build/startup passed. All four colors seeded/spread through bounded command pulses.
A full restart retained each frontier and advanced attempts from 32 to 40 while Red
continued growing. Bedrock and water generated empty frontiers, and the saved Age
disable blocked further provider changes. Textures verified 16x16. A stationary NoAI
sheep did not exercise the stepping hook, so White stepping damage remains a player
manual check, alongside visuals, arrival protection, normal scheduler/claim integration.
Server stopped/test world removed; no permanent tests, commit, push or publication.
Version: 1.0.1.120-beta.1. Other hazards, full writing recovery and live abundance
profiling remain pending.
## .120 release sign-off
The user passed .120 and authorized commit, push and publication of the accumulated
.116–.120 work. Both target builds passed. Consolidated release notes distinguish
implemented libraries, fallback crystal portals and partial instability/decay from
remaining gameplay and optional-integration parity. Tracking issues #98/#102/#104
remain open; #114 still requires the matching 1.21.1 fix.