diff --git a/nms-patches/EntityFireworks.patch b/nms-patches/EntityFireworks.patch index 8b13789179..4da644dbc8 100644 --- a/nms-patches/EntityFireworks.patch +++ b/nms-patches/EntityFireworks.patch @@ -1 +1,11 @@ - +--- a/net/minecraft/server/EntityFireworks.java ++++ b/net/minecraft/server/EntityFireworks.java +@@ -78,7 +78,7 @@ + } + + if (!this.world.isClientSide && this.ticksFlown > this.expectedLifespan) { +- this.world.broadcastEntityEffect(this, (byte) 17); ++ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callFireworkExplodeEvent(this).isCancelled()) this.world.broadcastEntityEffect(this, (byte) 17); + this.die(); + } + diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java index 9e471c782f..f0d3f754ba 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -34,6 +34,7 @@ import org.bukkit.craftbukkit.util.CraftMagicNumbers; import org.bukkit.entity.Arrow; import org.bukkit.entity.Creeper; import org.bukkit.entity.EntityType; +import org.bukkit.entity.Firework; import org.bukkit.entity.Horse; import org.bukkit.entity.LightningStrike; import org.bukkit.entity.LivingEntity; @@ -946,4 +947,10 @@ public class CraftEventFactory { entityHuman.world.getServer().getPluginManager().callEvent(event); return (Cancellable) event; } + + public static FireworkExplodeEvent callFireworkExplodeEvent(EntityFireworks firework) { + FireworkExplodeEvent event = new FireworkExplodeEvent((Firework) firework.getBukkitEntity()); + firework.world.getServer().getPluginManager().callEvent(event); + return event; + } }