From b66d3b6b0f360bd9b13e7dc6057263ec1aafa25a Mon Sep 17 00:00:00 2001 From: LexManos Date: Wed, 10 Apr 2013 16:44:31 -0700 Subject: [PATCH] Added NBT data to liquid stacks. Closes #501 --- .../minecraftforge/liquids/LiquidStack.java | 31 ++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/common/net/minecraftforge/liquids/LiquidStack.java b/common/net/minecraftforge/liquids/LiquidStack.java index 9cb89dc82..a7fcdd1ce 100644 --- a/common/net/minecraftforge/liquids/LiquidStack.java +++ b/common/net/minecraftforge/liquids/LiquidStack.java @@ -27,6 +27,7 @@ public class LiquidStack public final int itemID; public int amount; public final int itemMeta; + public NBTTagCompound extra; public LiquidStack(int itemID, int amount) { this(itemID, amount, 0); } public LiquidStack(Item item, int amount) { this(item.itemID, amount, 0); } @@ -39,12 +40,25 @@ public class LiquidStack 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) { nbt.setInteger("Amount", amount); nbt.setShort("Id", (short)itemID); nbt.setShort("Meta", (short)itemMeta); nbt.setString("LiquidName", LiquidDictionary.findLiquidName(this)); + if (extra != null) + { + nbt.setTag("extra", extra); + } return nbt; } @@ -64,7 +78,7 @@ public class LiquidStack */ 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) { - 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() { - 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"); LiquidStack liquidstack = new LiquidStack(itemID, amount, itemMeta); + if (nbt.hasKey("extra")) + { + liquidstack.extra = nbt.getCompoundTag("extra"); + } return liquidstack.itemID == 0 ? null : liquidstack; } @@ -223,7 +246,7 @@ public class LiquidStack if (ob instanceof LiquidStack) { 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; }