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.util.AxisAlignedBB;
import net.minecraft.util.DamageSource;
import net.minecraft.world.World;
import vazkii.botania.api.BotaniaAPI;
import vazkii.botania.api.mana.IManaUsingItem;
import vazkii.botania.api.mana.ManaItemHandler;
import java.util.List;
@Optional.Interface(iface = "vazkii.botania.api.mana.IManaUsingItem", modid = "Botania")
public class ItemSickleElementium extends ItemSickleCommon implements IManaUsingItem {
private static int MANA_PER_DAMAGE = 60;
public static EquipMaterial material = new EquipMaterial("elementium", "ingotElvenElementium", BotaniaAPI.elementiumToolMaterial, null, null, null, false, false, true);
public ItemSickleElementium(){
super(material);
}
@Override
@SuppressWarnings("unchecked")
public boolean hitEntity(ItemStack itemStack, EntityLivingBase entityAttacked, EntityLivingBase entityAttacker) {
World world = entityAttacked.worldObj;
List<Entity> list = world.getEntitiesWithinAABBExcludingEntity(entityAttacker, AxisAlignedBB.getBoundingBox(entityAttacked.posX - 1.5, entityAttacked.posY - 3, entityAttacked.posZ - 1.5, entityAttacked.posX + 1.5, entityAttacked.posY + 3, entityAttacked.posZ + 1.5));
for(Entity entity : list){
if(entity instanceof EntityLivingBase){
entity.attackEntityFrom(DamageSource.causeMobDamage(entityAttacker), 3.0F);
}
}
return true;
}
@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);
}
}