package com.insane.simplelabels.tile; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; import net.minecraft.network.play.server.SPacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.ITickable; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.items.CapabilityItemHandler; import powercrystals.minefactoryreloaded.api.IDeepStorageUnit; public class TileVastStorageUnit extends TileEntity implements ITickable, IDeepStorageUnit { VSUHandler handler = new VSUHandler(); @Override public ItemStack getStoredItemType() { return handler.getStack(); } @Override public void setStoredItemCount(int amount) { ItemStack stack = handler.getStack(); stack.stackSize = amount; handler.setStackInSlot(0, stack); this.markDirty(); } @Override public void setStoredItemType(ItemStack type, int amount) { if (type == null) { handler.setStackInSlot(0, null); } else { type = type.copy(); type.stackSize = amount; handler.setStackInSlot(0, type); } this.markDirty(); } @Override public int getMaxStoredCount() { return Integer.MAX_VALUE; } @Override public <T> T getCapability(Capability<T> capability, EnumFacing facing) { if (facing != null && capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) return (T) handler; return super.getCapability(capability, facing); } @Override public boolean hasCapability(Capability<?> capability, EnumFacing facing) { return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY; } @Override public NBTTagCompound writeToNBT(NBTTagCompound tag) { NBTTagCompound handlerTag = handler.serializeNBT(); tag.setTag("handler", handlerTag); return super.writeToNBT(tag); } @Override public void readFromNBT(NBTTagCompound tag) { super.readFromNBT(tag); if (tag.hasKey("handler")) { handler.deserializeNBT((NBTTagCompound) tag.getTag("handler")); } } @Override public SPacketUpdateTileEntity getUpdatePacket() { NBTTagCompound tag = new NBTTagCompound(); writeToNBT(tag); return new SPacketUpdateTileEntity(getPos(), 0, tag); } @Override public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity packet) { NBTTagCompound tag = packet.getNbtCompound(); if (tag != null) readFromNBT(tag); } @Override public NBTTagCompound getUpdateTag() { NBTTagCompound tag = writeToNBT(new NBTTagCompound()); return tag; } @Override public void update() { if (!this.worldObj.isRemote && handler.getStack() != null) if (handler.getStack().stackSize <= 0) { setStoredItemType(null, 0); this.markDirty(); } } }