2013-12-18 12:25:28 +10:00
|
|
|
package codechicken.lib.inventory;
|
|
|
|
|
|
|
|
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
|
|
|
import net.minecraft.inventory.IInventory;
|
|
|
|
|
import net.minecraft.item.ItemStack;
|
|
|
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
|
|
|
|
2013-12-21 23:01:20 +10:00
|
|
|
/**
|
|
|
|
|
* IInventory implementation which saves and loads from an NBT tag
|
|
|
|
|
*/
|
2013-12-18 12:25:28 +10:00
|
|
|
public class InventoryNBT implements IInventory
|
|
|
|
|
{
|
|
|
|
|
protected ItemStack[] items;
|
|
|
|
|
protected NBTTagCompound tag;
|
|
|
|
|
|
|
|
|
|
public InventoryNBT(int size, NBTTagCompound tag)
|
|
|
|
|
{
|
|
|
|
|
this.tag = tag;
|
|
|
|
|
items = new ItemStack[size];
|
|
|
|
|
readNBT();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void writeNBT()
|
|
|
|
|
{
|
|
|
|
|
tag.setTag("items", InventoryUtils.writeItemStacksToTag(items, getInventoryStackLimit()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void readNBT()
|
|
|
|
|
{
|
|
|
|
|
if(tag.hasKey("items"))
|
2014-04-07 14:02:47 +10:00
|
|
|
InventoryUtils.readItemStacksFromTag(items, tag.getTagList("items", 10));
|
2013-12-18 12:25:28 +10:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public int getSizeInventory()
|
|
|
|
|
{
|
|
|
|
|
return items.length;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public ItemStack getStackInSlot(int slot)
|
|
|
|
|
{
|
|
|
|
|
return items[slot];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public ItemStack decrStackSize(int slot, int amount)
|
|
|
|
|
{
|
|
|
|
|
return InventoryUtils.decrStackSize(this, slot, amount);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public ItemStack getStackInSlotOnClosing(int slot)
|
|
|
|
|
{
|
|
|
|
|
return InventoryUtils.getStackInSlotOnClosing(this, slot);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void setInventorySlotContents(int slot, ItemStack stack)
|
|
|
|
|
{
|
|
|
|
|
items[slot] = stack;
|
2014-04-07 14:02:47 +10:00
|
|
|
markDirty();
|
2013-12-18 12:25:28 +10:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
2014-04-07 14:02:47 +10:00
|
|
|
public String getInventoryName()
|
2013-12-18 12:25:28 +10:00
|
|
|
{
|
|
|
|
|
return "NBT";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public int getInventoryStackLimit()
|
|
|
|
|
{
|
|
|
|
|
return 64;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
2014-04-07 14:02:47 +10:00
|
|
|
public void markDirty()
|
2013-12-18 12:25:28 +10:00
|
|
|
{
|
|
|
|
|
writeNBT();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean isUseableByPlayer(EntityPlayer var1)
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
2014-04-07 14:02:47 +10:00
|
|
|
public void openInventory()
|
2013-12-18 12:25:28 +10:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
2014-04-07 14:02:47 +10:00
|
|
|
public void closeInventory()
|
2013-12-18 12:25:28 +10:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean isItemValidForSlot(int i, ItemStack itemstack)
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
2014-04-07 14:02:47 +10:00
|
|
|
public boolean hasCustomInventoryName()
|
2013-12-18 12:25:28 +10:00
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|