File Details
GlymeraIrrigation-5.0.0.jar
- R
- Jun 21, 2026
- 14.49 KB
- 510
- 0.5
File Name
GlymeraIrrigation-5.0.0.jar
Supported Versions
- 0.5
GlymeraIrrigation — Changelog
v5.0.0 (2026-06-21)
Changed (performance — no behaviour change)
- Complete rewrite of the cost model from "poll the whole loaded world on a timer" to change-driven. v1–v4 scanned every loaded chunk every 30 s and re-applied state to all tracked farmland every 10 s, so cost scaled with the number of LOADED CHUNKS regardless of activity — on a world with many artificially-loaded chunks this spiked the server tick by 60–121 ms ("Task took" warnings / visible stutter).
- Farmland discovery is now gated by each 32³ block-section's engine change counter (BlockSection.getGlobalChangeCounter): unchanged sections cost a single counter read and are skipped, so finding new farmland is proportional to chunks that actually CHANGED, not to chunks that are loaded. A rotating cursor with a per-pass time budget bounds per-tick cost.
- Maintenance (re-watering / drying) runs only over the known farmland chunks; the expensive water scan is throttled and its wet/dry result cached, and the per-pass re-assert is idempotent (watered state is only re-applied when a block is not already freshly watered).
- Player block actions (till soil / place or remove water / break) trigger an instant local re-check, so initial watering happens in under a second instead of waiting for the scan cycle.
Fixed
- Drying after water removal now hands control back to native Hytale: the watered flags are cleared, the block's decay is re-armed at the asset's native lifetime (Soil_Dirt_Tilled Lifetime.Min), and a native tick is scheduled at that decay time — so the engine itself reverts the block to Soil_Mud_Dry on the vanilla timer. The dry look is applied immediately.
Result
- 0 "Task took" warnings (was 60–121 ms spikes). Steady-state pass cost ~1–3 ms even with
1000 loaded chunks, and the cost is now independent of the loaded-chunk count (a world with many open chunks but no farmland costs microseconds). Roughly 4–5× less CPU over time in testing, with the advantage widening as more chunks/farmland are loaded.
Unchanged
- Irrigation radius (4 blocks), watered-state persistence across chunk reload and server restart, the "only dehydrate our own blocks" behaviour (watering-can fixes remain), and the native dry-out lifecycle. No config migration. Runtime is log-free.
Notes
- Server restart required to load the new JAR.
v4.0.0 (2026-05-30)
Changed (performance — no behaviour change)
- The 30-second discovery scan (which previously scanned every loaded chunk for farmland and water in a single server tick) is now amortized across many ticks in small bounded slices. This removes the once-per-cycle tick stutter on large farms.
- The water → farmland reverse lookup is now computed once per discovery pass and reused by every 10-second irrigation scan, instead of being rebuilt on every scan.
Fixed
- Hardened a restart edge case introduced by the amortized discovery: until the first discovery pass has fully completed after a restart, the irrigation scan now skips (instead of treating "no data yet" as "no water nearby"). This guarantees that already-watered fields — whose watered state is persisted by the game — are never wrongly dried out during the warm-up window. The per-block watered persistence mechanism itself (the external-water flag + watered-until time) is unchanged.
Unchanged
- Irrigation radius (4 blocks), watered-state persistence across chunk reload and server restart, and the "only dehydrate our own blocks" behaviour (watering-can fixes remain). No config migration.
Notes
- Server restart required to load the new JAR.
- Earlier versions (up to v3.0.0) were internal builds and were not separately documented.