GlymeraFarmWater

FarmWater brings Minecraft-style automatic crop watering to Hytale. Place water within 4 blocks of your farmland and it stays watered automatically. Works with source blocks and flowing water. No configuration needed – just install and farm!

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.