diff --git a/CraftBukkit-Patches/0149-Implement-SpawnerSpawnEvent.patch b/CraftBukkit-Patches/0149-Implement-SpawnerSpawnEvent.patch new file mode 100644 index 0000000000..94eb3e69ca --- /dev/null +++ b/CraftBukkit-Patches/0149-Implement-SpawnerSpawnEvent.patch @@ -0,0 +1,45 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: md_5 +Date: Thu, 3 Mar 2016 19:45:46 +1100 +Subject: [PATCH] Implement SpawnerSpawnEvent. + + +diff --git a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java ++++ b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java +@@ -0,0 +0,0 @@ public abstract class MobSpawnerAbstract { + { + entity.fromMobSpawner = true; + } ++ if (org.bukkit.craftbukkit.event.CraftEventFactory.callSpawnerSpawnEvent(entity, blockposition).isCancelled()) { ++ continue; ++ } + // Spigot End + ChunkRegionLoader.a(entity, world, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.SPAWNER); // CraftBukkit + world.triggerEffect(2004, blockposition, 0); +diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java ++++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +@@ -0,0 +0,0 @@ public class CraftEventFactory { + event.getInventory().setItem(2, event.getResult()); + return event; + } ++ ++ /** ++ * Mob spawner event. ++ */ ++ public static SpawnerSpawnEvent callSpawnerSpawnEvent(Entity spawnee, BlockPosition pos) { ++ org.bukkit.craftbukkit.entity.CraftEntity entity = spawnee.getBukkitEntity(); ++ BlockState state = entity.getWorld().getBlockAt(pos.getX(), pos.getY(), pos.getZ()).getState(); ++ if (!(state instanceof org.bukkit.block.CreatureSpawner)) { ++ state = null; ++ } ++ ++ SpawnerSpawnEvent event = new SpawnerSpawnEvent(entity, (org.bukkit.block.CreatureSpawner) state); ++ entity.getServer().getPluginManager().callEvent(event); ++ return event; ++ } + } +-- \ No newline at end of file