package com.goldenapple.coppertools.item.special; import com.goldenapple.coppertools.init.EquipMaterial; import com.goldenapple.coppertools.item.ItemSickleCommon; import cpw.mods.fml.common.Optional; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import vazkii.botania.api.BotaniaAPI; import vazkii.botania.api.mana.IManaUsingItem; import vazkii.botania.api.mana.ManaItemHandler; @Optional.Interface(iface = "vazkii.botania.api.mana.IManaUsingItem", modid = "Botania") public class ItemSickleManasteel extends ItemSickleCommon implements IManaUsingItem { private static int MANA_PER_DAMAGE = 60; public static EquipMaterial material = new EquipMaterial("manasteel", "ingotManasteel", BotaniaAPI.manasteelToolMaterial, null, null, null, false, false, true); public ItemSickleManasteel(){ super(material); } @Override public boolean onBlockDestroyed(ItemStack itemStack, World world, Block block, int x, int y, int z, EntityLivingBase entity) { if(entity instanceof EntityPlayer) { if (harvest(world, block, x, y, z, (EntityPlayer) entity)) { if (!((EntityPlayer) entity).capabilities.isCreativeMode) { if(!ManaItemHandler.requestManaExactForTool(itemStack, (EntityPlayer)entity, MANA_PER_DAMAGE, true)) { itemStack.damageItem(1, entity); } } return true; } } return false; } @Override public void onUpdate(ItemStack itemStack, World world, Entity player, int wat, boolean wtf) { if(!world.isRemote && player instanceof EntityPlayer && itemStack.getItemDamage() > 0 && ManaItemHandler.requestManaExactForTool(itemStack, (EntityPlayer) player, MANA_PER_DAMAGE * 2, true)) { itemStack.setItemDamage(itemStack.getItemDamage() - 1); } } @Override @Optional.Method(modid = "Botania") public boolean usesMana(ItemStack itemStack) { return true; } //Shamelessly stolen from Botaina :D https://github.com/Vazkii/Botania/blob/master/src/main/java/vazkii/botania/common/item/equipment/tool/ToolCommons.java public static void damageItem(ItemStack itemStack, int dmg, EntityLivingBase entity, int manaPerDamage) { int manaToRequest = dmg * manaPerDamage; boolean manaRequested = entity instanceof EntityPlayer && ManaItemHandler.requestManaExactForTool(itemStack, (EntityPlayer) entity, manaToRequest, true); if(!manaRequested) itemStack.damageItem(dmg, entity); } }