package minefantasy.item.tool;
import java.util.List;
import minefantasy.api.anvil.IHammer;
import minefantasy.api.cooking.IUtensil;
import minefantasy.api.weapon.IWeaponSpecial;
import minefantasy.block.BlockListMF;
import minefantasy.block.special.BlockAnvilMF;
import minefantasy.block.tileentity.TileEntityAnvil;
import minefantasy.item.EnumHammerType;
import minefantasy.item.ItemListMF;
import minefantasy.item.ToolMaterialMedieval;
import minefantasy.system.data_minefantasy;
import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.EnumToolMaterial;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemTool;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraftforge.common.ForgeHooks;
public class ItemHammer extends ItemTool implements IHammer, IWeaponSpecial{
private EnumToolMaterial hammerMaterial;
private float efficiency;
private int level;
public ItemHammer(int i, float power, EnumToolMaterial mat)
{
super(i, mat.getEfficiencyOnProperMaterial(), mat, new Block[]{});
this.hammerMaterial = mat;
this.setMaxStackSize(1);
efficiency = power;
this.setMaxDamage(mat.getMaxUses());
this.setCreativeTab(ItemListMF.tabTool);
maxStackSize = 1;
level = mat == ToolMaterialMedieval.ORNATE ? 1 : 0;
this.damageVsEntity = mat.getDamageVsEntity()+2;
}
@Override
public boolean isFull3D() {
return true;
}
public float getForgeStrength()
{
return efficiency;
}
public int getItemEnchantability()
{
return this.hammerMaterial.getEnchantability();
}
public int getForgeLevel()
{
return level;
}
@Override
public Item setUnlocalizedName(String name)
{
this.setTextureName("minefantasy:Tool/"+name);
return super.setUnlocalizedName(name);
}
@Override
public float getStrVsBlock(ItemStack stack, Block block)
{
if(block == BlockListMF.anvil)
{
return 0.0F;
}
return super.getStrVsBlock(stack, block);
}
@Override
public void getSubItems(int id, CreativeTabs tabs, List list)
{
}
@Override
public void addInformation(ItemStack weapon, EntityPlayer player, List list, boolean fullInfo)
{
super.addInformation(weapon, player, list, fullInfo);
list.add("Efficiency: "+getForgeStrength());
}
@Override
public EnumRarity getRarity(ItemStack itemStack)
{
if (hammerMaterial == ToolMaterialMedieval.DRAGONFORGE || hammerMaterial == ToolMaterialMedieval.ORNATE)
{
return rarity(itemStack, 1);
}
return super.getRarity(itemStack);
}
private EnumRarity rarity(ItemStack item, int lvl)
{
EnumRarity[] rarity = new EnumRarity[]{EnumRarity.common, EnumRarity.uncommon, EnumRarity.rare, EnumRarity.epic};
if(item.isItemEnchanted())
{
if(lvl == 0)
{
lvl++;
}
lvl ++;
}
if(lvl >= rarity.length)
{
lvl = rarity.length-1;
}
return rarity[lvl];
}
@Override
public void onHit(float damage, ItemStack weapon, EntityLivingBase target, EntityLivingBase attacker)
{
if (hammerMaterial == ToolMaterialMedieval.DRAGONFORGE)
{
target.setFire(20);
}
if (hammerMaterial == ToolMaterialMedieval.IGNOTUMITE)
{
attacker.heal(1F);
}
}
public EnumToolMaterial getMaterial()
{
return hammerMaterial;
}
}