CloudSuperSpawners

A vanilla spawner on a donation server is a constant headache. A paying player breaks the block without Silk Touch — and the spawner just vanishes, with no item in their pocket. Or they walk up with a spawn egg and quietly reassign the mob to their own — the donation product is hijacked right in front of you. CloudSuperSpawners closes both holes and turns the spawner into a fair, configurable donation item: it places as a block, works as a well-thought-out mob generator, and only breaks when handled with care.

From the outside it's an ordinary vanilla spawner, giving nothing away. Inside it has its own logic: a set of mobs, its own weights, its own interval, its own cap on how many are nearby. All of it lives in the config, with no code edits and no server restart.

What it is

A spawner item: a SPAWNER block with a type tag in PDC (superspawners:type). The plugin recognizes its items by this tag, not by name — you can't rename one in an anvil and pass it off as another type. The player places the item, and a working super spawner of the type that was issued by the command appears in its place. You can have any number of types, each one a separate config entry with its own mob set, spawn rhythm, and rarity; all six that ship out of the box are covered below, plus a template for a seventh.

Installation and activation

The player places the spawner item like a regular block — the plugin recognizes the type from the PDC tag, registers the coordinates in an internal registry, and on the very next tick silences the block's vanilla spawning: 0 mobs per cycle, zero player radius, a huge delay. Outwardly the block remains an ordinary spawner — the same spinning mob model inside — but its vanilla engine stays silent forever, and spawning is run by the plugin's own scheduler.

The scheduler checks each registered spawner on its own step (once a second by default) and first looks at whether a player is within activation-range — by simple distance, without touching chunks, so a sleeping world isn't woken up unnecessarily. Only if a player is nearby does the plugin touch the block itself and check that the chunk is loaded. If the block disappeared not through the plugin — blown up, removed by WorldEdit, or by another plugin — the registry erases the entry itself on the next check, with no console errors and no zombie entries.

Multi-mob and local cap

Once per its interval-seconds, the spawner produces not one mob but a whole batch — count-per-cycle of them, and each slot in the batch is an independent weighted roll against the set's weights. So in the "Hellish" spawner, a batch of two mobs can easily come up as two Blazes in a row or two Magma Cubes — there's no "one of each" guarantee, only probability.

Before spawning, the scheduler counts living entities within activation-range (a cube with a side equal to that radius, not a sphere) — and if there are already max-nearby or more, the cycle is skipped entirely rather than moved to the nearest free second: the next attempt comes only after a full interval-seconds again. The cap counts all living entities nearby, not only this spawner's mobs — if you place two different types close to each other, they share one limit and slow each other down. The last-spawn timer is kept in memory, not in a file, so after every server restart all spawners start as if the interval has already passed and are ready to spawn right away.

Spawner protection

  • Spawn egg. A right-click with a spawn egg on a registered super spawner is canceled entirely — you can't reassign the mob under the block with someone else's egg, and the donation item can't be quietly swapped.
  • Breaking without a Pickaxe. With any tool other than the Indiana Pickaxe, the block disappears with no drop and no XP, and the registry entry is erased immediately. A vanilla spawner drops nothing when broken anyway — the plugin just explicitly suppresses both the XP and any other drops another plugin might mix in.
  • Other people's spawners. If a SPAWNER block isn't registered by the plugin — an ordinary vanilla spawner placed with an egg or found in a dungeon — all listeners leave it alone, and it breaks and reassigns as usual.

Spawner sets

Out of the box there are six sets, each with its own mob composition and rhythm. The weight logic is simple: weight is a share out of a hundred, and in all six sets the mob weights add up to exactly 100, so the percentages below are not rounding but the exact chance. Where there is a rare sub-chance, it always has a small weight and turns ordinary farming into a small lottery on every cycle.

Friendly

id friendly, custom-model-data 690001. A 15-second interval, 3 mobs per cycle, an activation radius of 16 blocks, a nearby cap of 20. All weights are exactly 25 — there are no rarities inside the set, it's a pure fauna farm for wool, eggs, leather, beef, and pork. A logical first spawner for the lowest donor tier: no combat, only peaceful animals.

  • Sheep SHEEP — 25%
  • Chicken CHICKEN — 25%
  • Cow COW — 25%
  • Pig PIG — 25%

Common

id common, custom-model-data 690002. The fastest cycle of all six — 12 seconds, 3 mobs at a time, radius 16, cap 20 (together with "Friendly" the highest nearby limit). There is no rare sub-chance, but the set has the highest total mob throughput of all six: gunpowder, bones, string, arrows, rotten flesh, and occasionally spider eyes.

  • Zombie ZOMBIE — 40%
  • Skeleton SKELETON — 35%
  • Spider SPIDER — 25%

Sea

id sea, custom-model-data 690003. A 20-second interval, 3 mobs, radius 16, cap 15. Five fish mobs and the Guardian give steady farming, and at the bottom of the batch an Elder Guardian is hidden — 2% out of a hundred, the rarest sub-chance in the whole plugin. It applies Mining Fatigue to nearby players, so catching it as a pure surprise is part of the fun. Place this spawner strictly underwater: the plugin spawns mobs above the block without checking the environment, and fish on land will simply suffocate.

  • Cod COD — 30%
  • Salmon SALMON — 25%
  • Pufferfish PUFFERFISH — 15%
  • Tropical Fish TROPICAL_FISH — 15%
  • Guardian GUARDIAN — 13%
  • Elder Guardian ELDER_GUARDIAN — 2% (rare)

Rare

id rare, custom-model-data 690004. An 18-second interval, 3 mobs, radius 16, cap 15. Three dangerous zombie variants in roughly equal shares — the Drowned sometimes drops a trident or a nautilus shell, which a regular zombie never gives — and a Creeper at 4% on top. That's the set's real risk: a cycle can quietly drop an explosive guest next to buildings if the server doesn't suppress explosion damage to blocks.

  • Husk HUSK — 33%
  • Drowned DROWNED — 33%
  • Stray STRAY — 30%
  • Creeper CREEPER — 4% (rare)

Hellish

id hell, custom-model-data 690005. An 18-second interval, but a smaller batch — only 2 mobs per cycle, radius 16, cap 15. There is no rare sub-chance: all three mobs are a reward in themselves. The Wither Skeleton occasionally drops its skull, the Blaze drops rods for brewing and fuel, and the Magma Cube drops cream. And all of this without a trip to the Nether and without the risk of lava: the plugin spawns them on top of a regular block anywhere.

  • Wither Skeleton WITHER_SKELETON — 40%
  • Blaze BLAZE — 40%
  • Magma Cube MAGMA_CUBE — 20%

Village

id village, custom-model-data 690006. A 20-second interval (the slowest rhythm, on par with "Sea"), 2 mobs per cycle, radius 16, cap 15. Pillagers and Vindicators are the backbone of an illager raid, the Witch mixes in potions and rare ingredients, and at 3% there's the Evoker, the only mob in the whole plugin that is guaranteed to drop a Totem of Undying on death. It also summons vexes in the arena — the rare sub-chance here is both the juiciest reward and the most dangerous fight in the set.

  • Pillager PILLAGER — 40%
  • Vindicator VINDICATOR — 35%
  • Witch WITCH — 22%
  • Evoker EVOKER — 3% (rare)

Summary of rhythm and limits — "Sea" and "Village" spawn less often and in smaller batches than "Common":

SetIntervalMobs per cycleActivation radiusNearby cap
Friendly15 s316 blocks20
Common12 s316 blocks20
Sea20 s316 blocks15
Rare18 s316 blocks15
Hellish18 s216 blocks15
Village20 s216 blocks15

Indiana Jones Pickaxe

A separate donation tool — a golden pickaxe with an enchantment glint (Efficiency V, hidden from the tooltip by the hide-enchantments flag — purely for looks) and a superspawners:kirka tag in PDC. The mechanic is simple: one hit with the Pickaxe on a super spawner breaks the block, and a spawner item of its type drops with 100% certainty — pick it up and place it somewhere else. The Pickaxe itself is consumed after the hit — the stack drops by 1, and if it was the last one in hand, the hand empties. It's issued by a separate command, as a pair to the spawner items, and it can't be crafted or found in the world on its own.

There's a nuance on the edge of config editing: if a spawner type is deleted from spawner-types while a spawner of that type still stands in the world, it "falls asleep" — but if it's broken with the Pickaxe anyway, there's nothing to return (the plugin has no type definition to build a new item from), and in that case the Pickaxe is NOT consumed — the message will be the same as for ordinary breaking without a tool. The practical takeaway: don't remove a type from the config while spawners of that type remain in the world that someone still plans to properly break out.

Spawners in the server economy

The plugin doesn't just hand out mobs — it gives you levers for a donation ladder. The six out-of-the-box types split naturally by risk and usefulness: "Friendly" and "Common" are a safe starter set for lower ranks (wool, eggs, gunpowder, bones, string, no combat), while "Sea", "Rare", "Hellish", and "Village" are the higher tier, where every batch has a chance at a trophy like the Evoker's totem or the Wither Skeleton's skull. The rare sub-chance isn't decoration but a retention tool: a player farms a spawner not for a guaranteed drop but for the lottery on every cycle, and that holds interest in the rank longer than a one-time chest delivery.

The Indiana Pickaxe is a separate lever: without it, a spawner is bound to its placement point for good; with it, it's a portable asset that can be handed to another player or moved when a base relocates, but only by those who were given the Pickaxe by a separate command — they can't be mass-farmed. The PDC tag instead of a name protects the mechanic itself: you can't rename a regular block in an anvil and pass it off as a super spawner, since the plugin simply won't see the tag. And /spawners reload lets you tune balance — weights, intervals, caps — on a live server with no downtime if some rank turns out too strong or too weak.

Commands

All operations go through a single root /spawners (aliases /superspawners, /спавнеры), with one permission for everything — superspawners.admin.

  • /spawners give hell Vitaliy — give the player Vitaliy a "Hellish spawner" item (the first argument is the type id, a key from spawner-types in the config)
  • /spawners give friendly Newbie — a starter set for a newcomer
  • /spawners kirka Vitaliy — give the Indiana Jones Pickaxe
  • /spawners types (alias list) — a list of all types from the config right in chat: mob count, interval, batch size
  • /spawners reload — reload the whole config.yml: types, messages, scheduler settings; it does NOT recheck the license itself — only at plugin start

With an unknown type id, the command shows the list of available ones itself. An offline player as the recipient gets a polite refusal in chat, not an error in the console. Tab completion fills in type ids and online player names dynamically: a new type from the config appears in autocomplete immediately, and without the superspawners.admin permission the command isn't even highlighted.

Important: giving an item doesn't check for free space in the recipient's inventory and doesn't drop the item on the ground on overflow — if there aren't enough slots, the spawner or Pickaxe simply vanishes. Clear the recipient's inventory before a large giveaway.

Permissions

Everything hangs on a single permission — superspawners.admin, held by operators by default and grantable through any permissions plugin. It covers the whole /spawners command at once: giving spawners, giving the Pickaxe, the type list, and reload — there are no separate permissions for each action. Players without access to /spawners need no permissions at all — they simply receive a finished item and place it, and all the magic after that rests on the item's PDC tag, not on the permissions of whoever placed it.

Configuration

  • settings — the plugin's overall rhythm: tick-interval-ticks (20 ticks by default = the scheduler CHECKS spawners once a second; the actual spawn rhythm of each type is its own interval-seconds), spawn-y-offset (how many blocks above the spawner mobs appear, 1 by default), spawn-spread (horizontal scatter of the spawn point in blocks, ±1 by default; 0 is dead center of the block).
  • kirka — the Pickaxe's display-name and custom-model-data (690010 by default); the numbers for the spawners themselves are already taken by the 690001–690006 range, so a new type needs its own unique number outside that list.
  • spawner-types — the heart of the config: each type is its own entry, and the entry key = the id for commands. Fields: display-name, custom-model-data, interval-seconds, count-per-cycle, activation-range, max-nearby (0 means no local cap), and a mobs list (type + weight). An unknown mob name, a non-mob entity, or a weight ≤ 0 produces a log warning and skips that specific mob, and the rest of the set loads as is; if no valid mobs are left at all, the type will load but have nothing to spawn.
  • New type — the config already contains a commented-out "boss" template (Ravager 70% / Wither 30%, 30 s interval, 1 mob per cycle, radius 24, cap 4) as an example of the structure. It stays inactive until you uncomment it, give it its own custom-model-data (for example, 690007), and run /spawners reload — until then it isn't a seventh set, just a template in comments.
  • Reload and deleting a type — spawners already standing in the world are not reset on reload: they're bound to a type by id and simply pick up the new parameters. If a type is removed from the config entirely, its spawners don't break — they "fall asleep" (the scheduler skips entries with no type definition) and come back to life if the type is restored.
  • messages — 16 keys, all in Russian, from the prefix and permission errors to the texts for breaking and receiving the Pickaxe; edited directly in the config, with no plugin rebuild.
  • license — built-in leak protection: enabled, key, url, grace-hours. At startup the plugin sends the key to the validation server; if the license server is unavailable, there's a grace-hours reserve (24 by default) on the cache of the last successful check, but an explicit rejection (invalid key, used from another IP, revoked) disables the plugin immediately, with no grace. For a private server, the protection is turned off with a single enabled: false.
Six sets — from a peaceful farm to the Evoker's totem — rest on one idea: a spawner can't be hijacked with an egg, can't be taken apart with bare hands, and can't be faked by renaming. It can only be picked up properly, with the Indiana Pickaxe, and the donation ladder built around it is tuned in the config without a single restart.