Jump to content

DF_Waffle

Members
  • Posts

    7
  • Joined

  • Last visited

Posts posted by DF_Waffle

  1. I think I implemented the getDescriptionPacket and onDataPacket but nothing happened the same thing is still happening.

     

      @Override
        public Packet getDescriptionPacket(){
            NBTTagCompound data = new NBTTagCompound();
            writeToNBT(data);
            return new SPacketUpdateTileEntity(this.pos, 1, data);
        }
    
        @Override
        public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt){
            readFromNBT(pkt.getNbtCompound());
            worldObj.markBlockRangeForRenderUpdate(this.pos, this.pos);
        }

  2. Ok so I added 2 lines to print both the reading and writing and its printing both but not sure if its actually doing it.

     

    [00:27:16] [server thread/INFO]: [com.waffle.to.tileentity.TOTileEntity:writeToNBT:208]: WRITING NBT DATA

    [00:27:10] [server thread/INFO]: [com.waffle.to.tileentity.TOTileEntity:readFromNBT:185]: READING NBT DATA

     

  3. My tileenetity is not saving its items. I can place items in the slots but once I leave and save the world and go back in the items are deleted.

     

    TileEntity:

    package com.waffle.to.tileentity;
    
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.inventory.IInventory;
    import net.minecraft.item.ItemStack;
    import net.minecraft.nbt.NBTTagCompound;
    import net.minecraft.nbt.NBTTagList;
    import net.minecraft.tileentity.TileEntity;
    import net.minecraft.util.text.ITextComponent;
    
    import java.util.ArrayList;
    
    public class TOTileEntity extends TileEntity implements IInventory{
    
        private ItemStack[] stacks = new ItemStack[9];
    
        private boolean aBoolean;
        private byte aByte;
        private short aShort;
        private int anInt;
        private long aLong;
        private float aFloat;
        private double aDouble;
        private String aString;
        private byte[] aByteArray;
        private int[] anIntArray;
    
    
    
        private ItemStack anItemStack;
    
        private ArrayList aList = new ArrayList();
    
      private ItemStack[] inventory;
      private String customName;
    
        public TOTileEntity(){
            this.inventory = new ItemStack[this.getSizeInventory()];
        }
    
        public String getCustomName(){
            return this.customName;
        }
    
        public void setCustomName(String customName){
            this.customName = customName;
        }
    
        @Override
        public String getName(){
            return this.hasCustomName() ? this.customName : "container.to_tile_entity";
        }
    
        @Override
        public boolean hasCustomName(){
            return this.customName != null && !this.customName.equals("");
        }
    
        @Override
        public ITextComponent getDisplayName() {
            return null;
        }
    
        @Override //How many slots
        public int getSizeInventory(){
            return 9;
        }
    
        @Override
        public ItemStack getStackInSlot(int index) {
            if (index < 0 || index >= this.getSizeInventory())
                return null;
            return this.inventory[index];
        }
    
        @Override
        public ItemStack decrStackSize(int index, int count) {
            if (this.getStackInSlot(index) != null) {
                ItemStack itemstack;
    
                if (this.getStackInSlot(index).stackSize <= count) {
                    itemstack = this.getStackInSlot(index);
                    this.setInventorySlotContents(index, null);
                    this.markDirty();
                    return itemstack;
                } else {
                    itemstack = this.getStackInSlot(index).splitStack(count);
    
                    if (this.getStackInSlot(index).stackSize <= 0) {
                        this.setInventorySlotContents(index, null);
                    } else {
                        //Just to show that changes happened
                        this.setInventorySlotContents(index, this.getStackInSlot(index));
                    }
    
                    this.markDirty();
                    return itemstack;
                }
            } else {
                return null;
            }
        }
    
        @Override
        public ItemStack removeStackFromSlot(int index) {
            return null;
        }
    
        //@Override
        public ItemStack getStackInSlotOnClosing(int index) {
            ItemStack stack = this.getStackInSlot(index);
            this.setInventorySlotContents(index, null);
            return stack;
        }
    
        @Override
        public void setInventorySlotContents(int index, ItemStack stack) {
            if (index < 0 || index >= this.getSizeInventory())
                return;
    
            if (stack != null && stack.stackSize > this.getInventoryStackLimit())
                stack.stackSize = this.getInventoryStackLimit();
    
            if (stack != null && stack.stackSize == 0)
                stack = null;
    
            this.inventory[index] = stack;
            this.markDirty();
        }
    
        @Override //Stack Limit per slot
        public int getInventoryStackLimit(){
            return 64;
        }
    
        @Override
        public boolean isUseableByPlayer(EntityPlayer player) {
            return false;
        }
    
        //@Override
        public boolean isUsableByPlayer(EntityPlayer player){
            return this.worldObj.getTileEntity(this.getPos()) == this && player.getDistanceSq(this.pos.add(0.5, 0.5, 0.5)) <= 64;
        }
    
        @Override
        public void openInventory(EntityPlayer player) {
        }
    
        @Override
        public void closeInventory(EntityPlayer player) {
        }
    
        @Override
        public boolean isItemValidForSlot(int index, ItemStack stack){
            return true;
        }
    
        @Override
        public int getField(int id) {
            return 0;
        }
    
        @Override
        public void setField(int id, int value) {
        }
    
        @Override
        public int getFieldCount() {
            return 0;
        }
    
        @Override
        public void clear(){
            for (int i = 0; i < this.getSizeInventory(); i++)
                this.setInventorySlotContents(i, null);
        }
    
        @Override
        public void  writeToNBT(NBTTagCompound nbt) {
            super.writeToNBT(nbt);
    
            NBTTagList list = new NBTTagList();
            for (int i = 0; i < this.getSizeInventory(); ++i) {
                if (this.getStackInSlot(i) != null) {
                    NBTTagCompound stackTag = new NBTTagCompound();
                    stackTag.setByte("Slot", (byte) i);
                    this.getStackInSlot(i).writeToNBT(stackTag);
                    list.appendTag(stackTag);
                }
                nbt.setTag("Items", list);
    
                if (this.hasCustomName()) {
                    nbt.setString("CustomName", this.getCustomName());
                }
            }
        }
        @Override
        public void readFromNBT(NBTTagCompound nbt){
            super.readFromNBT(nbt);
            NBTTagList list = nbt.getTagList("Items", 10);
            for (int i = 0; i < list.tagCount(); ++i) {
                NBTTagCompound stackTag = list.getCompoundTagAt(i);
                int slot = stackTag.getByte("Slot") & 255;
                this.setInventorySlotContents(slot, ItemStack.loadItemStackFromNBT(stackTag));
            }
            if (nbt.hasKey("CustomName", ){
                this.setCustomName(nbt.getString("CustomName"));
            }
    
        }
    
    
    
    
    
        //Implement ITickable for this to print
       /*@Override
        public void update(){
            if (!this.worldObj.isRemote)
            System.out.println("TestBlock TileEntity");
        }*/
    }
    

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.