package minefantasy.item;
import java.util.List;
import java.util.Random;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import minefantasy.system.data_minefantasy;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemFood;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.Icon;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
public class ItemFoodIngreedient extends ItemFood
{
private Icon[] icons;
public ItemFoodIngreedient(int id) {
super(id, 1, 0.1F, false);
setHasSubtypes(true);
setMaxDamage(0);
}
public ItemStack onEaten(ItemStack item, World world, EntityPlayer player)
{
int m = item.getItemDamage();
--item.stackSize;
player.getFoodStats().addStats(getHealAmount(m), getSaturation(m));
world.playSoundAtEntity(player, "random.burp", 0.5F, world.rand.nextFloat() * 0.1F + 0.9F);
this.onFoodEaten(item, world, player);
return item;
}
private float getSaturation(int m)
{
return (Float) (getStats()[m][2]);
}
private int getHealAmount(int m)
{
return (Integer) (getStats()[m][1]);
}
protected void onFoodEaten(ItemStack item, World world, EntityPlayer player)
{
int m = item.getItemDamage();
if(isPoison(item.getItemDamage()) && getStats()[m].length >= 11)
{
int potionId = (Integer) getStats()[m][7];
int potionDuration = (Integer) getStats()[m][8];
int potionAmplifier = (Integer) getStats()[m][9];
float potionEffectProbability = (Float) getStats()[m][10];
if (!world.isRemote && potionId > 0 && world.rand.nextFloat() < potionEffectProbability)
{
player.addPotionEffect(new PotionEffect(potionId, potionDuration * 20, potionAmplifier));
}
}
}
private boolean isPoison(int m) {
return (Boolean) (getStats()[m][4]);
}
public int getMaxItemUseDuration(ItemStack item)
{
return (Integer) getStats()[item.getItemDamage()][6];
}
public void getSubItems(int id, CreativeTabs tabs, List list)
{
for (int n = 0; n < getStats().length ; ++n)
{
ItemStack item = new ItemStack(id, 1, n);
if(!getItemDisplayName(item).endsWith("Unused"))
list.add(item);
}
}
@Override
public Icon getIconFromDamage(int id) {
return icons[id];
}
@Override
public String getItemDisplayName(ItemStack item)
{
int type = item.getItemDamage();
String n = "ingreedient.mf." + (String)(getStats()[type][0]);
return StatCollector.translateToLocal(n);
}
/**
* 0: Name, 1: Heal, 2: Saturation, 3: Meat, 4: Poison, 5: Icon, 6: EatTime, 7: Effect, 8: Dura, 9: Potency, 10: Chance
*/
private Object[][] getStats()
{
return new Object[][]
{
/*
new Object[]{"breadslice", 1, 0.1F, false, false, "breadSlice", 16},//0
new Object[]{"stripsBeef", 1, 0.1F, true, false, "stripsBeef", 16},//1
new Object[]{"stripsBeefCooked", 3, 0.3F, true, false, "stripsBeef_cooked", 16},//2
new Object[]{"bacon", 1, 0.1F, true, false, "baconRaw", 16},//3
new Object[]{"baconCooked", 3, 0.3F, true, false, "baconCooked", 16},//4
new Object[]{"chicken", 1, 0.1F, true, true, "filletChicken", 16, Potion.hunger.id, 30, 0, 0.3F},//5
new Object[]{"chickenCooked", 2, 0.2F, true, false, "filletChicken_cooked", 16},//6
new Object[]{"sandwitchBeef", 10, 10.0F, false, true, "sandwitch", 40, Potion.regeneration.id, 2, 0, 1.0F},//7
new Object[]{"sandwitchBacon", 10, 10.0F, false, true, "sandwitch", 40, Potion.regeneration.id, 2, 0, 1.0F},//8
new Object[]{"sandwitchChicken", 8, 8.0F, false, true, "sandwitch", 40, Potion.regeneration.id, 2, 0, 1.0F},//9
new Object[]{"sandwitchFish", 6, 6.0F, false, true, "sandwitch", 40, Potion.regeneration.id, 2, 0, 1.0F},//10
new Object[]{"mushroomBrown", 1, 0.1F, false, false, "mushChunks", 16},//11
new Object[]{"mushroomRed", 1, 0.1F, false, false, "mushChunksRed", 16},//12
new Object[]{"pumpkin", 2, 0.2F, false, false, "pumpkinSlice", 16},//13
new Object[]{"fish", 1, 0.1F, false, false, "fishHunkRaw", 16},//14
new Object[]{"fishCooked", 3, 0.3F, true, false, "fishHunkCooked", 16},//15
new Object[]{"jerkyBeef", 4, 1.0F, false, true, "jerkyBeef", 8, Potion.regeneration.id, 1, 0, 1.0F},//16
new Object[]{"stripsBasilisk", 1, 0.1F, true, true, "stripsBasilisk", 16, Potion.field_76444_x.id, 30, 1, 1.0F},//17
new Object[]{"stripsBasiliskCooked", 2, 0.75F, true, true, "stripsBasilisk_cooked", 16, Potion.field_76444_x.id, 120, 1, 1.0F},//18
new Object[]{"potato", 1, 0.1F, false, false, "potatoHunk", 16},//19
new Object[]{"potatoCooked", 2, 0.2F, false, false, "potatoHunkCooked", 16},//20
new Object[]{"drake", 2, 0.2F, true, true, "chunkDrake", 32, Potion.field_76443_y.id, 30, 1, 1.0F},//21
new Object[]{"drakeCooked", 3, 1.25F, true, true, "chunkDrake_cooked", 32, Potion.field_76443_y.id, 120, 1, 1.0F},//22
new Object[]{"jerkyBasilisk", 5, 1.5F, true, true, "jerkyBasilisk", 8, Potion.regeneration.id, 3, 3, 1.0F},//23
new Object[]{"carrots", 1, 0.1F, false, false, "carrotsChopped", 16},//24
new Object[]{"muttonHunkRaw", 1, 0.1F, true, false, "muttonHunkRaw", 16},//25
new Object[]{"muttonHunkCooked", 3, 0.3F, true, false, "muttonHunkCooked", 16},//26
new Object[]{"sandwitchMutton", 10, 10.0F, false, true, "sandwitch", 40, Potion.regeneration.id, 2, 0, 1.0F},//27
*/
};
}
@SideOnly(Side.CLIENT)
@Override
public void registerIcons(IconRegister reg)
{
int length = getStats().length;
this.icons = new Icon[length];
for (int i = 0; i < length; ++i)
{
String name = (String)(getStats()[i][5]);
this.icons[i] = reg.registerIcon("MineFantasy:Food/" + name);
}
}
}