GlymeraHUD

Reposition any HUD via /ghud sliders. Works with any plugin, no code changes needed. Server-side only.

File Details

GlymeraHUD-3.0.0.jar

  • R
  • May 30, 2026
  • 16.05 KB
  • 0
  • 0.5

File Name

GlymeraHUD-3.0.0.jar

Supported Versions

  • 0.5

GlymeraHUD — Changelog

3.0.0

Complete rewrite. GlymeraHUD is now a HUD positioning tool.

Why this version exists

Earlier versions of GlymeraHUD existed to solve one problem: older Hytale only showed a single custom HUD at a time, so two HUD plugins would overwrite each other. v1/v2 worked around this by intercepting every outgoing HUD packet, guessing which plugin sent it, rewriting its UI commands into a private master container, and blocking the originals.

Two things changed:

  1. Hytale now multiplexes HUDs natively. The engine keeps all custom HUDs side by side (keyed per HUD), so the merging workaround became unnecessary.
  2. The workaround caused disconnects. Because it rewrote each HUD's UI selectors into a container it managed itself, the client could receive commands pointing at an element that didn't exist, producing a failed to apply customhud ui commands error and kicking the player. This was reported by a customer running the latest game version with multiple HUD mods.

What changed

  • Removed all packet merging, stack-trace source-guessing, the private master container, and reflection-based command injection — i.e. everything that caused the kick. The kick is structurally impossible in this version.
  • Kept and rebuilt the positioning feature as the plugin's sole purpose.
  • HUDs are now identified by their own packet key, not by guessing the source plugin from the call stack.

How positioning works now

GlymeraHUD observes outgoing HUD packets and, if an offset is configured for that HUD, adjusts only the numeric anchor values of the HUD's own root element. It never adds selectors or containers of its own, so it cannot create an unresolvable reference.

Two HUD construction styles are supported:

  • Inline HUDs (the HUD layout is in the packet): the anchor values are shifted directly in place.
  • File-based HUDs (the HUD is loaded from a .ui asset, e.g. WiFlowScoreboard): GlymeraHUD reads the referenced asset from the mods/ jars, learns the root element id and its original anchor (cached), and appends a single Set <root>.Anchor command to the same packet — targeting an element that packet itself just created, so it always resolves.

If a HUD's asset can't be found, its root can't be determined unambiguously, or it uses anchor properties that can't be safely rebuilt, GlymeraHUD leaves the packet untouched rather than risk breaking it.

Live preview

Changing a slider in /ghud now re-triggers the selected HUD via the engine's public show() method, so it re-sends and repositions immediately while you drag. This matters for HUDs that are sent once and then only text-updated (such as a money/balance display), which previously only moved after a reconnect. The re-trigger is best-effort and fault-isolated: if it ever fails, the offset is still saved and applies on the next refresh — it can never cause a kick or crash.

Compatibility

  • Built and verified against the current Hytale stable release.
  • Server-side only; no client changes.