Fix Sigil of Holding crash when opening gui (#1056)
This commit is contained in:
parent
5475549c18
commit
58d11dfbdc
|
@ -7,20 +7,21 @@ import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.nbt.NBTTagList;
|
import net.minecraft.nbt.NBTTagList;
|
||||||
|
import net.minecraft.util.NonNullList;
|
||||||
import net.minecraft.util.text.ITextComponent;
|
import net.minecraft.util.text.ITextComponent;
|
||||||
import net.minecraft.util.text.TextComponentString;
|
import net.minecraft.util.text.TextComponentString;
|
||||||
|
|
||||||
public class ItemInventory implements IInventory
|
public class ItemInventory implements IInventory
|
||||||
{
|
{
|
||||||
protected int[] syncedSlots = new int[0];
|
protected int[] syncedSlots = new int[0];
|
||||||
private ItemStack[] inventory;
|
private NonNullList<ItemStack> inventory;
|
||||||
private int size;
|
private int size;
|
||||||
private String name;
|
private String name;
|
||||||
protected ItemStack masterStack;
|
protected ItemStack masterStack;
|
||||||
|
|
||||||
public ItemInventory(ItemStack masterStack, int size, String name)
|
public ItemInventory(ItemStack masterStack, int size, String name)
|
||||||
{
|
{
|
||||||
this.inventory = new ItemStack[size];
|
this.inventory = NonNullList.withSize(size, ItemStack.EMPTY);
|
||||||
this.size = size;
|
this.size = size;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.masterStack = masterStack;
|
this.masterStack = masterStack;
|
||||||
|
@ -51,7 +52,7 @@ public class ItemInventory implements IInventory
|
||||||
public void readFromNBT(NBTTagCompound tagCompound)
|
public void readFromNBT(NBTTagCompound tagCompound)
|
||||||
{
|
{
|
||||||
NBTTagList tags = tagCompound.getTagList(Constants.NBT.ITEMS, 10);
|
NBTTagList tags = tagCompound.getTagList(Constants.NBT.ITEMS, 10);
|
||||||
inventory = new ItemStack[getSizeInventory()];
|
inventory = NonNullList.withSize(getSizeInventory(), ItemStack.EMPTY);
|
||||||
|
|
||||||
for (int i = 0; i < tags.tagCount(); i++)
|
for (int i = 0; i < tags.tagCount(); i++)
|
||||||
{
|
{
|
||||||
|
@ -60,9 +61,9 @@ public class ItemInventory implements IInventory
|
||||||
NBTTagCompound data = tags.getCompoundTagAt(i);
|
NBTTagCompound data = tags.getCompoundTagAt(i);
|
||||||
byte j = data.getByte(Constants.NBT.SLOT);
|
byte j = data.getByte(Constants.NBT.SLOT);
|
||||||
|
|
||||||
if (j >= 0 && j < inventory.length)
|
if (j >= 0 && j < inventory.size())
|
||||||
{
|
{
|
||||||
inventory[j] = new ItemStack(data);
|
inventory.set(i, new ItemStack(data));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -72,13 +73,13 @@ public class ItemInventory implements IInventory
|
||||||
{
|
{
|
||||||
NBTTagList tags = new NBTTagList();
|
NBTTagList tags = new NBTTagList();
|
||||||
|
|
||||||
for (int i = 0; i < inventory.length; i++)
|
for (int i = 0; i < inventory.size(); i++)
|
||||||
{
|
{
|
||||||
if ((inventory[i] != null) && !isSyncedSlot(i))
|
if ((!inventory.get(i).isEmpty()) && !isSyncedSlot(i))
|
||||||
{
|
{
|
||||||
NBTTagCompound data = new NBTTagCompound();
|
NBTTagCompound data = new NBTTagCompound();
|
||||||
data.setByte(Constants.NBT.SLOT, (byte) i);
|
data.setByte(Constants.NBT.SLOT, (byte) i);
|
||||||
inventory[i].writeToNBT(data);
|
inventory.get(i).writeToNBT(data);
|
||||||
tags.appendTag(data);
|
tags.appendTag(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -117,28 +118,28 @@ public class ItemInventory implements IInventory
|
||||||
@Override
|
@Override
|
||||||
public ItemStack getStackInSlot(int index)
|
public ItemStack getStackInSlot(int index)
|
||||||
{
|
{
|
||||||
return inventory[index];
|
return inventory.get(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack decrStackSize(int index, int count)
|
public ItemStack decrStackSize(int index, int count)
|
||||||
{
|
{
|
||||||
if (!inventory[index].isEmpty())
|
if (!inventory.get(index).isEmpty())
|
||||||
{
|
{
|
||||||
// if (!worldObj.isRemote)
|
// if (!worldObj.isRemote)
|
||||||
// worldObj.markBlockForUpdate(this.pos);
|
// worldObj.markBlockForUpdate(this.pos);
|
||||||
|
|
||||||
if (inventory[index].getCount() <= count)
|
if (inventory.get(index).getCount() <= count)
|
||||||
{
|
{
|
||||||
ItemStack itemStack = inventory[index];
|
ItemStack itemStack = inventory.get(index);
|
||||||
inventory[index] = ItemStack.EMPTY;
|
inventory.set(index, ItemStack.EMPTY);
|
||||||
markDirty();
|
markDirty();
|
||||||
return itemStack;
|
return itemStack;
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemStack itemStack = inventory[index].splitStack(count);
|
ItemStack itemStack = inventory.get(index).splitStack(count);
|
||||||
if (inventory[index].isEmpty())
|
if (inventory.get(index).isEmpty())
|
||||||
inventory[index] = ItemStack.EMPTY;
|
inventory.set(index, ItemStack.EMPTY);
|
||||||
|
|
||||||
markDirty();
|
markDirty();
|
||||||
return itemStack;
|
return itemStack;
|
||||||
|
@ -150,9 +151,9 @@ public class ItemInventory implements IInventory
|
||||||
@Override
|
@Override
|
||||||
public ItemStack removeStackFromSlot(int slot)
|
public ItemStack removeStackFromSlot(int slot)
|
||||||
{
|
{
|
||||||
if (!inventory[slot].isEmpty())
|
if (!inventory.get(slot).isEmpty())
|
||||||
{
|
{
|
||||||
ItemStack itemStack = inventory[slot];
|
ItemStack itemStack = inventory.get(slot);
|
||||||
setInventorySlotContents(slot, ItemStack.EMPTY);
|
setInventorySlotContents(slot, ItemStack.EMPTY);
|
||||||
return itemStack;
|
return itemStack;
|
||||||
}
|
}
|
||||||
|
@ -162,7 +163,7 @@ public class ItemInventory implements IInventory
|
||||||
@Override
|
@Override
|
||||||
public void setInventorySlotContents(int slot, ItemStack stack)
|
public void setInventorySlotContents(int slot, ItemStack stack)
|
||||||
{
|
{
|
||||||
inventory[slot] = stack;
|
inventory.set(slot, stack);
|
||||||
if (stack.getCount() > getInventoryStackLimit())
|
if (stack.getCount() > getInventoryStackLimit())
|
||||||
stack.setCount(getInventoryStackLimit());
|
stack.setCount(getInventoryStackLimit());
|
||||||
markDirty();
|
markDirty();
|
||||||
|
@ -221,7 +222,7 @@ public class ItemInventory implements IInventory
|
||||||
@Override
|
@Override
|
||||||
public void clear()
|
public void clear()
|
||||||
{
|
{
|
||||||
this.inventory = new ItemStack[size];
|
this.inventory = NonNullList.withSize(getSizeInventory(), ItemStack.EMPTY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -16,7 +16,7 @@ public class TileFilteredRoutingNode extends TileRoutingNode implements ISidedIn
|
||||||
public int currentActiveSlot = 0;
|
public int currentActiveSlot = 0;
|
||||||
public int[] priorities = new int[6];
|
public int[] priorities = new int[6];
|
||||||
|
|
||||||
public ItemInventory itemInventory = new ItemInventory(null, 9, "");
|
public ItemInventory itemInventory = new ItemInventory(ItemStack.EMPTY, 9, "");
|
||||||
|
|
||||||
public TileFilteredRoutingNode(int size, String name)
|
public TileFilteredRoutingNode(int size, String name)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue