From 3915e4f8fec3e645a5a878c319dd15ff836a3528 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 efe792b..a7903a2 100644 --- a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java +++ b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java @@ -99,6 +99,9 @@ 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 3b7243b..f99b01f 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -985,6 +985,21 @@ public class CraftEventFactory { 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; + } + public static EntityToggleGlideEvent callToggleGlideEvent(EntityLiving entity, boolean gliding) { EntityToggleGlideEvent event = new EntityToggleGlideEvent((LivingEntity) entity.getBukkitEntity(), gliding); entity.world.getServer().getPluginManager().callEvent(event); -- 2.5.0