From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Techcable Date: Fri, 16 Dec 2016 21:25:39 -0600 Subject: [PATCH] Add ProjectileCollideEvent Deprecated now and replaced with ProjectileHitEvent diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java index ad799d1d0f46663d5bc850763629f430d00b58fe..a4060019e30f6fc64e10494ed41d6613d1b894d7 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -1295,6 +1295,17 @@ public class CraftEventFactory { return CraftItemStack.asNMSCopy(bitem); } + // Paper start + @Deprecated + public static com.destroystokyo.paper.event.entity.ProjectileCollideEvent callProjectileCollideEvent(Entity entity, EntityHitResult position) { + Projectile projectile = (Projectile) entity.getBukkitEntity(); + org.bukkit.entity.Entity collided = position.getEntity().getBukkitEntity(); + com.destroystokyo.paper.event.entity.ProjectileCollideEvent event = new com.destroystokyo.paper.event.entity.ProjectileCollideEvent(projectile, collided); + Bukkit.getPluginManager().callEvent(event); + return event; + } + // Paper end + public static ProjectileLaunchEvent callProjectileLaunchEvent(Entity entity) { Projectile bukkitEntity = (Projectile) entity.getBukkitEntity(); ProjectileLaunchEvent event = new ProjectileLaunchEvent(bukkitEntity); @@ -1319,8 +1330,15 @@ public class CraftEventFactory { if (position.getType() == HitResult.Type.ENTITY) { hitEntity = ((EntityHitResult) position).getEntity().getBukkitEntity(); } + // Paper start - legacy event + boolean cancelled = false; + if (hitEntity != null && position instanceof EntityHitResult entityHitResult) { + cancelled = callProjectileCollideEvent(entity, entityHitResult).isCancelled(); + } + // Paper end ProjectileHitEvent event = new ProjectileHitEvent((Projectile) entity.getBukkitEntity(), hitEntity, hitBlock, hitFace); + event.setCancelled(cancelled); // Paper - propagate legacy event cancellation to modern event entity.level().getCraftServer().getPluginManager().callEvent(event); return event; }