package minefantasy.item;
import java.util.Iterator;
import java.util.List;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import minefantasy.api.hound.IHoundApparel;
import minefantasy.api.hound.IHoundArmour;
import minefantasy.api.hound.IHoundEquipment;
import minefantasy.api.weapon.DamageSourceAP;
import minefantasy.item.armour.EnumArmourMF;
import minefantasy.system.data_minefantasy;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityEggInfo;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.EnumCreatureAttribute;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumArmorMaterial;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.DamageSource;
import net.minecraft.util.StatCollector;
//EntityHound
public class ItemHoundArmourMF extends Item implements IHoundArmour, IHoundEquipment, IHoundApparel
{
private int plateEnd = 30;
public final int endurance;
public String texture;
public boolean isPlate;
public int slot;
public EnumArmourMF material;
public ItemHoundArmourMF(int id, EnumArmourMF material, boolean plate, String tex, int part, int end)
{
super(id);
texture = tex;
this.isPlate = plate;
this.material = material;
endurance = end;
slot = part;
setMaxDamage((int)(material.durability * (slot == 0 ? 15F : 20F) * (plate ? ArmourDesign.PLATE.protection : ArmourDesign.CHAIN.protection)));
this.maxStackSize = 1;
this.setCreativeTab(ItemListMF.tabPets);
}
private float getSlotMod(int part)
{
return part == 0 ? 5 : 10;
}
@Override
public String getTexture()
{
if(isPlate)
{
return null;
}
return data_minefantasy.image("/mob/hound_armour/" + texture + "_mail.png");
}
@Override
public String getOverlay()
{
if(isPlate)
{
return data_minefantasy.image("/mob/hound_armour/" + texture + "_plate.png");
}
return null;
}
@Override
public int getPiece()
{
return slot;
}
@Override
public int getRequiredEnd() {
return 0;//endurance;
}
@Override
public float getMobilityModifier()
{
float mod = 0.0F;
if(isPlate)
{
float slow = 0.25F * material.armourWeight / 15F * this.getSlotMod(slot);
mod -= slow;
}
return mod;
}
@Override
public Item setUnlocalizedName(String name)
{
this.setTextureName("minefantasy:Pets/"+name);
return super.setUnlocalizedName(name);
}
@Override
public void getSubItems(int id, CreativeTabs tabs, List list)
{
}
@Override
public int getRequiredStr() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getRequiredSta() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean shouldDamage(DamageSource source)
{
if(material == EnumArmourMF.GUILDED)
{
if(source.getSourceOfDamage() != null && source.getSourceOfDamage() instanceof EntityLivingBase)
{
if(((EntityLivingBase)source.getSourceOfDamage()).getCreatureAttribute() == EnumCreatureAttribute.UNDEAD)
{
return false;
}
}
}
if(material == EnumArmourMF.DRAGONFORGE)
{
if(source.isFireDamage())
{
return false;
}
}
return true;
}
@Override
public float getResistance(DamageSource source)
{
float rating = material.armourRating;
if(source instanceof DamageSourceAP)
{
rating = isPlate ? rating/2F : 0F;
}
if(source.isFireDamage())
{
if(material == EnumArmourMF.DRAGONFORGE)
{
float dfBonus = 100F / 15F * getSlotMod(slot) * getDesignAC();
if(dfBonus > 0.9F)
{
dfBonus = 1.0F;
}
return dfBonus;
}
}
if(source.isUnblockable() && !(source instanceof DamageSourceAP))
{
return 0;
}
return (rating * this.getSlotMod(slot) * getDesignAC()) / 25F;
}
private float getDesignAC()
{
return isPlate ? 1.0F : 0.8F;
}
@Override
public float getACDisplayPercent()
{
return (material.armourRating * this.getSlotMod(slot) * getDesignAC()) / 25F;
}
}