Fix removal of items from Item Frames. Fixes BUKKIT-5736

This commit is contained in:
feildmaster 2014-08-02 16:03:50 -05:00
parent 594d7cb8c9
commit 971329c42b
2 changed files with 7 additions and 3 deletions

View file

@ -24,7 +24,7 @@ public class EntityItemFrame extends EntityHanging {
} else if (this.getItem() != null) {
if (!this.world.isStatic) {
// CraftBukkit start - fire EntityDamageEvent
if (org.bukkit.craftbukkit.event.CraftEventFactory.handleNonLivingEntityDamageEvent(this, damagesource, f) || this.dead) {
if (org.bukkit.craftbukkit.event.CraftEventFactory.handleNonLivingEntityDamageEvent(this, damagesource, f, false) || this.dead) {
return true;
}
// CraftBukkit end

View file

@ -564,8 +564,12 @@ public class CraftEventFactory {
return handleEntityDamageEvent(damagee, source, modifiers, modifierFunctions);
}
// Non-Living Entities such as EntityEnderCrystal, EntityItemFrame, and EntityFireball need to call this
// Non-Living Entities such as EntityEnderCrystal and EntityFireball need to call this
public static boolean handleNonLivingEntityDamageEvent(Entity entity, DamageSource source, double damage) {
return handleNonLivingEntityDamageEvent(entity, source, damage, true);
}
public static boolean handleNonLivingEntityDamageEvent(Entity entity, DamageSource source, double damage, boolean cancelOnZeroDamage) {
if (entity instanceof EntityEnderCrystal && !(source instanceof EntityDamageSource)) {
return false;
}
@ -580,7 +584,7 @@ public class CraftEventFactory {
if (event == null) {
return false;
}
return event.isCancelled() || event.getDamage() == 0;
return event.isCancelled() || (cancelOnZeroDamage && event.getDamage() == 0);
}
public static PlayerLevelChangeEvent callPlayerLevelChangeEvent(Player player, int oldLevel, int newLevel) {