86 lines
2 KiB
Java
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;
|
|
}
|
|
}
|
|
}
|
|
}
|