package openblocks.common.tileentity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import openblocks.OpenBlocks.Items; import openblocks.client.gui.GuiDrawingTable; import openblocks.common.Stencil; import openblocks.common.container.ContainerDrawingTable; import openblocks.common.item.MetasGeneric; import openblocks.rpc.IStencilCrafter; import openmods.api.IHasGui; import openmods.include.IncludeInterface; import openmods.inventory.GenericInventory; import openmods.inventory.IInventoryProvider; import openmods.inventory.TileEntityInventory; import openmods.tileentity.OpenTileEntity; public class TileEntityDrawingTable extends OpenTileEntity implements IHasGui, IInventoryProvider, IStencilCrafter { private final GenericInventory inventory = registerInventoryCallback(new TileEntityInventory(this, "drawingtable", true, 1) { @Override public boolean isItemValidForSlot(int i, ItemStack itemstack) { return i == 0 && (itemstack == null || MetasGeneric.unpreparedStencil.isA(itemstack)); } }); public TileEntityDrawingTable() {} @Override public Object getServerGui(EntityPlayer player) { return new ContainerDrawingTable(player.inventory, this); } @Override public Object getClientGui(EntityPlayer player) { return new GuiDrawingTable(new ContainerDrawingTable(player.inventory, this)); } @Override public boolean canOpenGui(EntityPlayer player) { return true; } @Override public boolean canUpdate() { return false; } @Override @IncludeInterface public IInventory getInventory() { return inventory; } @Override public void writeToNBT(NBTTagCompound tag) { super.writeToNBT(tag); inventory.writeToNBT(tag); } @Override public void readFromNBT(NBTTagCompound tag) { super.readFromNBT(tag); inventory.readFromNBT(tag); } @Override public void craft(Stencil stencil) { ItemStack stack = inventory.getStackInSlot(0); if (stack != null && MetasGeneric.unpreparedStencil.isA(stack)) { ItemStack stencilItem = new ItemStack(Items.stencil, 1, stencil.ordinal()); stencilItem.stackSize = stack.stackSize; inventory.setInventorySlotContents(0, stencilItem); } } }