package minefantasy.mf2.item.tool; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import minefantasy.mf2.MineFantasyII; import minefantasy.mf2.api.helpers.CustomToolHelper; import minefantasy.mf2.api.material.CustomMaterial; import minefantasy.mf2.api.tier.IToolMaterial; import minefantasy.mf2.item.list.CreativeTabMF; import minefantasy.mf2.item.list.CustomToolListMF; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumRarity; import net.minecraft.item.Item; import net.minecraft.item.ItemHoe; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraftforge.common.ForgeHooks; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; /** * @author Anonymous Productions */ public class ItemHoeMF extends ItemHoe implements IToolMaterial { private String name; private ToolMaterial toolMaterial; public ItemHoeMF(String name, ToolMaterial material, int rarity) { super(material); itemRarity = rarity; setCreativeTab(CreativeTabMF.tabOldTools); this.name=name; this.toolMaterial = material; setTextureName("minefantasy2:Tool/"+name); GameRegistry.registerItem(this, name, MineFantasyII.MODID); this.setUnlocalizedName(name); } @Override public ToolMaterial getMaterial() { return toolMaterial; } //===================================================== CUSTOM START =============================================================\\ private boolean isCustom = false; public ItemHoeMF setCustom(String s) { canRepair = false; setTextureName("minefantasy2:custom/tool/"+s+"/"+name); isCustom = true; return this; } private float efficiencyMod = 1.0F; public ItemHoeMF setEfficiencyMod(float efficiencyMod) { this.efficiencyMod = efficiencyMod; return this; } private IIcon detailTex = null; private IIcon haftTex = null; @Override @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister reg) { if(isCustom) { haftTex = reg.registerIcon(this.getIconString()+"_haft"); detailTex = reg.registerIcon(this.getIconString()+"_detail"); } super.registerIcons(reg); } @Override @SideOnly(Side.CLIENT) public boolean requiresMultipleRenderPasses() { return isCustom; } //Returns the number of render passes this item has. @Override public int getRenderPasses(int metadata) { return 3; } @Override public IIcon getIcon(ItemStack stack, int pass) { if(isCustom && pass == 1 && haftTex != null) { return haftTex; } if(isCustom && pass == 2 && detailTex != null) { return detailTex; } return super.getIcon(stack, pass); } @Override @SideOnly(Side.CLIENT) public int getColorFromItemStack(ItemStack item, int layer) { return CustomToolHelper.getColourFromItemStack(item, layer, super.getColorFromItemStack(item, layer)); } @Override public int getMaxDamage(ItemStack stack) { return CustomToolHelper.getMaxDamage(stack, super.getMaxDamage(stack)); } public ItemStack construct(String main, String haft) { return CustomToolHelper.construct(this, main, haft); } protected int itemRarity; @Override public EnumRarity getRarity(ItemStack item) { return CustomToolHelper.getRarity(item, itemRarity); } public float getEfficiency(ItemStack stack) { return CustomToolHelper.getEfficiency(stack, 1.0F, efficiencyMod); } @Override public int getHarvestLevel(ItemStack stack, String toolClass) { return CustomToolHelper.getHarvestLevel(stack, super.getHarvestLevel(stack, toolClass)); } @Override public void getSubItems(Item item, CreativeTabs tab, List list) { if(isCustom) { ArrayList<CustomMaterial> metal = CustomMaterial.getList("metal"); Iterator iteratorMetal = metal.iterator(); while(iteratorMetal.hasNext()) { CustomMaterial customMat = (CustomMaterial) iteratorMetal.next(); if(MineFantasyII.isDebug() || customMat.getItem() != null) { list.add(this.construct(customMat.name,"OakWood")); } } } else { super.getSubItems(item, tab, list); } } @Override public void addInformation(ItemStack item, EntityPlayer user, List list, boolean extra) { if(isCustom) { CustomToolHelper.addInformation(item, list); } super.addInformation(item, user, list, extra); } @Override @SideOnly(Side.CLIENT) public String getItemStackDisplayName(ItemStack item) { String unlocalName = this.getUnlocalizedNameInefficiently(item) + ".name"; return CustomToolHelper.getLocalisedName(item, unlocalName); } //====================================================== CUSTOM END ==============================================================\\ }