PerfectSpawner
Configurable mob spawner blocks with custom cage models, holograms, stacking, time-based rules and a full admin UI. Place, configure, and manage spawners with live diagnostics.
| Version | 2.0.3 |
|---|---|
| Platform | Hytale Server Plugin |
| Hytale | Update 5 (Pre-Release 5) |
| Java | 21 |
| Dependencies | None |
Installation
- Download
PerfectSpawner-2.0.3.jar - Place it in your server's
UserData/Mods/folder - If upgrading from v2.0.0, delete the old jar so you don't have two versions side by side
- Start the server
- Give yourself a spawner via the in-game UI (
/spawner menu) or with the existing item give workflow - If you were running v2.0.0, run
/spawner sweeponce in each affected world to clear leftover hologram entities
Spawner Types
166 spawner types covering nearly every vanilla Hytale entity, organized by faction:
- Goblins (8), Trorks (10), Outlanders (9), Scarak (6), Feran (5), Kweebec (6), Hedera
- Undead: Zombie (6), Skeleton variants (Burnt, Frost, Sand, Pirate, Incandescent), Risen, Wraith, Werewolf, Ghoul, Shadow Knight, Skeleton Hounds and Horses
- Void entities, Crystal Golems (5 elements), Firesteel and Void Golem Guardians
- Elemental Spirits (Ember, Frost, Root, Thunder)
- Mythical: Emberwulf, Fen Stalker, Cactee, Yeti, Trillodon, Snapdragon, Hatworm, Spark Living
- Beasts: bears, wolves, sabertooth, foxes, hyenas, deer, antelope, mosshorn
- Reptiles: crocodile, sand lizard, cave rex, rhino toads, tortoise
- Vermin: scorpion, snakes, spiders, magma slug, molerat, silk larva
- Livestock: pigs, cows, chickens, sheep, rams, rabbits, goats, bison, turkey, warthog, horses
- Bosses: Fire Dragon, Frost Dragon
Each spawner has its own configurable loot multiplier on top of the entity's vanilla drops.
Admin UI
Open with /spawner menu. The UI provides:
- Paginated list of all placed spawners with ID, type, position, world
- Click to select and configure individual spawners
- Spawner type editor: change mob type, spawn settings, day/night restriction, drop multiplier
- Multi-entity weighted picker so a single spawner can produce multiple entity types
- Global settings page: holograms, stacking, drop on break, max stack size, activation radius, language, sync interval
Configuration
Per-spawner-type settings (spawner_types.json)
| Setting | Description | Default |
|---|---|---|
| entities | List of entity ids with weights | single entry per type |
| spawnDelaySeconds | Seconds between spawn cycles | 30 |
| spawnRadius | How far from the spawner mobs spawn | 5 blocks |
| spawnCount | Mobs per spawn cycle | 2 |
| maxEntities | Max alive mobs from this spawner | 256 |
| timeRestriction | always / day / night | always |
| dropMultiplier | Multiplier applied to vanilla drops | 1.0 |
Global plugin settings (config.json)
| Setting | Description | Default |
|---|---|---|
| hologramsEnabled | Spawn hologram entities above each spawner | true |
| stackingEnabled | Allow stacking spawners of the same type | true |
| dropOnBreakEnabled | Drop the spawner item when broken | true |
| maxStackSize | Max number of stacked spawners on one block | 5 |
| activationRadius | Player must be within N blocks for mobs to spawn (-1 = always active) | 32 |
| requirePlayerNearby | If false, spawners ignore the proximity check entirely (skyblock mode) | true |
| hologramSyncIntervalSec | How often the hologram sync runs (seconds, minimum 10) | 60 |
| lang | Plugin language (EN, FR, ES, DE, IT) | EN |
Holograms
Each spawner displays a Nameplate hologram above it showing the mob name, stack count and spawn stats. Text auto-updates after stacking or language changes.
Stacking
Place a second spawner of the same type on top of an existing one to stack it. Each stack level multiplies spawnCount and maxEntities. Hologram reflects the current stack size.
Skyblock Mode
By default, spawners only tick when a player is within activationRadius. This works for a regular open world, but on a Skyblock-style server with players on distant islands you typically want spawners to keep ticking regardless.
Set the following in config.json:
"requirePlayerNearby": false
With this off, the proximity check is skipped entirely. Mobs spawn even when no player is in the world. Combine with a sensible maxEntities per spawner to keep the entity count bounded.
Commands
| Command | Description |
|---|---|
/spawner menu | Open the admin spawner management UI |
/spawner list | List all placed spawners |
/spawner remove | Remove a spawner |
/spawner reload | Reload config.json and refresh holograms |
/spawner setlang [code] | Change language (EN, FR, ES, DE, IT) |
/spawner debug | Live diagnostic snapshot (see Diagnostics) |
/spawner sweep | Delete orphan Nameplate entities near tracked spawners in the current world |
/spawner help | Show all available subcommands |
All admin commands require the perfectspawner.admin permission.
Diagnostics
v2.0.3 adds live diagnostics so server owners can verify the hologram subsystem is healthy without guesswork.
/spawner debug
Prints a snapshot to chat and console:
- Number of spawners registered
- Number of holograms tracked by the manager (should equal registered)
- Cumulative hologram spawn / remove / sync counters
- Seconds since the last sync
- Current config snapshot (sync interval, requirePlayerNearby, activation radius)
- Live ECS scan: counts Nameplate entities within 3 blocks of each spawner whose UUID is not tracked - these are orphans
A healthy server reports tracked == registered and 0 orphans.
/spawner sweep
Scans the current world for the orphan entities reported by /spawner debug and deletes them. Use this once after upgrading from v2.0.0 to clear leftovers, or any time the debug output reports orphans.
Background log
Every 60 seconds the scheduler writes a one-liner to the console:
[PerfectSpawner][1min] spawners=N tracked=N spawned=N(+delta) removed=N(+delta) syncs=N
If the plugin detects a suspicious pattern (spawn growth without matching tracked count), the line is appended with <-- POSSIBLE LEAK so admins notice without manually checking.
Performance
- Throttled hologram sync (default once every 60 s, configurable)
- Sync gated by chunk-loaded check: spawners in unloaded chunks are skipped entirely
- Per-world dispatch: the sync runs once per world that actually has spawners
- Per-world EntityStore resolution: multi-world setups (Skyblock, Nether, Jail, instances) work without cross-world errors
- Stacking reduces entity count vs placing multiple separate spawners
- Activation radius keeps inactive spawners at zero CPU cost
FAQ
Mobs aren't spawning
Make sure you're within the activation range (default 32 blocks), or set requirePlayerNearby to false. Check /spawner debug for live state.
I see floating text stacking above my spawner
You are running an older version where holograms leaked. Upgrade to v2.0.3 and run /spawner sweep in the affected world to clean up.
Spawners in my Skyblock instance don't work
Two things to check. First, set requirePlayerNearby to false if players are far from their islands. Second, make sure you are on v2.0.3 or newer - earlier versions had a cross-world EntityStore bug that broke spawners in any world that wasn't the first one loaded.
Can I create custom mob types?
PerfectSpawner works with all 166 vanilla Hytale entities out of the box. Custom mob support depends on your other mods. If a mod registers its NPC role correctly, you can edit spawner_types.json by hand to point a spawner at the new entity id.
Can a single spawner produce multiple entity types?
Yes. In the type editor, add multiple entries to the entities list, each with its own weight. The plugin picks one at random on every spawn cycle, weighted by your values.