Gallery

Description
GlymeraFloatingIslands - Sky Islands for Hytale
Create new worlds made entirely of floating islands - Minecraft-style. Choose a theme or let each zone keep its native biome.
What is GlymeraFloatingIslands?
GlymeraFloatingIslands adds floating sky islands worlds to your server. Each world consists purely of islands suspended in the air - no ground, no ocean, no caves. The islands are generated natively by Hytale's terrain pipeline, so they come with grass, flowers, trees, structures, NPCs and mobs out of the box, exactly as they would on a normal map.
You pick a biome preset when you create a world, and every island in that world is built from the preset's blocks. Or you go with the native preset and let each zone keep its own biome - so a single world has sand islands in desert zones, snow islands in tundras, grass islands in plains, and so on.
Works out of the box - one command to create, one to teleport. No client mod needed.
Quick Start
/fi biomes - Show available biome presets
/fi create sky native - Create a new floating-islands world named "sky"
/fi tp sky - Teleport to it
/fi back - Return to your previous world
That's it. The world is generated, saved, and persists across server restarts.
Biome Presets
| Preset | Surface | Atmosphere |
|---|---|---|
native |
per-zone | Mixed - sand in deserts, snow in tundras, grass in plains, etc. |
grasslands |
Soil_Grass / Soil_Dirt / Rock_Stone | Classic green Minecraft-style |
desert |
Soil_Sand_White / Rock_Sandstone / Rock_Stone | Warm sandy islands |
snow |
Soil_Snow / Rock_Ice / Rock_Stone | Frozen arctic islands |
volcanic |
Rock_Basalt / Rock_Volcanic / Rock_Slate | Dark basalt floating rocks |
crystal |
Rock_Quartzite / Rock_Marble / Rock_Calcite | Pale crystalline islands |
Every preset places native covers (grass, flowers, trees), structures (Hytale Unique-Prefabs) and NPC spawns on the islands. Only block materials and island density differ per preset.
Commands
| Command | Who | Description |
|---|---|---|
/fi create <name> <biome> |
OP | Create a new floating-islands world |
/fi tp <name> |
OP | Teleport to a managed world |
/fi back |
OP | Return to the previous world |
/fi list |
Everyone | List all floating-islands worlds |
/fi biomes |
Everyone | Show all available biome presets |
/fi delete <name> |
OP | Delete a world (folder + config, no server restart needed) |
/fi reload |
OP | Reload the config and re-apply per-world settings |
/fi delete cleanly unloads the world from Hytale, deletes its disk folder, and removes it from the plugin config - all in one step. No server restart, no manual cleanup. The player running the command must teleport out first, and no other players may be in the world.
Installation
- Place
GlymeraFloatingIslands-3.0.0.jarin your server'smods/folder - Start (or restart) the server
- Done! No asset pack, no config file needed for defaults.
Features
- Native Hytale world generation - islands use the real biome pipeline, so vegetation, trees, structures, and mobs all spawn naturally
- 3D Simplex noise islands - organic cave-like shapes, not blocky
- Vertical taper - soft edges top and bottom, no flat cutoffs
- Guaranteed spawn platform at world origin so you never fall into the void on first teleport
- Configurable per world - island size, density, Y-range, custom block choices - tunable in
plugins/GlymeraFloatingIslands/config.jsonand applied with/fi reload - Legacy config support - old
noiseScalefield from pre-1.0 versions is accepted as an alias forislandSize - Event-driven biome application - islands work correctly even for worlds that already existed before the plugin was installed, and across server restarts
- No caves - cave-prefab stalactites that would dangle in empty sky space are disabled per world
- No water - empty sky worlds don't generate oceans between islands
- Bounded prefab placement - native structure-prefabs only spawn within the island Y-range, never floating in the empty air below
- Chunk post-processor - any block that slipped in outside the island range (forced unique-prefab fallbacks, leftover structure bits) is cleared automatically during chunk load
Configuration
Every world gets an entry in plugins/GlymeraFloatingIslands/config.json. Defaults come from the preset you chose. You can override any value and reload:
{
"worlds": {
"sky": {
"islandSize": 0.015,
"density": 0.30,
"heightMin": 120,
"heightMax": 200,
"surfaceDepth": 3,
"surfaceBlock": "Soil_Grass",
"subBlock": "Soil_Dirt",
"coreBlock": "Rock_Stone"
}
}
}
- islandSize - noise scale. Smaller = bigger islands. Range: 0.005-0.05.
- density - fraction of the Y-range that becomes solid. 0.1 = sparse, 0.3 = minecraft-like, 0.5 = dense, 0.8 = almost solid. Range: 0.05-0.90.
- heightMin / heightMax - lowest / highest Y coordinate for islands.
- surfaceDepth - thickness of the surface-block layer (grass, sand, snow, etc.).
- surfaceBlock / subBlock / coreBlock - the three layers of each island.
- native - set to
trueto inherit the zone's native biome instead of the custom blocks (overrides the three block fields).
After editing, run /fi reload - the scanner re-applies the settings without a server restart.
Performance
Designed to stay lightweight:
- Column-level fast-path - 3 pre-sampled noise values per column skip the full 3D-noise loop when the column is obviously empty air
- No per-block extras - Hytale's native pipeline does the actual block placement, layering, covers and prefab spawning
- No ticking overhead - zero work per tick; all computation happens during chunk generation and chunk load
- No threads - two event listeners, one optional 500 ms safety scanner, nothing more
- No asset pack - the JAR is around 30 KB
Chunk generation is a little more expensive than vanilla (one custom 3D-noise call per non-empty block in the island Y-range plus a brief post-processing pass), but the column fast-path and Hytale's built-in chunk caching keep regular play smooth.
Good to Know
- The plugin only modifies terrain for worlds it manages. Your existing
defaultworld and any other worlds are untouched. - NPCs may spawn over open sky and fall off islands - this is intentional; Hytale's spawning system is zone-wide, not Y-bounded.
nativemode is marked stable but some Hytale zones render islands as empty - individual zone compatibility may vary. If you see empty patches, use one of the five fixed biome presets.- The chunk post-processor clears every block outside the island Y-range on chunk load. This keeps the sky clean but means player-built structures placed below
heightMinor aboveheightMaxdo not persist across chunk unload/reload cycles. Build on the islands themselves to preserve your work. - Plugin runs silently - no log output in normal operation.
Made with care by Glymera for the Hytale community
Changelog
GlymeraFloatingIslands - Changelog
v8.0.0 (2026-08-28) — Hytale 0.6.0 (Update 6)
- Rebuilt for Hytale 0.6.0 (Update 6). Requires server 0.6.0 or newer; this version does not run on 0.5.x, and older versions of this plugin do not run on 0.6.0.
- Migrated to the 0.6.0 APIs (network protocol hytale/3, new command-permission API, block/chunk/entity API changes). Everything that was open to players before is open to players again.
- Upgrade: delete the old jar from
mods/, drop in the new one and keep the plugin's data folder — configs and saved data carry over unchanged. Restart the server.
v7.0.0 (2026-08-07)
Bug Fixes
- Trees are no longer cut off at the top of the island range. The world post-processor used to clear every block above
heightMax, which decapitated trees (and structure roofs) rooted on islands near the upper edge - visible as flat-topped trees across the whole world. The cleanup zone now starts 96 blocks aboveheightMax: prefabs are placed with their base inside the island range, and 96 is the tallest prefab in the game (measured across all 7,810 prefabs - the tallest tree tops out at 82), so nothing legitimate can ever reach the cleanup zone. The safety net against floating misplaced prefabs high above the islands remains active. Thanks to the player report that pinpointed this! /fi reloadnow actually applies changed parameters. Previously the internal "already patched" cache skipped the re-application, so edits toheightMax,densityetc. inconfig.jsonsilently did nothing until a server restart.
Changes
- Full internal rewrite. The plugin was rebuilt from the ground up on the same generation concept, incorporating everything learned from our newer world plugins:
- The generator guard now also runs immediately before every
/fi tpteleport, closing a rare window where the engine could swap in a fresh (unpatched) generator right as chunk generation starts at the arrival point. - Robust JSON config parsing (a malformed
config.jsonis reported and skipped instead of being half-parsed). - Config saves are atomic - a crash during save can no longer truncate
config.json. /fi createvalidates world names (letters, digits,-,_, max 32 chars) so world folders are safe on every OS.- Internal code restructured from one monolithic class into focused modules; diagnostic log spam removed.
Compatibility
- Existing worlds keep working - this is the core promise of this release. The island generation math is byte-for-byte identical to all previous versions: already-generated chunks match newly generated ones with no seams, same seeds produce the same islands.
- Note: chunks that were already generated with older versions keep their flat-cut trees baked in (block data on disk is never rewritten). Newly explored terrain generates with intact trees.
- Config format unchanged, including legacy
noiseScalesupport. Commands and presets unchanged. Drop-in update: replace the jar, restart.
v5.0.0 (2026-04-17)
Bug Fixes
- Restart bug fixed: After a server restart, newly-to-be-generated chunks stopped being rendered as islands. Chunks that were already generated (saved on disk) stayed fine, but walking into unexplored territory produced flat normal terrain instead of floating islands. Root cause:
worldConfig.getWorldGenProvider().getGenerator()is a factory and returns a brand new ChunkGenerator instance on every call. The v4 approach ("fetch the generator once atAddWorldEvent, patch it via reflection, put it back") therefore modified short-lived objects that Hytale immediately discarded. - Teleport crash fixed: Teleporting into a freshly-created island world could occasionally fail with
RejectedExecutionException[ChunkThreadPoolExecutor Terminated]and disconnect the player. Root cause:applyIslandBiomewas being invoked twice (once from theAddWorldEventlistener, once from thecreateAndLoadWorld.thenAcceptcallback). The secondchunkStore.setGenerator()call shut down the ThreadPool of the previous generator while it was still generating chunks.
Changes
- Idempotent on-demand generator patching: New method
ensurePatched(world, def)replaces the old "patch once" flow.ensurePatchedis called from four entry points -AddWorldEvent, the scheduler,createAndLoadWorld.thenAccept, and new in v5 theChunkPreLoadProcessEvent- and decides for itself whether patching is required: - Reads the generator currently in use by the ChunkStore (the one actually generating chunks)
- Skips in O(1) via
System.identityHashCode()lookup if the generator has already been patched - Otherwise patches in place via reflection (no
setGenerator(), no ThreadPool gets killed) chunkStore.setGenerator()is now only called when the ChunkStore has no generator yet (fresh world)- Integration in the chunk post-processor: The
ChunkPreLoadProcessEventhandler callsensurePatchedbefore its block-clear pass. If Hytale swaps in a fresh generator between the AddWorldEvent patch and actual chunk generation (the v4 failure mode), this new generator is intercepted and patched here, before a single chunk is generated incorrectly. - Diagnostic logging: All plugin log lines are prefixed
[FI-v5]and can be filtered from server logs withgrep FI-v5. Exceptions are now logged with full stack trace instead of being swallowed.
Technical Details
patchGenerator(worldGen, def, worldName)now does only the pure reflection work, without touching the ChunkStore. ThesetGenerator()call is isolated insideensurePatchedand happens exactly once per world lifetime.- New
Set<Integer> patchedGeneratorHashesholds the identity hashes of all generator instances that have already been patched. switchingAtomicBoolean is still used to serialize concurrent reflection runs (several chunk events firing at once).
No Functional Changes
- All commands (
/fi create|tp|back|list|delete|biomes|reload) behave identically. - Config format is unchanged. v4 config files load without migration.
- Preset list (
native,grasslands,desert,snow,volcanic,crystal) is unchanged. - Island shape (3D Simplex noise, density / vertical taper, spawn platform at origin) is identical to v4.
Compatibility
- Existing v4 worlds: work without any further action. On first world-load after the plugin upgrade,
ensurePatchednotices the generator is not yet patched and patches it. - Running server: the plugin can be swapped in-place by just replacing the JAR in the
mods/folder and restarting the server. No world regeneration required.
v4.0.0 (2026-04-16)
Bug Fixes
- Player-edit loss fixed: In v3.0.0 the
ChunkPreLoadProcessEventhandler cleared blocks outsideheightMin..heightMaxon every chunk load - including chunks loaded from disk. As a result any player-built structure placed outside the island Y-range disappeared on the next chunk reload (server restart, player leaving and re-entering the world, etc.). Fix:if (!event.isNewlyGenerated()) return;at the top of the handler. The clear logic now only runs on freshly generated chunks.
No Functional Changes
- All other behaviour identical to v3.0.0.
v3.0.0 (2026-04-16)
- Switched to a custom
IHeightThresholdInterpreter(Island3DInterpreter) with direct 3D Simplex noise evaluation - No more carving or post-fill logic - Hytale now generates the islands natively through the biome pipeline
heightmapInterpreter,heightmapNoise,layerContainer,waterContainerare replaced per biome via reflectioncoverContainer(grass/flowers/trees),environmentContainer(NPCs/animals) andprefabContainer(structures) are preserved natively - islands get correct vegetation and structures out of the box- Spawn-platform guarantee: 5x5x3 solid blocks at world origin so Hytale's UniquePrefab placement (Spawn, Temple) does not fail
/fi biomescommand for preset overview- Cave deactivation:
Zone.caveGenerator.caveTypesis emptied so stalactites don't dangle in the empty air under islands - Native prefab Y-range bounding via
BoundedHeightCondition(wraps theheightConditionof eachPrefabPatternGenerator)
v2.0.0 (2026-04-15)
- Removed the custom zone system, switched to per-biome reflection
- Asymmetric vertical taper (fades more aggressively at the bottom so no rock debris dangles)
- Fast path:
getContext()stores 3 Y-samples per column; if all below cutoff, column is treated as empty and the 3D-noise loop is skipped - Per-world offset seed (
worldName.hashCode()), so different worlds with identical parameters look different
v1.0.0 (2026-04-15)
- Initial release: floating-island worlds via
/fi create <name> <biome> - 6 biome presets:
native,grasslands,desert,snow,volcanic,crystal - 3D-Simplex-noise based island shape (
islandSize,density,heightMin,heightMaxconfigurable) - Persistent worlds via JSON config at
plugins/GlymeraFloatingIslands/config.json /fi create|tp|back|list|delete|biomes|reloadcommands- No asset pack, JAR under 30 KB
Only Marc can read this.