mirror of
https://github.com/barkeser2002/CatServer.git
synced 2026-09-25 10:06:11 +03:00
90 lines
3.5 KiB
Diff
90 lines
3.5 KiB
Diff
--- ../src-base/minecraft/net/minecraft/util/FoodStats.java
|
|
+++ ../src-work/minecraft/net/minecraft/util/FoodStats.java
|
|
@@ -1,20 +1,36 @@
|
|
package net.minecraft.util;
|
|
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
+import net.minecraft.entity.player.EntityPlayerMP;
|
|
import net.minecraft.item.ItemFood;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
+import net.minecraft.network.play.server.SPacketUpdateHealth;
|
|
import net.minecraft.world.EnumDifficulty;
|
|
import net.minecraftforge.fml.relauncher.Side;
|
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
|
|
|
+// CraftBukkit start
|
|
+import org.bukkit.craftbukkit.event.CraftEventFactory;
|
|
+import org.bukkit.event.entity.FoodLevelChangeEvent;
|
|
+// CraftBukkit end
|
|
+
|
|
public class FoodStats
|
|
{
|
|
- private int foodLevel = 20;
|
|
- private float foodSaturationLevel = 5.0F;
|
|
- private float foodExhaustionLevel;
|
|
+ public int foodLevel = 20;
|
|
+ public float foodSaturationLevel = 5.0F;
|
|
+ public float foodExhaustionLevel;
|
|
private int foodTimer;
|
|
private int prevFoodLevel = 20;
|
|
+ private EntityPlayer entityplayer; // CraftBukkit
|
|
+
|
|
+ // CraftBukkit start - added EntityPlayer constructor
|
|
+ public FoodStats(EntityPlayer entityplayer)
|
|
+ {
|
|
+ org.apache.commons.lang.Validate.notNull(entityplayer);
|
|
+ this.entityplayer = entityplayer;
|
|
+ }
|
|
+ // CraftBukkit end
|
|
|
|
public void addStats(int foodLevelIn, float foodSaturationModifier)
|
|
{
|
|
@@ -24,7 +40,15 @@
|
|
|
|
public void addStats(ItemFood foodItem, ItemStack stack)
|
|
{
|
|
- this.addStats(foodItem.getHealAmount(stack), foodItem.getSaturationModifier(stack));
|
|
+ // CraftBukkit start
|
|
+ int oldFoodLevel = this.foodLevel;
|
|
+
|
|
+ FoodLevelChangeEvent event = CraftEventFactory.callFoodLevelChangeEvent(this.entityplayer, foodItem.getHealAmount(stack) + oldFoodLevel);
|
|
+ if (!event.isCancelled()) {
|
|
+ addStats(event.getFoodLevel() - oldFoodLevel, foodItem.getSaturationModifier(stack));
|
|
+ }
|
|
+ ((EntityPlayerMP) entityplayer).connection.sendPacket(new SPacketUpdateHealth(((EntityPlayerMP)entityplayer).getBukkitEntity().getScaledHealth(), this.foodLevel, this.foodSaturationLevel));
|
|
+ // CraftBukkit end
|
|
}
|
|
|
|
public void onUpdate(EntityPlayer player)
|
|
@@ -42,7 +66,16 @@
|
|
}
|
|
else if (enumdifficulty != EnumDifficulty.PEACEFUL)
|
|
{
|
|
- this.foodLevel = Math.max(this.foodLevel - 1, 0);
|
|
+ // CraftBukkit start
|
|
+ FoodLevelChangeEvent event = CraftEventFactory.callFoodLevelChangeEvent(entityplayer, Math.max(this.foodLevel - 1, 0));
|
|
+
|
|
+ if (!event.isCancelled())
|
|
+ {
|
|
+ this.foodLevel = event.getFoodLevel();
|
|
+ }
|
|
+
|
|
+ ((EntityPlayerMP) entityplayer).connection.sendPacket(new SPacketUpdateHealth(((EntityPlayerMP) entityplayer).getBukkitEntity().getScaledHealth(), this.foodLevel, this.foodSaturationLevel));
|
|
+ // CraftBukkit end
|
|
}
|
|
}
|
|
|
|
@@ -66,8 +99,9 @@
|
|
|
|
if (this.foodTimer >= 80)
|
|
{
|
|
- player.heal(1.0F);
|
|
- this.addExhaustion(4.0F);
|
|
+ // CraftBukkit - added RegainReason
|
|
+ player.heal(1.0F, org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason.SATIATED);
|
|
+ this.addExhaustion(player.worldObj.spigotConfig.regenExhaustion); // Spigot - Change to use configurable value
|
|
this.foodTimer = 0;
|
|
}
|
|
}
|