Advertisement
hassansyyid

Untitled

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