import: de.tr7zw.nbtapi.NBTItem de.tr7zw.nbtapi.NBTContainer de.tr7zw.nbtapi.NBTTileEntity de.tr7zw.nbtapi.NBTCompoundList de.tr7zw.nbtapi.NBTListCompound java.lang.Long org.bukkit.inventory.ItemStack org.bukkit.Material org.bukkit.event.block.BlockBreakEvent options: PotrzebnySilk: false DropOnCreative: false DontExplode: true on EntityExplodeEvent: stop if {@DontExplode} is false set {_list} to event.blockList().iterator() while {_list}.hasNext(): if {_list}.next().getType() is Material.SPAWNER: {_list}.remove() on BlockBreakEvent: if event.getBlock() is spawner: if {@PotrzebnySilk} is true: if level of silk touch of event.getPlayer()'s tool is not set: stop if {@DropOnCreative} is false: if event.getPlayer()'s gamemode is creative: stop event.setExpToDrop(0.intValue()) set {_ver::*} to minecraft version split at "." set {_b} to new NBTTileEntity(event.getBlock().getState()) if {_ver::2} is less than 18: set {_comp} to {_b}.getCompound("SpawnData") set {_m} to {_comp}.getString("id") else: set {_comp} to {_b}.getCompound("SpawnData") set {_comp} to {_comp}.getCompound("entity") set {_m} to {_comp}.getString("id") drop 1 of getSpawner({_m}) at event.getBlock() on place: if event-block is spawner: set {_n} to event.getItemInHand() set {_i} to new NBTItem({_n}) set {_m} to {_i}.getString("spawners.mob") set {_ver::*} to minecraft version split at "." set {_b} to new NBTTileEntity(event-block.getState()) if {_ver::2} is less than 18: set {_comp0} to {_b}.getCompound("SpawnData") {_comp0}.setString("id", {_m}) set {_t} to new NBTContainer("{SpawnPotentials:[{Weight:1,Entity:{id:""%{_m}%""}}]}") else: set {_t} to new NBTContainer("{SpawnData:{entity:{id:""%{_m}%""}}}") {_b}.mergeCompound({_t}) function getSpawner(s: string) :: item: set {_i} to new NBTItem(spawner) replace all "minecraft:" with "" in {_s} {_i}.setString("spawners.mob", "minecraft:%{_s}%") set {_i} to {_i}.getItem() return {_i}