package minefantasy.item;
import java.text.DecimalFormat;
import java.util.List;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import minefantasy.api.weapon.CrossbowAmmo;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumToolMaterial;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.Icon;
import net.minecraft.util.StatCollector;
public class ItemBoltMF extends Item
{
public static final DecimalFormat decimal_format = new DecimalFormat("#.###");
private Icon[] icons;
public ItemBoltMF(int id)
{
super(id);
setHasSubtypes(true);
setMaxDamage(-1);
addBolts();
assignBolts();
}
private void assignBolts()
{
if(BoltType.bolts.isEmpty())
{
return;
}
for(int a = 0; a < BoltType.bolts.size(); a ++)
{
BoltType Bolt = BoltType.bolts.get(a);
CrossbowAmmo.addBolt(new ItemStack(itemID, 1, Bolt.meta));
}
}
public void getSubItems(int id, CreativeTabs tabs, List list)
{
for(int a = BoltType.bolts.size()-1; a >= 0; a --)
{
BoltType Bolt = BoltType.bolts.get(a);
list.add(new ItemStack(itemID, 1, Bolt.meta));
}
}
@Override
public String getItemDisplayName(ItemStack item)
{
int type = item.getItemDamage();
BoltType Bolt = BoltType.getBolt(type);
if(Bolt != null && Bolt.getDisplayName() != null)
{
return Bolt.getDisplayName();
}
return "Bolt";
}
@Override
public Icon getIconFromDamage(int id)
{
BoltType Bolt = BoltType.getBolt(id);
if(Bolt != null && Bolt.getTextureName() != null)
{
return icons[Bolt.index];
}
return icons[0];
}
@SideOnly(Side.CLIENT)
@Override
public void registerIcons(IconRegister reg)
{
int length = BoltType.bolts.size();
this.icons = new Icon[length];
for(int a = 0; a < BoltType.bolts.size(); a ++)
{
BoltType Bolt = BoltType.bolts.get(a);
this.icons[a] = reg.registerIcon("MineFantasy:Archery/Arrow/" + Bolt.getTextureName());
}
}
@Override
public void addInformation(ItemStack item, EntityPlayer player, List desc, boolean flag)
{
super.addInformation(item, player, desc, flag);
if(item == null)return;
float dam = 0;
BoltType bolt = BoltType.getBolt(item.getItemDamage());
if(bolt != null && bolt.material != null)
{
dam = (float)bolt.getDamage(bolt);
}
if(dam >= 0)
{
desc.add(EnumChatFormatting.BLUE+
StatCollector.translateToLocalFormatted("attribute.modifier.plus."+ 0,
new Object[] {decimal_format.format(dam),
StatCollector.translateToLocal("attribute.arrow.damage")}));;
}
}
/**
* Listed top to bottom on priority
* Mat Name, Material, Type, Metadata
*/
private void addBolts()
{
BoltType.addBolt("Ignotumite", ToolMaterialMedieval.IGNOTUMITE, 8);
BoltType.addBolt("DeepIron", ToolMaterialMedieval.DEEP_IRON, 9);
BoltType.addBolt("Dragon", ToolMaterialMedieval.DRAGONFORGE, 7);
BoltType.addBolt("Encrusted", ToolMaterialMedieval.ENCRUSTED, 6);
BoltType.addBolt("Silver", ToolMaterialMedieval.ORNATE, 5);
BoltType.addBolt("Mithril", ToolMaterialMedieval.MITHRIL, 4);
BoltType.addBolt("Steel", ToolMaterialMedieval.STEEL, 3);
BoltType.addBolt("Iron", ToolMaterialMedieval.IRON, 2);
BoltType.addBolt("Bronze", ToolMaterialMedieval.BRONZE, 1);
BoltType.addBolt("Flint", EnumToolMaterial.WOOD, 2, 0);
}
}