| 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 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; |
| } |
| } |
| } |
| } |
| } |