Added NBT data to liquid stacks. Closes #501

This commit is contained in:
LexManos 2013-04-10 16:44:31 -07:00
parent 969cd4e762
commit b66d3b6b0f
1 changed files with 27 additions and 4 deletions

View File

@ -27,6 +27,7 @@ public class LiquidStack
public final int itemID; public final int itemID;
public int amount; public int amount;
public final int itemMeta; public final int itemMeta;
public NBTTagCompound extra;
public LiquidStack(int itemID, int amount) { this(itemID, amount, 0); } public LiquidStack(int itemID, int amount) { this(itemID, amount, 0); }
public LiquidStack(Item item, int amount) { this(item.itemID, amount, 0); } public LiquidStack(Item item, int amount) { this(item.itemID, amount, 0); }
@ -39,12 +40,25 @@ public class LiquidStack
this.itemMeta = itemDamage; this.itemMeta = itemDamage;
} }
public LiquidStack(int itemID, int amount, int itemDamage, NBTTagCompound nbt)
{
this(itemID, amount, itemDamage);
if (nbt != null)
{
extra = (NBTTagCompound)nbt.copy();
}
}
public NBTTagCompound writeToNBT(NBTTagCompound nbt) public NBTTagCompound writeToNBT(NBTTagCompound nbt)
{ {
nbt.setInteger("Amount", amount); nbt.setInteger("Amount", amount);
nbt.setShort("Id", (short)itemID); nbt.setShort("Id", (short)itemID);
nbt.setShort("Meta", (short)itemMeta); nbt.setShort("Meta", (short)itemMeta);
nbt.setString("LiquidName", LiquidDictionary.findLiquidName(this)); nbt.setString("LiquidName", LiquidDictionary.findLiquidName(this));
if (extra != null)
{
nbt.setTag("extra", extra);
}
return nbt; return nbt;
} }
@ -64,7 +78,7 @@ public class LiquidStack
*/ */
public LiquidStack copy() public LiquidStack copy()
{ {
return new LiquidStack(itemID, amount, itemMeta); return new LiquidStack(itemID, amount, itemMeta, extra);
} }
/** /**
@ -73,7 +87,7 @@ public class LiquidStack
*/ */
public boolean isLiquidEqual(LiquidStack other) public boolean isLiquidEqual(LiquidStack other)
{ {
return other != null && itemID == other.itemID && itemMeta == other.itemMeta; return other != null && itemID == other.itemID && itemMeta == other.itemMeta && (extra == null ? other.extra == null : extra.equals(other.extra));
} }
/** /**
@ -109,7 +123,12 @@ public class LiquidStack
*/ */
public ItemStack asItemStack() public ItemStack asItemStack()
{ {
return new ItemStack(itemID, 1, itemMeta); ItemStack stack = new ItemStack(itemID, 1, itemMeta);
if (extra != null)
{
stack.stackTagCompound = (NBTTagCompound)extra.copy();
}
return stack;
} }
/** /**
@ -139,6 +158,10 @@ public class LiquidStack
} }
int amount = nbt.getInteger("Amount"); int amount = nbt.getInteger("Amount");
LiquidStack liquidstack = new LiquidStack(itemID, amount, itemMeta); LiquidStack liquidstack = new LiquidStack(itemID, amount, itemMeta);
if (nbt.hasKey("extra"))
{
liquidstack.extra = nbt.getCompoundTag("extra");
}
return liquidstack.itemID == 0 ? null : liquidstack; return liquidstack.itemID == 0 ? null : liquidstack;
} }
@ -223,7 +246,7 @@ public class LiquidStack
if (ob instanceof LiquidStack) if (ob instanceof LiquidStack)
{ {
LiquidStack ls = (LiquidStack)ob; LiquidStack ls = (LiquidStack)ob;
return ls.itemID == itemID && ls.itemMeta == itemMeta; return ls.itemID == itemID && ls.itemMeta == itemMeta && (extra == null ? ls.extra == null : extra.equals(ls.extra));
} }
return false; return false;
} }