package minefantasy.item.tool; import java.util.List; import java.util.Random; import minefantasy.api.leatherwork.EnumToolType; import minefantasy.api.leatherwork.ITanningItem; import minefantasy.api.weapon.IWeaponSpecial; import minefantasy.item.ToolMaterialMedieval; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumRarity; import net.minecraft.item.EnumToolMaterial; import net.minecraft.item.Item; import net.minecraft.item.ItemShears; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.world.World; import net.minecraftforge.common.IShearable; public class ItemShearsMF extends ItemShears implements ITanningItem, IWeaponSpecial{ private EnumToolMaterial material; private float quality; public ItemShearsMF(int id, EnumToolMaterial material) { super(id); this.setFull3D(); setMaxDamage(material.getMaxUses()); quality = material.getEfficiencyOnProperMaterial(); this.material = material; } @Override public float getQuality() { return quality; } @Override public EnumToolType getType() { return EnumToolType.CUTTER; } @Override public Item setUnlocalizedName(String name) { this.setTextureName("minefantasy:Tool/"+name); return super.setUnlocalizedName(name); } @Override public void getSubItems(int id, CreativeTabs tabs, List list) { } public boolean onBlockDestroyed(ItemStack item, World world, int id, int y, int z, int s, EntityLivingBase user) { Random rand = new Random(); if(getMaterial() == ToolMaterialMedieval.IGNOTUMITE) { if(user instanceof EntityPlayer) { ((EntityPlayer)user).getFoodStats().addStats(1, 0.2F); } } if (id != Block.leaves.blockID && id != Block.web.blockID && id != Block.tallGrass.blockID && id != Block.vine.blockID && id != Block.tripWire.blockID && !(Block.blocksList[id] instanceof IShearable)) { return super.onBlockDestroyed(item, world, id, y, z, s, user); } else { return true; } } @Override public boolean canHarvestBlock(Block block) { return block.blockMaterial == Material.leaves || block.blockID == Block.web.blockID || block.blockID == Block.redstoneWire.blockID || block.blockID == Block.tripWire.blockID; } /** * Returns the strength of the stack against a given block. 1.0F base, (Quality+1)*2 if correct blocktype, 1.5F if * sword */ @Override public float getStrVsBlock(ItemStack item, Block block, int meta) { if(block.blockMaterial == Material.leaves || block instanceof IShearable || ((Item.shears.getStrVsBlock(item, block)) > super.getStrVsBlock(item, block, meta))) { if(block.blockMaterial == Material.cloth) { return 5.0F; } return 15.0F; } return super.getStrVsBlock(item, block, meta); } @Override public EnumRarity getRarity(ItemStack itemStack) { if (getMaterial() == ToolMaterialMedieval.DRAGONFORGE) { return rarity(itemStack, 1); } if (getMaterial() == ToolMaterialMedieval.IGNOTUMITE) { return rarity(itemStack, 2); } return super.getRarity(itemStack); } public EnumToolMaterial getMaterial() { return material; } private EnumRarity rarity(ItemStack item, int lvl) { EnumRarity[] rarity = new EnumRarity[]{EnumRarity.common, EnumRarity.uncommon, EnumRarity.rare, EnumRarity.epic}; if(item.isItemEnchanted()) { if(lvl == 0) { lvl++; } lvl ++; } if(lvl >= rarity.length) { lvl = rarity.length-1; } return rarity[lvl]; } @Override public void onHit(float damage, ItemStack weapon, EntityLivingBase target, EntityLivingBase attacker) { if (getMaterial() == ToolMaterialMedieval.DRAGONFORGE) { target.setFire(20); } if (getMaterial() == ToolMaterialMedieval.IGNOTUMITE) { attacker.heal(1F); } } }