[Bleeding] Add missing HangingBreakEvent. Fixes BUKKIT-3943

The old PaintingBreakByEntityEvent was deprecated and replaced by
HangingBreakByEntityEvent. However, in the case of being struck by
lightning, only the deprecated event was being called. This fixes that so
that both the new and old events are called appropriately.
This commit is contained in:
GJ 2014-01-24 08:55:26 -08:00 committed by Travis Watkins
parent a81f26716d
commit eb43d0637c

View File

@ -11,10 +11,12 @@ import org.bukkit.Location;
import org.bukkit.Server;
import org.bukkit.TravelAgent;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Hanging;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Painting;
import org.bukkit.entity.Vehicle;
import org.bukkit.event.entity.EntityCombustByEntityEvent;
import org.bukkit.event.hanging.HangingBreakByEntityEvent;
import org.bukkit.event.painting.PaintingBreakByEntityEvent;
import org.bukkit.event.vehicle.VehicleBlockCollisionEvent;
import org.bukkit.event.vehicle.VehicleEnterEvent;
@ -1588,11 +1590,22 @@ public abstract class Entity {
final org.bukkit.entity.Entity stormBukkitEntity = entitylightning.getBukkitEntity();
final PluginManager pluginManager = Bukkit.getPluginManager();
if (thisBukkitEntity instanceof Painting) {
PaintingBreakByEntityEvent event = new PaintingBreakByEntityEvent((Painting) thisBukkitEntity, stormBukkitEntity);
pluginManager.callEvent(event);
if (thisBukkitEntity instanceof Hanging) {
HangingBreakByEntityEvent hangingEvent = new HangingBreakByEntityEvent((Hanging) thisBukkitEntity, stormBukkitEntity);
PaintingBreakByEntityEvent paintingEvent = null;
if (event.isCancelled()) {
if (thisBukkitEntity instanceof Painting) {
paintingEvent = new PaintingBreakByEntityEvent((Painting) thisBukkitEntity, stormBukkitEntity);
}
pluginManager.callEvent(hangingEvent);
if (paintingEvent != null) {
paintingEvent.setCancelled(hangingEvent.isCancelled());
pluginManager.callEvent(paintingEvent);
}
if (hangingEvent.isCancelled() || (paintingEvent != null && paintingEvent.isCancelled())) {
return;
}
}