base mod created

This commit is contained in:
Mohammad-Ali Minaie
2018-10-08 09:07:47 -04:00
parent 0a7700c356
commit b86dedad2f
7848 changed files with 584664 additions and 1 deletions

View File

@@ -0,0 +1,171 @@
package net.minecraft.util;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemFood;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.EnumDifficulty;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class FoodStats
{
/** The player's food level. */
private int foodLevel = 20;
/** The player's food saturation. */
private float foodSaturationLevel = 5.0F;
/** The player's food exhaustion. */
private float foodExhaustionLevel;
/** The player's food timer value. */
private int foodTimer;
private int prevFoodLevel = 20;
/**
* Add food stats.
*/
public void addStats(int foodLevelIn, float foodSaturationModifier)
{
this.foodLevel = Math.min(foodLevelIn + this.foodLevel, 20);
this.foodSaturationLevel = Math.min(this.foodSaturationLevel + (float)foodLevelIn * foodSaturationModifier * 2.0F, (float)this.foodLevel);
}
public void addStats(ItemFood foodItem, ItemStack stack)
{
this.addStats(foodItem.getHealAmount(stack), foodItem.getSaturationModifier(stack));
}
/**
* Handles the food game logic.
*/
public void onUpdate(EntityPlayer player)
{
EnumDifficulty enumdifficulty = player.world.getDifficulty();
this.prevFoodLevel = this.foodLevel;
if (this.foodExhaustionLevel > 4.0F)
{
this.foodExhaustionLevel -= 4.0F;
if (this.foodSaturationLevel > 0.0F)
{
this.foodSaturationLevel = Math.max(this.foodSaturationLevel - 1.0F, 0.0F);
}
else if (enumdifficulty != EnumDifficulty.PEACEFUL)
{
this.foodLevel = Math.max(this.foodLevel - 1, 0);
}
}
boolean flag = player.world.getGameRules().getBoolean("naturalRegeneration");
if (flag && this.foodSaturationLevel > 0.0F && player.shouldHeal() && this.foodLevel >= 20)
{
++this.foodTimer;
if (this.foodTimer >= 10)
{
float f = Math.min(this.foodSaturationLevel, 6.0F);
player.heal(f / 6.0F);
this.addExhaustion(f);
this.foodTimer = 0;
}
}
else if (flag && this.foodLevel >= 18 && player.shouldHeal())
{
++this.foodTimer;
if (this.foodTimer >= 80)
{
player.heal(1.0F);
this.addExhaustion(6.0F);
this.foodTimer = 0;
}
}
else if (this.foodLevel <= 0)
{
++this.foodTimer;
if (this.foodTimer >= 80)
{
if (player.getHealth() > 10.0F || enumdifficulty == EnumDifficulty.HARD || player.getHealth() > 1.0F && enumdifficulty == EnumDifficulty.NORMAL)
{
player.attackEntityFrom(DamageSource.STARVE, 1.0F);
}
this.foodTimer = 0;
}
}
else
{
this.foodTimer = 0;
}
}
/**
* Reads the food data for the player.
*/
public void readNBT(NBTTagCompound compound)
{
if (compound.hasKey("foodLevel", 99))
{
this.foodLevel = compound.getInteger("foodLevel");
this.foodTimer = compound.getInteger("foodTickTimer");
this.foodSaturationLevel = compound.getFloat("foodSaturationLevel");
this.foodExhaustionLevel = compound.getFloat("foodExhaustionLevel");
}
}
/**
* Writes the food data for the player.
*/
public void writeNBT(NBTTagCompound compound)
{
compound.setInteger("foodLevel", this.foodLevel);
compound.setInteger("foodTickTimer", this.foodTimer);
compound.setFloat("foodSaturationLevel", this.foodSaturationLevel);
compound.setFloat("foodExhaustionLevel", this.foodExhaustionLevel);
}
/**
* Get the player's food level.
*/
public int getFoodLevel()
{
return this.foodLevel;
}
/**
* Get whether the player must eat food.
*/
public boolean needFood()
{
return this.foodLevel < 20;
}
/**
* adds input to foodExhaustionLevel to a max of 40
*/
public void addExhaustion(float exhaustion)
{
this.foodExhaustionLevel = Math.min(this.foodExhaustionLevel + exhaustion, 40.0F);
}
/**
* Get the player's food saturation level.
*/
public float getSaturationLevel()
{
return this.foodSaturationLevel;
}
public void setFoodLevel(int foodLevelIn)
{
this.foodLevel = foodLevelIn;
}
@SideOnly(Side.CLIENT)
public void setFoodSaturationLevel(float foodSaturationLevelIn)
{
this.foodSaturationLevel = foodSaturationLevelIn;
}
}