(SilkSpawner/TokenEnchant/MergedMob etc support included!)

NOTE:  This plugin does not provide active mob spawn mechanism.  It acts on underlying spigot/bukkit's creature event.

For Plugin Support, please use the support site.  You can also use 
  vk2gpz plugin support channel

NOTICE: If you have stacked mobspawners created by pre v4.0.0 MergedSpawner plugin, they will automatically be updated to the newer merged spawners when one of the following happens:

  • add/remove a spawner,
  • mobs are spawned from the old merged spawner.

Since there is not any mobspawner merge plugin which does what I wanted, I made this...

How it works:
You first place a mob spawner, then you hit the placed mob spawner with another one (of the same kind).  The new one will not be placed (on/under/next to), but merged.  If you "break" the merged mob spawner, the count of the merged spawner will be decremented.

This plugin does not have mob stacking function. All spawned mobs are regular vanilla mobs.  Ofc, this plugin works fine with plugin like MergedMob as shown in the video below.

Video demo

NOTE: The mob stacking in the video is done by MergedMob plugin.  The information display header says "MergedMob" but it was my typo.

This plugin allows you to virtually stack mobspawner block of the same EntityType.  By using this merged mobspawner, you will significantly reduce the space required to build your mob grinders.  When mobs are spawned from the merged spawner, the number of spawned mob will be multiplied according to the number of merged spawners.

If plugins like MergedMob, SilkSpawners, this plugin will work with those plugins.  This plugin may not be work with some plugins, which carelessly hijacks events and not allowing other plugins to process those hijacked events.

Commands: (alias: mspawner)

  • /mergedspawner | /mergedspawner help : displays the help menu
  • /mergedspawner reload : reloads the configuration file.
  • /mergedspawner info : displays the information on the spawner you're looking at.
  • /mergedspawner clean : (in case the plugin malfunction and left orphant markers on the map) cleans out all the orphant markers on the map.
  • /mergedspawner give <player> <mobtype> <amount> : gives <player> <amount> spawner of type <mobtype>.
  • /mergedspawner set <mobtype> [amount] : changes the mob type of the spawner you're looking at to <mobtype> and set the stacked size to [amount].
  • /mergedspawner fix : try to fix the spawner data based on the 'MergeMode:' option in the config.yml
  • /mergedspanwer sethand <mobtype>: changes the mob type of the spawner you're holding at to <mobtype>.

Permission Node:

  • mergedspawner.reload : allows you to reload the config file.
  • mergedspawner.clean : allows you to execute "clean" command.
  • mergedspawner.give : allows you to use "give" command.
      permissions added from v12

  • mergedspawner.* (false) : Grants access to all other permissions
  • mergedspawner.place.* or mergedspawner.place.<creaturetype_in_lowercase> : Allows you to place a spawner
  • mergedspawner.silkdrop.* or mergedspawner.silkdrop<creaturetype_in_lowercase> : Allows you to use silk touch to acquire mob spawner item.  To use this perm, make sure to give your player the following (mergedspawner.destroydrop.* or mergedspawner.destroydrop.<creaturetype_in_lowercase> perm node as well)
  • mergedspawner.destroydrop.* or mergedspawner.destroydrop.<creaturetype_in_lowercase> : Allows you to destroy mob spawners.
  • mergedspawner.explodedrop : Allows you to receive drops from exploded spawners
  • mergedspawner.changetypewithegg.* or mergedspawner.changetypewithegg.<creaturetype_in_lowercase> : Allows you to change the spawner type by clicking with a spawn egg
  • mergedspawner.set.* or mergedspawner.set.<creaturetype_in_lowercase> : Allows you to use "set" command.
  • mergedspawner.sethand : Allows you to use sethand command.

You just install MergedSpawner.jar into "plugins" folder.


For Developers:
You can develop your plugin, which talks to MergedSpawner using MergedSpawnerAPI.  If you have a plugin, from which you wish to find out how many spawners are stacked in the spawner, you can invoke the following static method:

MergedSpawner.getCountFor(Block spawner);

If you wish to use an event-driven approach, you can use the follwing events:

public void onMergedSpawnerPlaced(MergedSpawnerPlaceEvent e) {
    Block spawnerBlock = e.getSpawner();
    int newCount = e.getSpawnerCount();
    EntityType type = e.getSpawnerType();

public void onMergedSpawnerBroken(MergedSpawnerBreakEvent e) {
    Block spawnerBlock = e.getSpawner();
    int newCount = e.getSpawnerCount();
    EntityType type = e.getSpawnerType();