From 92f771a022593c0b10349f2096b4d892e93f7807 Mon Sep 17 00:00:00 2001 From: Celtic Minstrel Date: Mon, 12 Mar 2012 12:45:09 -0400 Subject: [PATCH] [Bleeding] Implemented ProjectileLaunchEvent. Addresses BUKKIT-284 --- src/main/java/net/minecraft/server/World.java | 5 +++++ .../org/bukkit/craftbukkit/event/CraftEventFactory.java | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java index 976dbe0c70..8a35b54f45 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -897,6 +897,11 @@ public class World implements IBlockAccess { if (event.isCancelled()) { return false; } + } else if (entity.getBukkitEntity() instanceof org.bukkit.entity.Projectile) { + // Not all projectiles extend EntityProjectile, so check for Bukkit interface instead + if (CraftEventFactory.callProjectileLaunchEvent(entity).isCancelled()) { + return false; + } } // CraftBukkit end diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java index 9116adfab2..e7aad88651 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -491,4 +491,11 @@ public class CraftEventFactory { return CraftItemStack.createNMSItemStack(bitem); } + + public static ProjectileLaunchEvent callProjectileLaunchEvent(Entity entity) { + Projectile bukkitEntity = (Projectile) entity.getBukkitEntity(); + ProjectileLaunchEvent event = new ProjectileLaunchEvent(bukkitEntity); + Bukkit.getPluginManager().callEvent(event); + return event; + } }