File Details
GlymeraWorldGen-10.0.0.jar
- R
- Jun 7, 2026
- 39.56 KB
- 64
- 0.5
File Name
GlymeraWorldGen-10.0.0.jar
Supported Versions
- 0.5
GlymeraWorldGen - Changelog
v10.0.0 (2026-06-07, Hytale 0.5.4)
Core fix: configured biomes were completely ignored from Hytale 0.5.x onward — every world generated the default vanilla landscape despite the chosen biome. Root cause: the old approach (rewrite the shared Zones.json at runtime → rebuild the generator → ChunkStore.setGenerator()) is no longer honored since 0.5.x — the freshly built generator is discarded / its thread pool is killed on the "double setGenerator", and generation continues with the vanilla default. (GlymeraFloatingIslands' own code literally warns about "ThreadPool-killing double setGenerator()".)
New mechanism: in-place patch of the live generator
Following the proven GlymeraFloatingIslands pattern (which survives Hytale updates):
- The biome is now applied directly to the live generator held by the
ChunkStore— its biomes are set in place via reflection. No moresetGenerator()(only used if the ChunkStore has no generator yet). - Applied on
AddWorldEvent(before the first chunks generate) and per freshly generated chunk (ChunkPreLoadProcessEvent) — this also catches generator swaps after a restart. Deduplicated per generator identity hash, O(1) once steady. - No more Zones.json rewrite → no shared-file race with other worlds.
Built-in biomes (plains / desert / taiga / volcanic) — variety preserved
Sourced from the matching native zone group (plains = Zone1, desert = Zone2, taiga = Zone3, volcanic = Zone4). Instead of collapsing everything onto a single biome (monotone), each zone is mapped role-aware to a same-role zone of the target group (land → land tiers, shore → shore, shallow-ocean → shallow-ocean) and round-robined. Result: varied heights, vegetation and structures like a real native area — Hytale produces the variety; the plugin only decides which native biome goes where. Copies terrain, height, tint, water and cover/structures/environment (trees + prefabs now match the biome). Native unique prefabs (spawn/temple) are left untouched; deep ocean stays water.
Custom biomes (config customBiomes)
Still build synthetic containers from the 17 terrain parameters and are applied uniformly (a custom biome is a single defined biome). Cover/structures/sky are intentionally left native, because the config only defines terrain. (Possible future option: a decorFrom field to inherit trees/structures/sky from a native group.)
Compatibility / notes
- Built against Hytale 0.5.4. All custom container constructors verified against 0.5.4 (unchanged).
/bwcommands unchanged (list|create|tp|back|delete|biome|biomes|reload).- Already-generated chunks keep their old terrain — only newly generated chunks use the biome. Create a fresh world to test.
v9.0.0 (2026-05-29)
- Fix: Eliminated the
SEVERE Duplicate asset pack '...'error that appeared on every server boot after the first. The plugin generates its asset pack intomods/and Hytale's auto-scan already loads it at startup; the plugin then re-registered the same pack viaregisterPack(), which the engine flagged as a duplicate. The plugin now registers the pack only if it is not already loaded (AssetModule.getAssetPack(name) == null), mirroring the engine's own check. No functional change — assets load exactly as before, just without the log error. - Fix: The generated pack manifest now declares
"ServerVersion":"*"and is (re)written on every boot, clearing Hytale's "does not specify a target server version" warning (which Hytale states will become a hard error in a future version). Existing installs are upgraded automatically on the next start.
v6.0.0 (2026-05-17)
The big quality-of-life and stability pass. v5 produced loud "Failed to generate Unique-Prefab" / "FORCED Unique-Prefab" log spam on every server reboot for every world the plugin managed, and the /bw create flow could only set a biome after the spawn region was already generated. Both are fixed; /bw create now takes the target biome up front.
1. New: /bw create takes the biome as a second argument
The command signature is now:
/bw create <world-name> <biome>
where <biome> is one of: none (skip — same behavior as old v5 /bw create), plains, desert, taiga, volcanic, default, or any custom-biome key you defined under customBiomes in plugins/GlymeraWorldGen/config.json.
When <biome> is not none, the plugin pre-writes the world-pack Zones.json with the chosen biome's MaskMapping before Universe.loadWorld(...) is called, then runs applyBiome(...) from inside the thenAccept callback. The end result: Hytale generates the world's very first spawn chunks already in the chosen biome — no more "land in vanilla terrain, retreat to load some chunks elsewhere, watch the biome appear" two-step.
Existing worlds are not affected by this change; only newly-created worlds benefit.
The previous-style /bw biome <biome> command still works in case you want to change the biome of an existing world after the fact.
Unknown biome names are rejected up-front with a clear error, so you no longer create an orphan world with a typo'd biome string.
2. Fixed: SEVERE/FORCED Unique-Prefab log spam on every reboot
Reported by Superliberty on Discord (plugin_hilfe 2026-05-12):
SEVERE [WorldGenerator] Failed to generate Unique-Prefab 'Spawn' ... maxDistance: 30.0
WARN [WorldGenerator] FORCED Unique-Prefab 'Spawn' at Vector3i{x=0, y=137, z=0} after 5001 attempts!
SEVERE [WorldGenerator] Failed to generate Unique-Prefab 'Temple' ... maxDistance: 100.0
WARN [WorldGenerator] FORCED Unique-Prefab 'Temple' at Vector3i{x=0, y=119, z=0} after 5001 attempts!
— at every server start, for every world. Superliberty also noticed that his SimpleClaims-protected outpost at world coordinate (0,0) was getting clipped by the forced placement.
Root cause. The v3-v5 plugin shipped an ORIGINAL_MASK_JSON constant that lacked the UniqueZones section. Hytale's Zones.json still mapped pixel colors #ff0000 and #ffff00 to the zone names Zone1_Spawn and Zone1_Temple, but the Mask image had no rules generating those pixels, because the rules live in UniqueZones (in Mask.json). With nothing to find, the WorldGenerator looped 5001 times in vain and then forced both prefabs onto the world axis — exactly the spam Superliberty saw.
Fix. ORIGINAL_MASK_JSON now includes the UniqueZones section, byte-identical to Hytale's vanilla Server/World/Default/Mask.json (Zone1_Spawn at Distance 3000, Zone1_Temple at Distance 400 + MinDistance 250, with the exact Continent/Temperature/Intensity/Fade rules from Hytale Default). Plus, setup() no longer guards the file with if (!Files.exists) — the v5 pack is overwritten on every plugin load, so the fix takes effect on upgrade without admins having to manually delete the broken file.
After the fix: Spawn lands somewhere ~3000 blocks from the origin (not at (0,0)), Temple sits within ~400 blocks of Spawn, and the SEVERE/FORCED log lines are gone entirely.
3. Fixed: /bw biome <name> no longer throws "Could not find zone: Zone1_Spawn"
When the v6 Mask.json fix added UniqueZones back, /bw biome <name> immediately broke with WorldGenLoadException: Could not find zone: Zone1_Spawn. The reason: every per-biome MaskMapping in the plugin (buildSimpleMapping, buildTaigaMapping, buildVolcanicMapping, buildDefaultMapping) remapped #ff0000 and #ffff00 onto the biome's own tier1 zone. Once UniqueZones referenced Zone1_Spawn / Zone1_Temple by name, those zone names had to actually exist in the rewritten Zones.json — and they didn't.
All four mappings now point #ff0000 → Zone1_Spawn and #ffff00 → Zone1_Temple regardless of the selected biome. The unique spawn (Radius 35) and temple (Radius 20) zones are small, so the visual disruption of having a vanilla "Zone1" spot inside a colored biome is negligible — it's a few dozen blocks at most, around the world's spawn point.
Compatibility
- Existing worlds and their
customBiomesdefinitions are not touched. - The plugin's data file (
plugins/GlymeraWorldGen/config.json) keeps the same schema. Theworldsmap's stored values still range over"none"/ built-in / custom-biome keys. - The only behavior change you'll notice on existing worlds: the SEVERE/FORCED log lines stop appearing at server start. New worlds get the new biome-on-create flow.
Upgrade Note
If your previous server had the v5 plugin and you want existing worlds to also benefit from the Spawn/Temple-no-longer-forced behavior, you'll need to delete mods/GlymeraWorldGen/ (the side pack folder, NOT the JAR) once. The plugin rewrites a fresh pack with the correct Mask.json on next load. v5 worlds you've already played in stay where they are; only the world-generation rules update.
v5.0.0 (last released on CurseForge)
— last public release. Configurable custom biomes via config.json, /bw create|tp|back|biome|biomes|list|delete|reload, 5 built-in biomes (plains/desert/taiga/volcanic/default), 17 terrain parameters per custom biome, Reflection-based per-world generator override.

