package fox.spiteful.forbidden.items;
import java.util.List;
import fox.spiteful.forbidden.Forbidden;
import fox.spiteful.forbidden.compat.Compat;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.DamageSource;
import net.minecraft.util.StatCollector;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import WayofTime.alchemicalWizardry.api.altarRecipeRegistry.AltarRecipeRegistry;
import WayofTime.alchemicalWizardry.api.items.interfaces.IBindable;
import WayofTime.alchemicalWizardry.api.items.interfaces.IBloodOrb;
import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import thaumcraft.api.IWarpingGear;
public class ItemDivineOrb extends Item implements IBloodOrb, IBindable, IWarpingGear {
public ItemDivineOrb() {
setMaxStackSize(1);
setCreativeTab(Forbidden.tab);
AltarRecipeRegistry.registerAltarOrbRecipe(new ItemStack(this), 6, 140);
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister iconRegister) {
this.itemIcon = iconRegister.registerIcon("forbidden:divineorb");
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
list.add(StatCollector.translateToLocal("tooltip.divineorb"));
if (!(stack.stackTagCompound == null)) {
list.add(StatCollector.translateToLocal("tooltip.currentowner") + " " + stack.stackTagCompound.getString("ownerName"));
}
}
@Override
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer player) {
if (!Compat.bm)
return itemstack;
SoulNetworkHandler.checkAndSetItemOwner(itemstack, player);
if (world != null) {
double posX = player.posX;
double posY = player.posY;
double posZ = player.posZ;
world.playSoundEffect((double) ((float) posX + 0.5F), (double) ((float) posY + 0.5F), (double) ((float) posZ + 0.5F), "random.fizz", 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F);
}
if (world.isRemote) {
return itemstack;
}
NBTTagCompound itemTag = itemstack.stackTagCompound;
if (itemTag == null || itemTag.getString("ownerName").equals("")) {
return itemstack;
}
if(itemTag.getString("ownerName").equals(SoulNetworkHandler.getUsername(player)))
{
SoulNetworkHandler.setMaxOrbToMax(itemTag.getString("ownerName"), 6);
}
SoulNetworkHandler.addCurrentEssenceToMaximum(itemTag.getString("ownerName"), 200, 700000000);
hurtPlayer(player, 200);
return itemstack;
}
@Override
public int getMaxEssence() {
return 80000000;
}
@Override
public int getOrbLevel() {
return 6;
}
@Override
public int getWarp(ItemStack itemstack, EntityPlayer player) {
return 5;
}
@Override
public EnumRarity getRarity(ItemStack itemstack) {
return EnumRarity.epic;
}
@Override
public boolean hasContainerItem()
{
return true;
}
@Override
public boolean doesContainerItemLeaveCraftingGrid(ItemStack itemStack)
{
return false;
}
@Override
public ItemStack getContainerItem(ItemStack itemStack)
{
return itemStack;
}
private void hurtPlayer(EntityPlayer user, int energySyphoned)
{
if (energySyphoned < 100 && energySyphoned > 0)
{
if (!user.capabilities.isCreativeMode)
{
user.setHealth((user.getHealth() - 1));
if (user.getHealth() <= 0.0005f)
{
user.func_110142_aN().func_94547_a(new DamageSource("blooderp"), 1, 1);
user.onDeath(new DamageSource("blooderp"));
}
}
} else if (energySyphoned >= 100)
{
if (!user.capabilities.isCreativeMode)
{
for (int i = 0; i < ((energySyphoned + 99) / 100); i++)
{
user.setHealth((user.getHealth() - 1));
if (user.getHealth() <= 0.0005f)
{
user.func_110142_aN().func_94547_a(new DamageSource("blooderp"), 1, 1);
user.onDeath(new DamageSource("blooderp"));
break;
}
}
}
}
}
}