File Details
GlymeraIrrigation-3.0.0.jar
- R
- May 28, 2026
- 7.95 KB
- 6
- Early Access
File Name
GlymeraIrrigation-3.0.0.jar
Supported Versions
- Early Access
Hytale Stable-5 Migration
All Glymera plugins have been updated for compatibility with Hytale Server 0.5.x (Stable 5). The previous versions targeted Hytale Server 0.4.x (Stable 4).
This document covers what changed in the Hytale Server API between Stable 4 and Stable 5, and which adjustments were required across plugins so that things keep working.
Why a new major version
Stable 5 introduced a number of source-incompatible API changes. A plugin compiled against Stable 4 will either fail to load, fail silently on first use, or — in a few cases — crash the world thread. Because the surface of change is large, every plugin received a new major version number, even when the only functional behaviour change was a manifest flag.
Things that changed in Hytale Stable 5
Vector math
Internal Hytale vector types were replaced by JOML.
com.hypixel.hytale.math.vector.Vector3d/3i/3f→org.joml.Vector3d/3i/3f- Rotation helpers now use the
Rotation3fcinterface where the older API took a concreteRotation3f.
Particle / sound API
SpawnParticleSystemconstructors gained additional arguments.PlaySoundEvent3D/ ambient sound registration semantics tightened — long-running or looped sounds attached to a block must now use the block-stateAmbientSoundEventIdpath; firing them withPlaySoundEvent3Dfrom a tick handler no longer behaves correctly.
Asset pack registration
AssetModule.registerPack(...)now requires aPackSourceparameter (usePackSource.MODSfor plugin-installed packs).- The
IncludesAssetPackmanifest flag is now strictly enforced. If a plugin both declaresIncludesAssetPack: trueand registers a runtime pack from its setup code, Hytale detects this as a duplicate registration and aborts boot withDuplicate asset pack ... Remove the duplicate.For affected pluginsIncludesAssetPackis now set tofalse; the actual asset pack is installed by the plugin at startup as before.
HUD / UI system
- The
HudManagerAPI has moved to a keyed model — HUD entries now require a stable key and explicit lifecycle hooks. InteractiveCustomUIPageevent bindings are wiped if the page is rebuilt while the client is processing a click. Plugins refreshing a HUD per tick had to throttle the rebuild rate (commonly to 1 Hz) so button presses are not lost.
Player handles
- The
Playercomponent and thePlayerRefreference have been split. Plugins previously juggling one or the other now need to consider both. ServerPlayerListPlayerrequires aworldUuidfield — entries without it are silently dropped from the tab list.
Entity utilities
EntityUtils.toHolder(...)was removed. Lookups need to go through the entity store directly or viaRef<EntityStore>.
Damage system
- Resistance fields on
EntityEffect(damageResistanceValuesRaw,damageResistanceValues) now expectResistanceModifier[], notStaticModifier[]. Plugins that previously injected resistances via reflection now use theResistanceModifier(ResistanceCalculationType, float)constructor. - The corresponding JSON
CalculationTypevalue"Multiplicative"is no longer accepted for damage resistance — it must be"Percent". Migrating large packs needed a bulk rewrite ofPotion/EffectJSONs. - Lethal-damage detection:
EntityStatValue#getMin()is no longer a usable death-threshold. Lethal checks now compare the post-damage health against0.0fdirectly. Plugins relying on the old behaviour would silently fail to fire and the player just died.
ECS / system tick safety
- It is no longer legal to call mutating store methods (
addComponent,removeEntity, …) directly from inside a system's tick handler. Doing so now throwsIllegalStateException: Store is currently processing!. Such calls must be deferred: either via the system'sCommandBuffer, or by scheduling onto the next world tick withworld.execute(...).
Items, weapons and recipes
- Custom swords must declare
Tags.Type: "Weapon"(not"Tool"), and they need their own completeInteractionVarsblock — these are no longer inherited from the parent template under Stable 5. A custom weapon without its ownInteractionVarswill spawn but cannot deal damage. - Recipe bench IDs and recipe categories are now validated against the asset registry. Mistyped values cause Hytale to silently drop the recipe with no error message.
Cosmetics
CosmeticsToHidenow only accepts a restricted, enumerated set of values. Custom values are rejected at asset-load time.
Server authentication
After every Stable update the server's OAuth credentials must be refreshed:
auth logoutauth login device- Open the printed verification URL, complete the device authorisation
auth select <profile>
If the server is still on cached OAUTH_STORE credentials after a Stable update, every
incoming player connection is rejected with serverAuthUnavailable and the client only
sees QUIC handshake failed.
Manifest / ServerVersion
- Stable 5 enforces a recognisable
ServerVersiondeclaration in each plugin'smanifest.json. A malformed value prevents the server from booting. Glymera plugins declare"ServerVersion": "*"to remain agnostic across patch versions.
Plugin-data path
The plugin-data directory used by all Glymera plugins is now:
mods/de.glymera_<PluginName>/
(Previously it was plugins/<PluginName>/.) Existing configuration files are not
migrated automatically — if you want to keep custom configuration from an older
install, move the relevant files from the old plugins/ location into the new one
before first launch.