Mekanism-tilera-Edition/src/main/java/mekanism/common/item/ItemProxy.java
2014-11-10 21:53:29 +00:00

86 lines
2 KiB
Java

package mekanism.common.item;
import net.minecraft.client.renderer.texture.IIconRegister;
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 doesContainerItemLeaveCraftingGrid(ItemStack stack)
{
return stack.stackTagCompound == null || !stack.stackTagCompound.getBoolean("hasStack");
}
@Override
public boolean hasContainerItem(ItemStack itemStack)
{
return getSavedItem(itemStack) != null;
}
public void setSavedItem(ItemStack stack, ItemStack save)
{
if(stack.stackTagCompound == null)
{
stack.setTagCompound(new NBTTagCompound());
}
if(save == null)
{
stack.stackTagCompound.setBoolean("hasStack", false);
stack.stackTagCompound.removeTag("savedItem");
}
else {
stack.stackTagCompound.setBoolean("hasStack", true);
stack.stackTagCompound.setTag("savedItem", save.writeToNBT(new NBTTagCompound()));
}
}
public ItemStack getSavedItem(ItemStack stack)
{
if(stack.stackTagCompound == null)
{
return null;
}
if(stack.stackTagCompound.getBoolean("hasStack"))
{
return ItemStack.loadItemStackFromNBT(stack.stackTagCompound.getCompoundTag("savedItem"));
}
return null;
}
@Override
public void registerIcons(IIconRegister register) {}
@Override
public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5)
{
if (par3Entity instanceof EntityPlayer)
{
EntityPlayer player = (EntityPlayer) par3Entity;
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;
}
}
}
}