HAARP Weather Control

HAARP Weather Control is a Hytale command mod that lets you instantly change and control in-game weather conditions on demand.

File Details

HAARP-3.0.3.jar

  • R
  • Apr 30, 2026
  • 13.75 KB
  • 37
  • Early Access

File Name

HAARP-3.0.3.jar

Supported Versions

  • Early Access

# HAARP Weather Control — Changelog

## v3.0.3 — Per-Player Attribution Fix + Hygiene

### Bugfix: per-player cooldowns now actually work

Found and fixed a long-standing silent bug. When a player ran `/haarp 1`
(or any weather-program command), the mod would silently treat the
trigger as if it came from console:

- Per-player cooldowns shared one global bucket (so every player on a
  server was effectively gated by anyone else's recent activation)
- The `/haarp status` display always showed "Activated by: Console"
  instead of the actual player's name

Root cause: HAARP's `extractPlayer()` method relied on a direct cast
(`(Player) context.sender()`) gated by an `instanceof Player` check.
But Hytale Updates 1-2 (early 2026) changed the command-sender API so
that `Player` no longer implements `CommandSender`. The `instanceof`
check has been silently failing since then, and `extractPlayer` has
been returning null for every command.

The bug existed in v3.0.0 through v3.0.2 — it just produced no
exceptions, so nobody noticed. v3.0.3 replaces the cast with multi-
path reflection: it tries the legacy direct cast first (still useful
on older Hytale builds), then falls back to common PlayerRef
deref accessor names (`get`, `getPlayer`, `deref`, `value`,
`resolve`). Whichever matches your runtime Hytale class wins.

### Hygiene pass

Same documentation/metadata polish I've applied to Project Sakura
v1.4.1 and Structure Atlas v1.1.2:

- `Description` is now version-agnostic — the previous text hard-coded
  "v3.0.2 —" as a literal prefix and contained a "Verified against
  latest Hytale API" claim that hadn't aged well (the cast bug
  outlived the verification). New description describes what the mod
  does, not which version you're looking at.
- Author `Url` and `Website` updated from generic CurseForge homepage
  to the specific profile and mod page URLs.
- New `CHANGELOG.md` (this file) covering the full v1.x → v3.x
  history.
- New `CURSEFORGE_DESCRIPTION.md` and `CURSEFORGE_RELEASE_NOTES.md`
  for paste-ready CurseForge updates on every future release.
- New `build_haarp_jar.py` script — auto-reads version from manifest,
  workspace-relocatable, outputs to `releases/haarp-plugin/`. No more
  manual sources.txt editing.
- New dedicated `releases/haarp-plugin/` directory; v3.0.3 staged
  there cleanly. Older built JARs continue to live in `build/` for
  archival.

### What didn't change

- The `WeatherResource.setForcedWeather()` reflection chain — it
  still works exactly the same as v3.0.2
- 14 weather programs and their cooldowns — same content, same IDs
- Chat colours and command UI — same colour-coded menu

---

## v3.0.2 — Hytale API Verification Pass

Confirmed the `WeatherResource` reflection chain still resolves
against the then-current Hytale build. Documentation refresh.

---

## v3.0.1 — Quick Fix Patch

Minor stability fixes after v3.0.0's launch.

---

## v3.0.0 — 14 Weather Programs

Major content release. Expanded from earlier versions to a full menu
of 14 themed programs:

1. Light Rain
2. Clear Sky
3. Light Fog
4. Heavy Rain
5. Thunderstorm
6. Dense Fog
7. Dust Storm
8. Blizzard
9. Aurora Borealis (best at night)
10. Electrical Storm
11. Acid Fog
12. Radiant Clear
13. Blood Moon (best at night)
14. Void Storm

Each program has its own duration, per-player cooldown, and
description. The /haarp menu is colour-coded — green for ready
programs, red for ones currently on cooldown, with night-best programs
called out when invoked during daytime.

The `/haarp status` and `/haarp cancel` commands let you check the
active program or end it early. `/haarp help`, `/haarp programs`, and
numeric activation (`/haarp 1` through `/haarp 14`) round out the
interface.

Internally, this release introduced the `WeatherResource` reflection
chain: navigating from `World → EntityStore → Store → WeatherResource
→ setForcedWeather(weatherId)` to override Hytale's active weather
directly. This pattern was later adopted by Turning Seasons for its
seasonal weather rotation.

---

## v2.x — Foundation Releases

v2.0.0 through v2.2.0 built out the command interface, time-of-day
display, and the weather-resource reflection scaffolding that v3.0.0
expanded into the full 14-program menu. Detailed per-version notes
not preserved.

---

## v1.x — Earliest Releases

v1.0.0 was the initial public release with a small set of weather
toggles. Detailed notes not preserved.