DonutSpawners spawners don't spawn mobs. While a player is nearby, each spawner fills its own storage with that mob's drops and XP. Right-clicking it opens a menu where the player sells the drops for money and collects the XP. Placing more spawners of the same type on it stacks them, so one block can hold hundreds.
On top of that there are sell wands that empty every spawner around a player at once, boosters that double output for a while, and an optional corruption system that stops a spawner every few hours until its owner solves a short puzzle.
Permissions#
| Permission | Lets a player | Default |
|---|---|---|
donutspawners.admin | Use every /donutspawners command except booster. | OP |
Using, stacking and selling from spawners needs no permission.
Commands#
| Command | What it does | Permission |
|---|---|---|
/donutspawners | Shows the command list. | None |
/donutspawners booster | Shows how long your booster has left. | None |
/donutspawners give <type> <player> [amount] | Gives spawners of a mob type, such as zombie. | donutspawners.admin |
/donutspawners give booster <player> [amount] | Gives boosters. | donutspawners.admin |
/donutspawners give sellwand <player> [uses] | Gives a sell wand with a number of uses. | donutspawners.admin |
/donutspawners corrupt [all] | Corrupts the spawner you're looking at, or every spawner. | donutspawners.admin |
/donutspawners uncorrupt [all] | Clears corruption from the spawner you're looking at, or every spawner. | donutspawners.admin |
/donutspawners reload | Reloads every config file. | donutspawners.admin |
/donutspawners version | Shows the plugin version. | donutspawners.admin |

Configuration#
| File | What it controls |
|---|---|
config.yml | License key, ranges, boosters, corruption, mining rules, holograms, economy and storage. |
mobs/<type>.yml | One spawner type each: drops, prices, storage size and XP. |
menu/*.yml | The spawner, storage and puzzle menus. |
messages.yml | Every message, with a prefix and action bar option. |
sounds.yml | Sounds for collecting, selling, the wand and the puzzle. |
Spawner types#
25 types ship ready to use: axolotl, blaze, camel, cave-spider, chicken, cow, creeper, drowned, enderman, glow-squid, goat, horse, iron-golem, magma-cube, pig, pillager, rabbit, sheep, skeleton, slime, spider, vex, witch, wolf and zombie.
mob: ZOMBIE
storage: 15000
storage-xp: 12000
items:
1:
material: ROTTEN_FLESH
amount: 1-3
worth: 70
spawn-rate: 15
chance: 100
2:
material: IRON_INGOT
amount: 1-2
worth: 30
spawn-rate: 10
chance: 100
xp: 10
name: "Zombie Spawner"| Key | What it does |
|---|---|
storage / storage-xp | Most items and XP one spawner holds before it stops filling. |
items.<id>.amount | How many drop at a time, as a number or a range like 1-3. |
items.<id>.worth | Sell price per item. |
items.<id>.spawn-rate | How often this drop is added. |
items.<id>.chance | Chance in percent that it drops each time. |
xp | XP added per cycle. |
head | The icon inside the spawner menu. |
config.yml#
| Key | Default | What it does |
|---|---|---|
spawner-range | 40 | A spawner only fills while a player is within this many blocks. |
wand-range | 40 | Radius a sell wand empties. |
booster-duration | 12 hours | How long a booster lasts. |
booster-multiplier | 2 | Output multiplier while a booster is on. |
max-spawner-stack | -1 | Most spawners in one stack. -1 means no limit. |
inventory-placing | false | Shift-placing puts every spawner of that type from your inventory into the stack. |
virtual-on-interact | true | Turn a normal world spawner into a DonutSpawners spawner when someone uses it. |
disable-pickup | false | Stop players from mining spawners back up. |
explosion-protection | true | Explosions don't break spawners. |
blacklisted-worlds | othersite | Worlds where spawners can't be placed. |
gui.show-percentage | true | Show storage as a percentage. |
economy.name | Vault | Vault or CoinsEngine. For CoinsEngine, set its currency-name. |
database.type | filesystem | filesystem, sqlite, mysql or mongodb. |
placeholderapi-hook | false | Register the placeholders when PlaceholderAPI is installed. |
Mining spawners#
mine:
everything: true
multi-pick: true
silk-touch: true
types:
- DIAMOND_PICKAXE
- IRON_PICKAXEWith everything: true, any tool or a bare hand breaks a spawner. Set it to false to use the rules below it: multi-pick allows any pickaxe, silk-touch requires Silk Touch, and types lists the pickaxes allowed.
Holograms#
Set holograms.provider to DecentHolograms, FancyHolograms or HolographicDisplays to show a hologram over each spawner. Lines take {amount}, {spawner_name}, {storage_bar} and {xp_bar}, and vertical_offset (default 1.8) sets the height. Empty turns holograms off.
Update alerts#
Staff with blazez.updates (OPs by default) get one chat message when they join, listing every installed BlazeZ plugin that has an update waiting. It stays off until you set check-for-updates: true in this plugin's license.yml.
Install#
- Install Vault and an economy plugin. DonutSpawners doesn't load without Vault.
- Put the DonutSpawners jar in
plugins/and start the server once to create the files above. - Paste your license key into
license-keyinconfig.yml. Your key is under My Licenses on the BlazeZ portal; licenses linked to your Discord account show up there automatically. If yours is missing, open a License Key ticket in the BlazeZ Discord. - Restart the server, then give yourself a spawner with
/donutspawners give zombie <your name>. - After editing files, run
/donutspawners reload.
Sell wands and boosters#
A sell wand sells the stored drops of every spawner within wand-range blocks when right-clicked, and uses up one of its uses. Give one with /donutspawners give sellwand <player> <uses>.
A booster is a consumable item. Using it multiplies the player's spawner output by booster-multiplier for booster-duration. A player can only have one booster running at a time. The look of both items is set under sell-wand-item and booster-item.
Corruption#
With corruption.enabled: true (the default), each spawner corrupts after interval of farming (default 6 hours) and stops filling. To fix it, the player right-clicks it and repeats a sequence of puzzle.sequence-length flashing panes (default 4) in the right order. Set enabled: false to turn corruption off.
Staff can corrupt or clear spawners by hand with /donutspawners corrupt and uncorrupt, looking at a spawner or with all.
Placeholders#
Set placeholderapi-hook: true and install PlaceholderAPI.
| Placeholder | Returns |
|---|---|
%donutspawners_total% | Spawner blocks on the server. |
%donutspawners_total_stacked% | Spawners on the server, counting every one in a stack. |
%donutspawners_nearby% | Spawner blocks within spawner-range of the player. |
%donutspawners_nearby_stacked% | Spawners within spawner-range of the player, counting stacks. |
%donutspawners_boosted% | Whether the player has a booster running. |
%donutspawners_booster_time% | Time left on the player's booster. |
Developer API#
DonutSpawners fires three cancellable Bukkit events from net.luxcube.minecraft.api.event, on the main thread before anything changes. Cancelling one leaves the spawner, the stack and the player's inventory as they were.
| Event | Fires when |
|---|---|
SpawnerPlaceEvent | A spawner is placed. getPlayer(), getBlock(), getSpawnerType(). |
SpawnerStackEvent | Spawners are added to a stack. getPlayer(), getBlock(), getSpawnerId(), getSpawnerType(), getStackSize(), getAmount(). |
SpawnerBreakEvent | Spawners are mined from a stack. Same getters as SpawnerStackEvent. |
Add softdepend: [DonutSpawners] to your plugin.yml.