Overview
Dynamic, zone-scoped weather and visual tint control for Hytale servers.
Version: 1.0.0 · Manifest ServerVersion: 2026.02.18-f3b8fff95
License: Premium - one key per server. See
Runtime config:
Main command:
License: Premium - one key per server. See
mods/HyWeather/license.json.Runtime config:
mods/HyWeather/config/HyWeather_ServerConfig.jsonMain command:
/hyweather (aliases: /weatherui, /hywx)
Quick Reference
- Plugin class:
com.hyweather.HyWeatherPlugin - Runtime model:
com.hyweather.WeatherRuntimeConfig - Command handler:
com.hyweather.commands.WeatherConfigCommand - Weather assets:
Server/Weathers/(base + generated variants)
What HyWeather Does
HyWeather continuously selects forced weather per world using a zone-scoped profile, then resolves and applies a visual variant for that same weather decision. Weather behavior (dynamic cycle, event chance, weights, interval) is independent from visual tint settings (themes, custom hex, gradients, opacity, sky ramp, light brightness).
- Behavior layer: pick calm/event weather by weighted profile.
- Visual layer: resolve vanilla/preset/custom variant for the chosen weather.
- Apply layer: force weather on world + retry visual apply while assets warm up.
Core Design Rules
- Zone isolation: edits apply to selected zone key only (
default,zone1-zone4). - Deterministic fallback: if a variant is not ready, HyWeather falls back to base weather and retries.
- No per-tick UI rebuild spam: UI uses event-driven applies and state updates.
- Config survivability: missing config sections are auto-merged on load.
Code Map
| Area | Primary Methods | Why It Exists |
|---|---|---|
| Dynamic cycle | tickDynamicWeather, pickWeightedWeather | Periodic weather selection that respects profile event chance and weights. |
| Zone resolution | resolveZoneForWorld | Keeps weather/profile lookup deterministic with explicit precedence. |
| Visual resolution | resolveVisualWeatherId, ensureCustomVariant | Ensures all apply routes use one consistent resolver path. |
| Config IO | loadRuntimeConfig, saveRuntimeConfig, pollRuntimeConfigChanges | Live config updates without restart. |