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.arrow.Arrows; import minefantasy.api.weapon.CrossbowAmmo; import minefantasy.entity.EntityArrowMF; import minefantasy.system.ArrowsMF; import mods.battlegear2.api.quiver.QuiverArrowRegistry; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityArrow; 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; import net.minecraft.world.World; public class ItemArrowMF extends Item { public static final DecimalFormat decimal_format = new DecimalFormat("#.#"); private Icon[] icons; public ItemArrowMF(int id) { super(id); setHasSubtypes(true); setMaxDamage(-1); addArrows(); assignArrows(); } private void assignArrows() { if(ArrowType.arrows.isEmpty()) { return; } for(int a = 0; a < ArrowType.arrows.size(); a ++) { ArrowType arrow = ArrowType.arrows.get(a); ArrowsMF.addArrow(new ItemStack(itemID, 1, arrow.meta)); CrossbowAmmo.addArrow(new ItemStack(itemID, 1, arrow.meta)); Arrows.addArrow(new ItemStack(itemID, 1, arrow.meta)); QuiverArrowRegistry.addArrowToRegistry(new ItemStack(itemID, 1, arrow.meta), null); } } public void getSubItems(int id, CreativeTabs tabs, List list) { for(int a = ArrowType.arrows.size()-1; a >= 0; a --) { ArrowType arrow = ArrowType.arrows.get(a); list.add(new ItemStack(itemID, 1, arrow.meta)); } } @Override public String getUnlocalizedName(ItemStack item) { int type = item.getItemDamage(); ArrowType arrow = ArrowType.getArrow(type); if(arrow != null && arrow.getUnlocalisedDisplayName() != null) { return arrow.getUnlocalisedDisplayName(); } return "item.arrow"; } @Override public Icon getIconFromDamage(int id) { ArrowType arrow = ArrowType.getArrow(id); if(arrow != null && arrow.getTextureName() != null) { return icons[arrow.index]; } return icons[0]; } @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; ArrowType arrow = ArrowType.getArrow(item.getItemDamage()); if(arrow != null && arrow.material != null) { dam = (float)ArrowType.getDamage(arrow); } if(dam > 0) { desc.add(EnumChatFormatting.BLUE+ StatCollector.translateToLocalFormatted("attribute.modifier.plus."+ 0, new Object[] {decimal_format.format(dam*(8F/2.75F)), StatCollector.translateToLocal("attribute.arrow.damage")}));; } } @SideOnly(Side.CLIENT) @Override public void registerIcons(IconRegister reg) { int length = ArrowType.arrows.size(); this.icons = new Icon[length]; for(int a = 0; a < ArrowType.arrows.size(); a ++) { ArrowType arrow = ArrowType.arrows.get(a); this.icons[a] = reg.registerIcon("MineFantasy:Archery/Arrow/" + arrow.getTextureName()); } } /** * Listed top to bottom on priority * Mat Name, Material, Type, Metadata */ private void addArrows() { ArrowType.addArrow("Ignotumite", ToolMaterialMedieval.IGNOTUMITE, 2, 24); ArrowType.addArrow("Ignotumite", ToolMaterialMedieval.IGNOTUMITE, 1, 23); ArrowType.addArrow("Ignotumite", ToolMaterialMedieval.IGNOTUMITE, 0, 22); ArrowType.addArrow("DeepIron", ToolMaterialMedieval.DEEP_IRON, 2, 27); ArrowType.addArrow("DeepIron", ToolMaterialMedieval.DEEP_IRON, 1, 26); ArrowType.addArrow("DeepIron", ToolMaterialMedieval.DEEP_IRON, 0, 25); ArrowType.addArrow("Dragon", ToolMaterialMedieval.DRAGONFORGE, 2, 21); ArrowType.addArrow("Dragon", ToolMaterialMedieval.DRAGONFORGE, 1, 20); ArrowType.addArrow("Dragon", ToolMaterialMedieval.DRAGONFORGE, 0, 19); ArrowType.addArrow("Encrusted", ToolMaterialMedieval.ENCRUSTED, 2, 18); ArrowType.addArrow("Encrusted", ToolMaterialMedieval.ENCRUSTED, 1, 17); ArrowType.addArrow("Encrusted", ToolMaterialMedieval.ENCRUSTED, 0, 16); ArrowType.addArrow("Silver", ToolMaterialMedieval.ORNATE, 2, 15); ArrowType.addArrow("Silver", ToolMaterialMedieval.ORNATE, 1, 14); ArrowType.addArrow("Silver", ToolMaterialMedieval.ORNATE, 0, 13); ArrowType.addArrow("Mithril", ToolMaterialMedieval.MITHRIL, 2, 12); ArrowType.addArrow("Mithril", ToolMaterialMedieval.MITHRIL, 1, 11); ArrowType.addArrow("Mithril", ToolMaterialMedieval.MITHRIL, 0, 10); ArrowType.addArrow("Steel", ToolMaterialMedieval.STEEL, 2, 9); ArrowType.addArrow("Steel", ToolMaterialMedieval.STEEL, 1, 8); ArrowType.addArrow("Steel", ToolMaterialMedieval.STEEL, 0, 7); ArrowType.addArrow("Iron", ToolMaterialMedieval.IRON, 2, 6); ArrowType.addArrow("Iron", ToolMaterialMedieval.IRON, 1, 5); ArrowType.addArrow("Iron", ToolMaterialMedieval.IRON, 0, 4); ArrowType.addArrow("Bronze", ToolMaterialMedieval.BRONZE, 2, 3); ArrowType.addArrow("Bronze", ToolMaterialMedieval.BRONZE, 1, 2); ArrowType.addArrow("Bronze", ToolMaterialMedieval.BRONZE, 0, 1); ArrowType.addArrow("Reed", EnumToolMaterial.WOOD, 0, 0); } public boolean isBroad(ItemStack item) { if(item != null) { ArrowType arrow = ArrowType.getArrow(item.getItemDamage()); if(arrow != null && arrow.arrowType == 2) { return true; } } return false; } }