GlymeraBluestone - Changelog
v9.0.0 (2026-06-04)
Item Display Names — now actually working
- All 33 items now have proper, human-readable English display names. Previously the items showed their raw translation key in-game (e.g. server.items.BluestoneWire.name) — long, code-like, and giving no hint about the item's function. This was the subject of player feedback.
- Root cause: the localization catalog Server/Languages/en-US/server.lang had its keys written with a server. prefix already. The engine derives a namespace from the filename (server.lang to server.) and prepends it, so the keys became server.server.items.BluestoneWire.name — which never matched the item, so the raw key was displayed. Fixed by writing the keys without the server. prefix, exactly as every working plugin does (Backpack, Talismans, Beacons).
- Names follow their redstone-equivalent function: Bluestone Wire, Bluestone Torch, Bluestone Lever, Bluestone Button, Bluestone Pressure Plate, Bluestone Repeater, Bluestone Comparator, Bluestone Observer, Bluestone Piston, Bluestone Sticky Piston, Bluestone Pulser, Bluestone Applicator, Bluestone Ejector, Bluestone Hopper. The technical orientation variants reuse their base block's name.
- Server-side verification: the 33 "server.items.Bluestone... does not exist in server.lang" boot warnings are now gone (0) — the names resolve correctly.
Creative Inventory Cleanup
- The 19 technical orientation variants are flagged "Variant": true and are hidden from the creative item library (the native Hytale mechanism for connected/variant blocks). The creative menu shows only the 14 base blocks — one entry per block, no duplicates. Placement still selects the correct orientation automatically.
Localization
- All names live in the single universal fallback locale Server/Languages/en-US/server.lang. Hytale falls back to en-US for any client language (verified), so every client — English, German, Portuguese, any — sees the same clean English names. No per-language file is needed.
- Removed the obsolete/non-standard Server/Item/Language/*.json and the broken Server/Languages/de-DE/server.lang (it had the same double-prefix bug and unwanted German names).
Plugin Logic
- Asset-only update — no logic changes. The 31 compiled classes are byte-for-byte identical to v7.0.0. Placement/orientation conversion, redstone signal propagation, all block behaviors and crafting recipes are unchanged.
- Version bump also invalidates the client-side asset cache, so the corrected names/visibility take effect on reconnect.
Notes
- An unfinished, never-shipped source edit was discarded during this work: a Break_Container / Open_Container interaction on the Hopper/Ejector/Applicator blocks that referenced a non-existent asset and would fail asset validation. If openable-container behavior is wanted later, it needs a proper interaction asset (separate task).
- v8.0.0 was a same-day internal iteration that edited the wrong localization file (Server/Item/Language/*.json); it never left the dev server. v9.0.0 supersedes it.
Earlier versions
- v7.0.0 and earlier predate this changelog. GlymeraBluestone provides a redstone-style logic system for Hytale: Wire, Repeater, Comparator, Observer, Piston, Sticky Piston, Lever, Button, Pressure Plate, Pulser, Hopper, Ejector, Applicator and Torch, with automatic block-orientation handling on placement.
Hytale Stable-5 Migration
All Glymera plugins updated for Hytale Server 0.5.x (Stable 5)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
◆ What 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 Rotation3fc interface where the older API took a concrete Rotation3f.
▸ Particle / Sound API
- SpawnParticleSystem constructors gained additional arguments.
- PlaySoundEvent3D / ambient sound registration semantics tightened — long-running or looped sounds attached to a block must now use the block-state AmbientSoundEventId path; firing them with PlaySoundEvent3D from a tick handler no longer behaves correctly.
▸ Asset pack registration
- AssetModule.registerPack(...) now requires a PackSource parameter (use PackSource.MODS for plugin-installed packs).
- The IncludesAssetPack manifest flag is now strictly enforced. If a plugin both declares IncludesAssetPack: true and registers a runtime pack from its setup code, Hytale detects this as a duplicate registration and aborts boot with "Duplicate asset pack ... Remove the duplicate." For affected plugins IncludesAssetPack is now set to false; the actual asset pack is installed by the plugin at startup as before.
▸ HUD / UI system
- The HudManager API has moved to a keyed model — HUD entries now require a stable key and explicit lifecycle hooks.
- InteractiveCustomUIPage event 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 Player component and the PlayerRef reference have been split. Plugins previously juggling one or the other now need to consider both.
- ServerPlayerListPlayer requires a worldUuid field — 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 via Ref<EntityStore>.
▸ Damage system
- Resistance fields on EntityEffect (damageResistanceValuesRaw, damageResistanceValues) now expect ResistanceModifier[], not StaticModifier[]. Plugins that previously injected resistances via reflection now use the ResistanceModifier(ResistanceCalculationType, float) constructor.
- The corresponding JSON CalculationType value "Multiplicative" is no longer accepted for damage resistance — it must be "Percent". Migrating large packs needed a bulk rewrite of Potion/Effect JSONs.
- Lethal-damage detection: EntityStatValue#getMin() is no longer a usable death-threshold. Lethal checks now compare the post-damage health against 0.0f directly. 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 throws IllegalStateException: Store is currently processing! Such calls must be deferred: either via the system's CommandBuffer, or by scheduling onto the next world tick with world.execute(...).
▸ Items, weapons and recipes
- Custom swords must declare Tags.Type: "Weapon" (not "Tool"), and they need their own complete InteractionVars block — these are no longer inherited from the parent template under Stable 5. A custom weapon without its own InteractionVars will 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
- CosmeticsToHide now 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:
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".
- auth logout
- auth login device
- Open the printed verification URL, complete the device authorisation
- auth select <profile>
▸ Manifest / ServerVersion
- Stable 5 enforces a recognisable ServerVersion declaration in each plugin's manifest.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 wasplugins/<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.
This plugin has been updated as part of a compatibility pass for Hytale version 2026.03.26 (Update 4). It is one of a series of plugins that have been reworked to support the new Hytale release.
GlymeraBluestone - Changelog
v5.0.0 (2026-03-17) - Crafting Recipes
All 14 Bluestone blocks are now craftable.
Crafting Station: Workbench (Tier 3)
Crafting Time: 3 seconds
▸ Recipes
- Wire - 2x Ore_Iron, 2x Ore_Copper, 1x Charcoal
- Button - 1x Ore_Iron, 1x Ore_Copper, 1x Stick
- Lever - 1x Ore_Iron, 2x Stick, 1x Fibre
- Repeater - 2x Ore_Iron, 2x Ore_Copper, 1x Fibre
- Piston - 3x Ore_Iron, 2x Stick, 1x Tree_Bark
- Sticky Piston - 3x Ore_Iron, 2x Stick, 1x Tree_Sap_Glob
- Observer - 2x Ore_Iron, 1x Ore_Copper, 1x Bone_Fragment
- Torch - 1x Ore_Iron, 2x Charcoal, 1x Stick
- Pressure Plate - 2x Ore_Iron, 2x Ore_Copper, 1x Tree_Bark
- Pulse - 2x Ore_Iron, 1x Charcoal, 1x Fibre
- Comparator - 2x Ore_Iron, 1x Charcoal, 1x Bone_Fragment
- Hopper - 3x Ore_Iron, 2x Ore_Copper, 1x Ore_Gold
- Ejector - 2x Ore_Iron, 1x Powder_Boom, 1x Fibre
- Applicator - 2x Ore_Iron, 1x Powder_Boom, 1x Stick
▸ Changes
- Added 14 Recipe sections to base item JSONs (no directional variants)
- No Java code changed
- Each recipe has a unique ingredient combination (no conflicts)
- All ingredients are easily farmable (mining, trees, plants, mobs)
v4.0.0 (2026-03-16) - Embedded Asset Pack
- Asset pack embedded directly into JAR (no separate pack folder)
- All Bluestone plugins (Torch, Plate, Pulse, Hopper, Ejector, Applicator) merged into single JAR
v3.0.0 and earlier
- Core Bluestone system: Wire, Repeater, Lever, Button, Piston, Observer
- Extensions: Pulse, Comparator, Hopper, Ejector, Applicator, Torch, Pressure Plate
Clean Release - All Plugins
2026-03-16
▸ Silent Operation
- Removed all debug and info log output from every plugin. Plugins now operate completely quietly in the background, keeping your server log clean and free of plugin messages.
▸ Major Version Bump
- All plugins have been bumped to the next major version to clearly distinguish this clean release from previous development builds.
▸ Universal Server Compatibility
- All plugins now use wildcard server versioning for maximum compatibility with future Hytale server updates.
Single-File Optimization Update (2026-03-14)
- Optimization: This plugin is part of a larger optimization series in which all multi-file plugins have been converted to single-file plugins. Previously, some plugins required both a JAR file and a separate asset pack folder. Now everything is contained in a single JAR - just drop it into your mods folder and you're good to go.
- New: Crafting recipes for Farmer Chest, Worker Chest and Guard Cages have been added (GlymeraFarmer, GlymeraWorker, GlymeraGuard only). Recipes can be enabled or disabled via the config option "craftingEnabled" (default: true).
This update adds two new blocks to the Bluestone automation system: the Torch and the Pressure Plate. The Bluestone Torch is an inverter (NOT gate) that outputs a signal when its input is unpowered and turns off when receiving a signal — essential for logic gates, toggle circuits, and advanced contraptions. The Pressure Plate detects players and creatures standing on it and emits a signal in all directions except upward, enabling automatic doors, traps, and player-triggered mechanisms. This update also includes improvements to GlymeraCore (v1.1.0) with extra data persistence for block entries, and GlymeraBluestone (v2.3.1) now recognizes both new blocks as signal sources for proper wire propagation. The package now contains 8 plugins and 8 asset packs total.
