package vazkii.botania.common.item.equipment.tool.elementium;
import java.util.Random;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.monster.AbstractSkeleton;
import net.minecraft.entity.monster.EntityCreeper;
import net.minecraft.entity.monster.EntityPigZombie;
import net.minecraft.entity.monster.EntitySkeleton;
import net.minecraft.entity.monster.EntityWitherSkeleton;
import net.minecraft.entity.monster.EntityZombie;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Enchantments;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.living.LivingDropsEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import vazkii.botania.api.BotaniaAPI;
import vazkii.botania.common.core.helper.ItemNBTHelper;
import vazkii.botania.common.entity.EntityDoppleganger;
import vazkii.botania.common.item.ModItems;
import vazkii.botania.common.item.equipment.tool.manasteel.ItemManasteelAxe;
import vazkii.botania.common.lib.LibItemNames;
public class ItemElementiumAxe extends ItemManasteelAxe {
public ItemElementiumAxe() {
super(BotaniaAPI.elementiumToolMaterial, LibItemNames.ELEMENTIUM_AXE);
MinecraftForge.EVENT_BUS.register(this);
}
// Thanks to SpitefulFox for the drop rates
// https://github.com/SpitefulFox/ForbiddenMagic/blob/master/src/com/spiteful/forbidden/FMEventHandler.java
@SubscribeEvent
public void onEntityDrops(LivingDropsEvent event) {
if(event.isRecentlyHit() && event.getSource().getEntity() != null && event.getSource().getEntity() instanceof EntityPlayer) {
ItemStack weapon = ((EntityPlayer) event.getSource().getEntity()).getHeldItemMainhand();
if(!weapon.isEmpty() && weapon.getItem() == this) {
Random rand = event.getEntityLiving().world.rand;
int looting = EnchantmentHelper.getEnchantmentLevel(Enchantments.FORTUNE, weapon);
if(event.getEntityLiving() instanceof AbstractSkeleton && rand.nextInt(26) <= 3 + looting)
addDrop(event, new ItemStack(Items.SKULL, 1, event.getEntityLiving() instanceof EntityWitherSkeleton ? 1 : 0));
else if(event.getEntityLiving() instanceof EntityZombie && !(event.getEntityLiving() instanceof EntityPigZombie) && rand.nextInt(26) <= 2 + 2 * looting)
addDrop(event, new ItemStack(Items.SKULL, 1, 2));
else if(event.getEntityLiving() instanceof EntityCreeper && rand.nextInt(26) <= 2 + 2 * looting)
addDrop(event, new ItemStack(Items.SKULL, 1, 4));
else if(event.getEntityLiving() instanceof EntityPlayer && rand.nextInt(11) <= 1 + looting) {
ItemStack stack = new ItemStack(Items.SKULL, 1, 3);
ItemNBTHelper.setString(stack, "SkullOwner", event.getEntityLiving().getName());
addDrop(event, stack);
} else if(event.getEntityLiving() instanceof EntityDoppleganger && rand.nextInt(13) < 1 + looting)
addDrop(event, new ItemStack(ModItems.gaiaHead));
}
}
}
private void addDrop(LivingDropsEvent event, ItemStack drop) {
EntityItem entityitem = new EntityItem(event.getEntityLiving().world, event.getEntityLiving().posX, event.getEntityLiving().posY, event.getEntityLiving().posZ, drop);
entityitem.setPickupDelay(10);
event.getDrops().add(entityitem);
}
}