diff options
Diffstat (limited to 'src/main/java/net/minecraft/server/MobEffectList.java')
-rw-r--r-- | src/main/java/net/minecraft/server/MobEffectList.java | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/main/java/net/minecraft/server/MobEffectList.java b/src/main/java/net/minecraft/server/MobEffectList.java index dbbe63ce..a66e66cb 100644 --- a/src/main/java/net/minecraft/server/MobEffectList.java +++ b/src/main/java/net/minecraft/server/MobEffectList.java @@ -95,7 +95,18 @@ public class MobEffectList { ((EntityHuman) entityliving).a(0.025F * (float) (i + 1)); } else if (this.id == SATURATION.id && entityliving instanceof EntityHuman) { if (!entityliving.world.isStatic) { - ((EntityHuman) entityliving).getFoodData().eat(i + 1, 1.0F); + // CraftBukkit start + EntityHuman entityhuman = (EntityHuman) entityliving; + int oldFoodLevel = entityhuman.getFoodData().foodLevel; + + org.bukkit.event.entity.FoodLevelChangeEvent event = CraftEventFactory.callFoodLevelChangeEvent(entityhuman, i + 1 + oldFoodLevel); + + if (!event.isCancelled()) { + entityhuman.getFoodData().eat(event.getFoodLevel() - oldFoodLevel, 1.0F); + } + + ((EntityPlayer) entityhuman).playerConnection.sendPacket(new PacketPlayOutUpdateHealth(((EntityPlayer) entityhuman).getBukkitEntity().getScaledHealth(), entityhuman.getFoodData().foodLevel, entityhuman.getFoodData().saturationLevel)); + // CraftBukkit end } } else if ((this.id != HEAL.id || entityliving.aQ()) && (this.id != HARM.id || !entityliving.aQ())) { if (this.id == HARM.id && !entityliving.aQ() || this.id == HEAL.id && entityliving.aQ()) { |