Skip to content
BlazeZDocs

DonutSpawners

Stackable spawners that store drops and XP in a menu instead of spawning mobs, with sell wands and boosters.

Version
1.1.8
Runs on
Paper, Purpur
Minecraft
1.21+
Java
17+
Requires
Vault
Works with
PlaceholderAPI, CoinsEngine, DecentHolograms, FancyHolograms, HolographicDisplays
On this page

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#

PermissionLets a playerDefault
donutspawners.adminUse every /donutspawners command except booster.OP

Using, stacking and selling from spawners needs no permission.

Commands#

CommandWhat it doesPermission
/donutspawnersShows the command list.None
/donutspawners boosterShows 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 reloadReloads every config file.donutspawners.admin
/donutspawners versionShows the plugin version.donutspawners.admin
DonutSpawners command list
The command list from /donutspawners.

Configuration#

FileWhat it controls
config.ymlLicense key, ranges, boosters, corruption, mining rules, holograms, economy and storage.
mobs/<type>.ymlOne spawner type each: drops, prices, storage size and XP.
menu/*.ymlThe spawner, storage and puzzle menus.
messages.ymlEvery message, with a prefix and action bar option.
sounds.ymlSounds 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.

mobs/zombie.yml
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"
KeyWhat it does
storage / storage-xpMost items and XP one spawner holds before it stops filling.
items.<id>.amountHow many drop at a time, as a number or a range like 1-3.
items.<id>.worthSell price per item.
items.<id>.spawn-rateHow often this drop is added.
items.<id>.chanceChance in percent that it drops each time.
xpXP added per cycle.
headThe icon inside the spawner menu.

config.yml#

KeyDefaultWhat it does
spawner-range40A spawner only fills while a player is within this many blocks.
wand-range40Radius a sell wand empties.
booster-duration12 hoursHow long a booster lasts.
booster-multiplier2Output multiplier while a booster is on.
max-spawner-stack-1Most spawners in one stack. -1 means no limit.
inventory-placingfalseShift-placing puts every spawner of that type from your inventory into the stack.
virtual-on-interacttrueTurn a normal world spawner into a DonutSpawners spawner when someone uses it.
disable-pickupfalseStop players from mining spawners back up.
explosion-protectiontrueExplosions don't break spawners.
blacklisted-worldsothersiteWorlds where spawners can't be placed.
gui.show-percentagetrueShow storage as a percentage.
economy.nameVaultVault or CoinsEngine. For CoinsEngine, set its currency-name.
database.typefilesystemfilesystem, sqlite, mysql or mongodb.
placeholderapi-hookfalseRegister the placeholders when PlaceholderAPI is installed.

Mining spawners#

config.yml
mine:
  everything: true
  multi-pick: true
  silk-touch: true
  types:
    - DIAMOND_PICKAXE
    - IRON_PICKAXE

With 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#

  1. Install Vault and an economy plugin. DonutSpawners doesn't load without Vault.
  2. Put the DonutSpawners jar in plugins/ and start the server once to create the files above.
  3. Paste your license key into license-key in config.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.
  4. Restart the server, then give yourself a spawner with /donutspawners give zombie <your name>.
  5. 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.

PlaceholderReturns
%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.

EventFires when
SpawnerPlaceEventA spawner is placed. getPlayer(), getBlock(), getSpawnerType().
SpawnerStackEventSpawners are added to a stack. getPlayer(), getBlock(), getSpawnerId(), getSpawnerType(), getStackSize(), getAmount().
SpawnerBreakEventSpawners are mined from a stack. Same getters as SpawnerStackEvent.
@EventHandler
public void onStack(SpawnerStackEvent event) {
    if (event.getStackSize() + event.getAmount() > 100) {
        event.setCancelled(true);
    }
}

Add softdepend: [DonutSpawners] to your plugin.yml.