Posted January 15, 20169 yr Very simple error: my inventory on my container is not saving. Here is my TileEntity class, all is registered correctly, the inventory just won't save. package com.happykiller.weightlimit.blocks.tileentites; import com.happykiller.weightlimit.api.ICarryWeightModifier; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumFacing; import net.minecraft.util.IChatComponent; import net.minecraft.util.ITickable; public class TileEntityUpgradeStation extends TileEntity implements ITickable, ISidedInventory { private final String name = "Upgrade Station"; private final String tagName = "WLUpgradeStation"; public static final int INV_SIZE = 3; public final int SLOT_UPGRADE = 0; public final int SLOT_MATERIAL = 1; public final int SLOT_RESULT = 2; ItemStack[] inventory = new ItemStack[iNV_SIZE]; public boolean inventoryChanged; public int getSizeInventory() { return inventory.length; } public ItemStack getStackInSlot(int index) { return inventory[index]; } public ItemStack decrStackSize(int slot, int amount) { ItemStack stack = getStackInSlot(slot); if(stack != null) { if(stack.stackSize > amount) { stack = stack.splitStack(amount); if(stack.stackSize == 0) { setInventorySlotContents(slot, null); } }else { setInventorySlotContents(slot, null); } this.markDirty(); } return stack; } public ItemStack getStackInSlotOnClosing(int slot) { ItemStack stack = getStackInSlot(slot); if(stack != null) { setInventorySlotContents(slot, null); } return stack; } public void setInventorySlotContents(int index, ItemStack stack) { this.inventory[index] = stack; if(stack != null && stack.stackSize > this.getInventoryStackLimit()) { stack.stackSize = this.getInventoryStackLimit(); } this.markDirty(); } public int getInventoryStackLimit() { return 64; } public boolean isUseableByPlayer(EntityPlayer player) { return true; } public void openInventory(EntityPlayer player) {} public void closeInventory(EntityPlayer player) {} public boolean isItemValidForSlot(int index, ItemStack stack) { if(index == this.SLOT_UPGRADE && stack.getItem() instanceof ICarryWeightModifier) return true; else return false; } public void writeToNBT(NBTTagCompound tag) { NBTTagList tagList = new NBTTagList(); for(int i = 0; i < this.getSizeInventory(); i++) { if(this.getStackInSlot(i) != null) { NBTTagCompound tag1 = new NBTTagCompound(); tag1.setByte("Slot", (byte)i); this.getStackInSlot(i).writeToNBT(tag1); tagList.appendTag(tag1); } } tag.setTag(tagName, tagList); } public void readFromNBT(NBTTagCompound tag) { NBTTagList items = tag.getTagList(tagName, tag.getId()); for(int i = 0; i < items.tagCount(); i++) { NBTTagCompound item = items.getCompoundTagAt(i); int j = item.getByte("Slot"); ItemStack stack = ItemStack.loadItemStackFromNBT(item); if(stack != null) { if(j >= 0 && j < this.inventory.length) { this.inventory[j] = stack; } } } } public void markDirty() { for(int i = 0; i < this.getSizeInventory(); i++) { if(this.getStackInSlot(i) != null && this.getStackInSlot(i).stackSize == 0) this.setInventorySlotContents(i, null); } this.inventoryChanged = true; } public int getField(int id) { return 0; } public void setField(int id, int value) {} public int getFieldCount() { return 0; } public void clear() { for(int i = 0; i < inventory.length; i++) { inventory[i] = null; } } public String getCommandSenderName() { return name; } public boolean hasCustomName() { return name.length() > 0; } public IChatComponent getDisplayName() { return new ChatComponentText(name); } public int[] getSlotsForFace(EnumFacing side) { return null; } public boolean canInsertItem(int index, ItemStack itemStackIn, EnumFacing direction) { return this.isItemValidForSlot(index, itemStackIn); } public boolean canExtractItem(int index, ItemStack stack, EnumFacing direction) { return false; } public void update() { if(getStackInSlot(SLOT_UPGRADE) != null) { ItemStack backpack = getStackInSlot(SLOT_UPGRADE); if(backpack != null && backpack.getItem() instanceof ICarryWeightModifier) { ICarryWeightModifier itemProps = (ICarryWeightModifier)backpack.getItem(); int amount = itemProps.getAmount(); Item material = itemProps.getMaterial(); Item result = itemProps.getChild(); if(getStackInSlot(this.SLOT_MATERIAL) != null) { ItemStack materialIn = getStackInSlot(this.SLOT_MATERIAL); if(materialIn.stackSize == amount) {//Do slots this.setInventorySlotContents(SLOT_RESULT, new ItemStack(result, 1, 0)); }else { this.setInventorySlotContents(SLOT_RESULT, null); } } } } } } I am not a cat. I know my profile picture is sexy and amazing beyond anything you could imagine but my cat like features only persist in my fierce eyes. I might be a cat.
January 15, 20169 yr Author Solved it! Forgot to call the super for write/read nbt. I am not a cat. I know my profile picture is sexy and amazing beyond anything you could imagine but my cat like features only persist in my fierce eyes. I might be a cat.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.