From bc40f57163b0dc8185a47db0da79731bcf5a4b45 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 0bd686ee2..4f7dc23d6 100644 --- a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java +++ b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java @@ -135,6 +135,18 @@ public abstract class MobSpawnerAbstract { } // Spigot End } + // Spigot Start + if (org.bukkit.craftbukkit.event.CraftEventFactory.callSpawnerSpawnEvent(entity, blockposition).isCancelled()) { + Entity vehicle = entity.getVehicle(); + if (vehicle != null) { + vehicle.dead = true; + } + for (Entity passenger : entity.getAllPassengers()) { + passenger.dead = true; + } + continue; + } + // Spigot End this.a(entity); 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 290d2c814..28f2b741c 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -217,6 +217,8 @@ import org.bukkit.inventory.meta.BookMeta; import org.bukkit.potion.PotionEffect; import org.bukkit.projectiles.ProjectileSource; +import org.bukkit.event.entity.SpawnerSpawnEvent; // Spigot + public class CraftEventFactory { public static final DamageSource MELTING = CraftDamageSource.copyOf(DamageSource.BURN); public static final DamageSource POISON = CraftDamageSource.copyOf(DamageSource.MAGIC); @@ -1418,6 +1420,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.25.1