package minefantasy.mf2.item.custom;
import java.util.List;
import minefantasy.mf2.MineFantasyII;
import minefantasy.mf2.api.helpers.GuiHelper;
import minefantasy.mf2.api.material.CustomMaterial;
import minefantasy.mf2.item.gadget.EnumCasingType;
import minefantasy.mf2.item.gadget.EnumExplosiveType;
import minefantasy.mf2.item.gadget.EnumFuseType;
import minefantasy.mf2.item.gadget.EnumPowderType;
import minefantasy.mf2.item.list.CreativeTabMF;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon;
import net.minecraft.util.StatCollector;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class ItemHaft extends Item
{
@SideOnly(Side.CLIENT)
public IIcon baseTex, gripTex, braceTex;
private String name;
public ItemHaft(String name)
{
this.name=name;
this.setCreativeTab(CreativeTabMF.tabMaterials);
GameRegistry.registerItem(this, name, MineFantasyII.MODID);
this.setUnlocalizedName(name);
}
public CustomMaterial getBase(ItemStack haft)
{
return CustomMaterial.getMaterialFor(haft, "base");
}
public CustomMaterial getGrip(ItemStack haft)
{
return CustomMaterial.getMaterialFor(haft, "grip");
}
public CustomMaterial getBrace(ItemStack haft)
{
return CustomMaterial.getMaterialFor(haft, "brace");
}
@Override
public void getSubItems(Item item, CreativeTabs tab, List list)
{
}
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack item, EntityPlayer user, List list, boolean fullInfo)
{
super.addInformation(item, user, list, fullInfo);
CustomMaterial base = getBase(item);
CustomMaterial grip = getGrip(item);
CustomMaterial brace = getBrace(item);
float mass = 0F;
if(base != null)mass += base.density;
if(grip != null)mass += base.density;
if(brace != null)mass += brace.density;
list.add(CustomMaterial.getWeightString(mass));
if(base != null)
{
list.add(StatCollector.translateToLocalFormatted("component.shaft.name", StatCollector.translateToLocal("material."+base.name.toLowerCase() + ".name")));
}
if(grip != null)
{
list.add(StatCollector.translateToLocalFormatted("component.grip.name", StatCollector.translateToLocal("material."+grip.name.toLowerCase() + ".name")));
}
if(brace != null)
{
list.add(StatCollector.translateToLocalFormatted("component.brace.name", StatCollector.translateToLocal("material."+brace.name.toLowerCase() + ".name")));
}
}
@Override
@SideOnly(Side.CLIENT)
public int getRenderPasses(int metadata)
{
return 3;
}
@Override
@SideOnly(Side.CLIENT)
public int getColorFromItemStack(ItemStack item, int layer)
{
CustomMaterial base = getBase(item);
CustomMaterial grip = getGrip(item);
CustomMaterial brace = getBrace(item);
int topLayer = brace != null ? brace.getColourInt() : grip != null ? grip.getColourInt() : base != null ? base.getColourInt() : super.getColorFromItemStack(item, layer);
if(layer == 0 && base != null)
{
return base.getColourInt();
}
if(layer == 1 && grip != null)
{
return grip.getColourInt();
}
if(layer == 2 && brace != null)
{
return brace.getColourInt();
}
return topLayer;
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(ItemStack item, int layer)
{
CustomMaterial grip = getGrip(item);
CustomMaterial brace = getBrace(item);
IIcon topLayer = brace != null ? braceTex : grip != null ? gripTex : baseTex;
if(layer == 0)
{
return baseTex;
}
if(layer == 1 && grip != null)
{
return gripTex;
}
if(layer == 2 && brace != null)
{
return braceTex;
}
return topLayer;
}
@Override
@SideOnly(Side.CLIENT)
public boolean requiresMultipleRenderPasses()
{
return true;
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister reg)
{
baseTex = reg.registerIcon("minefantasy2:custom/haft/"+name+"_base");
gripTex = reg.registerIcon("minefantasy2:custom/haft/"+name+"_grip");
braceTex = reg.registerIcon("minefantasy2:custom/haft/"+name+"_brace");
}
public ItemStack createHaft(String base, String grip, String brace)
{
ItemStack item = new ItemStack(this);
CustomMaterial.addMaterial(item, "base", base);
CustomMaterial.addMaterial(item, "grip", grip);
CustomMaterial.addMaterial(item, "brace", brace);
return item;
}
}