Advertisement
hassansyyid

Untitled

Nov 11th, 2015
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.49 KB | None | 0 0
  1. package io.github.hsyyid.wilsonsmp.tileentities;
  2.  
  3. import io.github.hsyyid.wilsonsmp.WilsonSMP;
  4. import io.github.hsyyid.wilsonsmp.containers.ContainerReadableBookshelf;
  5. import net.minecraft.entity.player.EntityPlayer;
  6. import net.minecraft.init.Items;
  7. import net.minecraft.inventory.Container;
  8. import net.minecraft.inventory.IInventory;
  9. import net.minecraft.inventory.InventoryBasic;
  10. import net.minecraft.item.ItemEditableBook;
  11. import net.minecraft.item.ItemStack;
  12. import net.minecraft.nbt.NBTTagCompound;
  13. import net.minecraft.nbt.NBTTagList;
  14. import net.minecraft.network.NetworkManager;
  15. import net.minecraft.network.Packet;
  16. import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
  17. import net.minecraft.tileentity.TileEntity;
  18. import net.minecraftforge.common.util.Constants;
  19. import net.minecraftforge.fml.common.network.internal.FMLNetworkHandler;
  20.  
  21. public class TileEntityReadableBookshelf extends TileEntity
  22. {
  23.     public ItemEditableBook book;
  24.     public IInventory inventory;
  25.     public Container container;
  26.  
  27.     public TileEntityReadableBookshelf()
  28.     {
  29.         super();
  30.         this.inventory = new InventoryBasic("container.readablebookshelf.slots", true, 1);
  31.     }
  32.  
  33.     public Container getNewContainer(EntityPlayer player)
  34.     {
  35.         return (container = new ContainerReadableBookshelf(player, this));
  36.     }
  37.  
  38.     private void readInventoryFromNBT(NBTTagCompound nbt, IInventory inventory)
  39.     {
  40.         if (nbt != null && inventory != null && inventory.getName() != null)
  41.         {
  42.             NBTTagList items = nbt.getTagList(inventory.getName(), Constants.NBT.TAG_COMPOUND);
  43.  
  44.             for (byte x = 0; x < items.tagCount(); x++)
  45.             {
  46.                 NBTTagCompound item = items.getCompoundTagAt(x);
  47.  
  48.                 byte slot = item.getByte("Slot");
  49.  
  50.                 if (slot >= 0 && slot <= inventory.getSizeInventory())
  51.                 {
  52.                     inventory.setInventorySlotContents(slot, ItemStack.loadItemStackFromNBT(item));
  53.                 }
  54.             }
  55.         }
  56.     }
  57.  
  58.     @Override
  59.     public Packet getDescriptionPacket()
  60.     {
  61.         NBTTagCompound nbtTag = new NBTTagCompound();
  62.         this.writeToNBT(nbtTag);
  63.         return new S35PacketUpdateTileEntity(this.pos, 1, nbtTag);
  64.     }
  65.  
  66.     @Override
  67.     public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet)
  68.     {
  69.         readFromNBT(packet.getNbtCompound());
  70.     }
  71.  
  72.     @Override
  73.     public void writeToNBT(NBTTagCompound nbt)
  74.     {
  75.         super.writeToNBT(nbt);
  76.  
  77.         if (this.inventory != null)
  78.         {
  79.             this.saveInventoryToNBT(nbt, inventory);
  80.         }
  81.     }
  82.  
  83.     private void saveInventoryToNBT(NBTTagCompound nbt, IInventory inventory)
  84.     {
  85.         NBTTagList items = new NBTTagList();
  86.  
  87.         for (byte x = 0; x < inventory.getSizeInventory(); x++)
  88.         {
  89.             ItemStack stack = inventory.getStackInSlot(x);
  90.  
  91.             if (stack != null)
  92.             {
  93.                 NBTTagCompound item = new NBTTagCompound();
  94.                 item.setByte("Slot", x);
  95.                 stack.writeToNBT(item);
  96.                 items.appendTag(item);
  97.             }
  98.         }
  99.  
  100.         nbt.setTag(inventory.getName(), items);
  101.     }
  102.  
  103.     @Override
  104.     public void readFromNBT(NBTTagCompound nbt)
  105.     {
  106.         super.readFromNBT(nbt);
  107.  
  108.         this.readInventoryFromNBT(nbt, this.inventory);
  109.     }
  110.  
  111.     public void openGui(EntityPlayer playerIn)
  112.     {
  113.         if (this.inventory.getStackInSlot(0) != null && this.inventory.getStackInSlot(0).getItem().equals(Items.written_book))
  114.         {
  115.             System.out.println("Opening book");
  116.             playerIn.displayGUIBook(this.inventory.getStackInSlot(0));
  117.         }
  118.         else
  119.         {
  120.             System.out.println("Opening inventory");
  121.             if (!playerIn.worldObj.isRemote)
  122.             {
  123.                 FMLNetworkHandler.openGui(playerIn, WilsonSMP.instance(), 1, playerIn.worldObj, this.pos.getX(), this.pos.getY(), this.pos.getZ());
  124.             }
  125.         }
  126.     }
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement