package gregtech.common.tools;

import java.util.Arrays;
import java.util.List;

import gregtech.api.GregTech_API;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.IIconContainer;
import gregtech.api.items.GT_MetaGenerated_Tool;
import gregtech.common.items.behaviors.Behaviour_Screwdriver;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.monster.EntityCaveSpider;
import net.minecraft.entity.monster.EntitySpider;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IChatComponent;

public class GT_Tool_Soldering_Iron extends GT_Tool{
	  public static final List<String> mEffectiveList = Arrays.asList(new String[] { EntityCaveSpider.class.getName(), EntitySpider.class.getName(), "EntityTFHedgeSpider", "EntityTFKingSpider", "EntityTFSwarmSpider", "EntityTFTowerBroodling" });
	  
	  public float getNormalDamageAgainstEntity(float aOriginalDamage, Entity aEntity, ItemStack aStack, EntityPlayer aPlayer)
	  {
	    String tName = aEntity.getClass().getName();
	    tName = tName.substring(tName.lastIndexOf(".") + 1);
	    return mEffectiveList.contains(tName) ? aOriginalDamage * 2.0F : aOriginalDamage;
	  }
	  
	  public int getToolDamagePerBlockBreak()
	  {
	    return 1000;
	  }
	  
	  public int getToolDamagePerDropConversion()
	  {
	    return 500;
	  }
	  
	  public int getToolDamagePerContainerCraft()
	  {
	    return 1000;
	  }
	  
	  public int getToolDamagePerEntityAttack()
	  {
	    return 500;
	  }
	  
	  public int getBaseQuality()
	  {
	    return 0;
	  }
	  
	  public float getBaseDamage()
	  {
	    return 1.5F;
	  }
	  
	  public float getSpeedMultiplier()
	  {
	    return 1.0F;
	  }
	  
	  public float getMaxDurabilityMultiplier()
	  {
	    return 1.0F;
	  }
	  
	  public String getCraftingSound()
	  {
	    return (String)GregTech_API.sSoundList.get(Integer.valueOf(100));
	  }
	  
	  public String getEntityHitSound()
	  {
	    return null;
	  }
	  
	  public String getBreakingSound()
	  {
	    return (String)GregTech_API.sSoundList.get(Integer.valueOf(0));
	  }
	  
	  public String getMiningSound()
	  {
	    return null;
	  }
	  
	  public boolean canBlock()
	  {
	    return true;
	  }
	  
	  public boolean isCrowbar()
	  {
	    return false;
	  }
	  
	  public boolean isMiningTool()
	  {
	    return false;
	  }
	  
	  public boolean isMinableBlock(Block aBlock, byte aMetaData)
	  {
	    String tTool = aBlock.getHarvestTool(aMetaData);
	    return ((tTool != null) && (tTool.equals("soldering_iron"))) || (aBlock.getMaterial() == Material.circuits);
	  }
	  
	  public ItemStack getBrokenItem(ItemStack aStack)
	  {
	    return null;
	  }
	  
	  public IIconContainer getIcon(boolean aIsToolHead, ItemStack aStack)
	  {
	    return !aIsToolHead ? GT_MetaGenerated_Tool.getPrimaryMaterial(aStack).mIconSet.mTextures[49] : Textures.ItemIcons.HANDLE_SOLDERING;
	  }
	  
	  public short[] getRGBa(boolean aIsToolHead, ItemStack aStack)
	  {
	    return !aIsToolHead ? GT_MetaGenerated_Tool.getPrimaryMaterial(aStack).mRGBa : GT_MetaGenerated_Tool.getSecondaryMaterial(aStack).mRGBa;
	  }
	  
	  public void onStatsAddedToTool(GT_MetaGenerated_Tool aItem, int aID)
	  {
	    aItem.addItemBehavior(aID, new Behaviour_Screwdriver(1, 200));
	  }
	  
	  public IChatComponent getDeathMessage(EntityLivingBase aPlayer, EntityLivingBase aEntity)
	  {
	    return new ChatComponentText(EnumChatFormatting.RED + aEntity.getCommandSenderName() + EnumChatFormatting.WHITE + " got soldert! (by " + EnumChatFormatting.GREEN + aPlayer.getCommandSenderName() + EnumChatFormatting.WHITE + ")");
	  }
	}