package mekanism.common.item;
import mekanism.common.util.ItemDataUtils;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
public class ItemProxy extends Item
{
public ItemProxy()
{
super();
setMaxDamage(1);
}
@Override
public ItemStack getContainerItem(ItemStack stack)
{
return getSavedItem(stack);
}
@Override
public boolean hasContainerItem(ItemStack itemStack)
{
return getSavedItem(itemStack) != null;
}
public void setSavedItem(ItemStack stack, ItemStack save)
{
if(save == null)
{
ItemDataUtils.setBoolean(stack, "hasStack", false);
ItemDataUtils.removeData(stack, "savedItem");
}
else {
ItemDataUtils.setBoolean(stack, "hasStack", true);
ItemDataUtils.setCompound(stack, "savedItem", save.writeToNBT(new NBTTagCompound()));
}
}
public ItemStack getSavedItem(ItemStack stack)
{
if(ItemDataUtils.getBoolean(stack, "hasStack"))
{
return ItemStack.loadItemStackFromNBT(ItemDataUtils.getCompound(stack, "savedItem"));
}
return null;
}
@Override
public void onUpdate(ItemStack stacks, World world, Entity entity, int j, boolean flag)
{
if(entity instanceof EntityPlayer)
{
EntityPlayer player = (EntityPlayer)entity;
for(int i = 0; i < player.inventory.mainInventory.length; i++)
{
if(player.inventory.mainInventory[i] != null && player.inventory.mainInventory[i].getItem() == this)
{
player.inventory.mainInventory[i] = null;
}
}
}
}
}