From 9cd2c697e5a56c2b9b3318bfd5f3d47639a61524 Mon Sep 17 00:00:00 2001 From: mezz Date: Mon, 13 Jun 2016 20:01:28 -0700 Subject: [PATCH] Fix #2961 Capability data is not preserved by fluid handler interactions (#2976) --- .../net/minecraftforge/fluids/FluidUtil.java | 8 ++------ .../fluids/UniversalBucket.java | 10 +++------- .../templates/FluidHandlerItemStack.java | 4 +--- .../FluidHandlerItemStackSimple.java | 4 +--- .../wrappers/FluidBucketWrapper.java | 20 +++++-------------- .../FluidContainerRegistryWrapper.java | 12 ++--------- 6 files changed, 14 insertions(+), 44 deletions(-) diff --git a/src/main/java/net/minecraftforge/fluids/FluidUtil.java b/src/main/java/net/minecraftforge/fluids/FluidUtil.java index f03e82860a..a5c02a6386 100644 --- a/src/main/java/net/minecraftforge/fluids/FluidUtil.java +++ b/src/main/java/net/minecraftforge/fluids/FluidUtil.java @@ -170,9 +170,7 @@ public class FluidUtil ItemStack filledReal = tryFillContainer(container, fluidSource, maxAmount, player, true); if (filledReal != null) { - container.setItem(filledReal.getItem()); - container.setTagCompound(filledReal.getTagCompound()); - container.setItemDamage(filledReal.getItemDamage()); + container.deserializeNBT(filledReal.serializeNBT()); return true; } } @@ -243,9 +241,7 @@ public class FluidUtil } else { - container.setItem(emptiedReal.getItem()); - container.setTagCompound(emptiedReal.getTagCompound()); - container.setItemDamage(emptiedReal.getItemDamage()); + container.deserializeNBT(emptiedReal.serializeNBT()); } return true; } diff --git a/src/main/java/net/minecraftforge/fluids/UniversalBucket.java b/src/main/java/net/minecraftforge/fluids/UniversalBucket.java index 4e646edb8e..87bc18ce39 100644 --- a/src/main/java/net/minecraftforge/fluids/UniversalBucket.java +++ b/src/main/java/net/minecraftforge/fluids/UniversalBucket.java @@ -280,8 +280,7 @@ public class UniversalBucket extends Item implements IFluidContainerItem { if (doFill) { - container.setItem(Items.WATER_BUCKET); - container.setTagCompound(null); + container.deserializeNBT(new ItemStack(Items.WATER_BUCKET).serializeNBT()); } return getCapacity(); } @@ -289,8 +288,7 @@ public class UniversalBucket extends Item implements IFluidContainerItem { if (doFill) { - container.setItem(Items.LAVA_BUCKET); - container.setTagCompound(null); + container.deserializeNBT(new ItemStack(Items.LAVA_BUCKET).serializeNBT()); } return getCapacity(); } @@ -318,9 +316,7 @@ public class UniversalBucket extends Item implements IFluidContainerItem { if(getEmpty() != null) { - container.setItem(getEmpty().getItem()); - container.setTagCompound(getEmpty().getTagCompound()); - container.setItemDamage(getEmpty().getItemDamage()); + container.deserializeNBT(getEmpty().serializeNBT()); } else { container.stackSize = 0; diff --git a/src/main/java/net/minecraftforge/fluids/capability/templates/FluidHandlerItemStack.java b/src/main/java/net/minecraftforge/fluids/capability/templates/FluidHandlerItemStack.java index 305aeac5f9..8b70f59c35 100644 --- a/src/main/java/net/minecraftforge/fluids/capability/templates/FluidHandlerItemStack.java +++ b/src/main/java/net/minecraftforge/fluids/capability/templates/FluidHandlerItemStack.java @@ -221,9 +221,7 @@ public class FluidHandlerItemStack implements IFluidHandler, ICapabilityProvider protected void setContainerToEmpty() { super.setContainerToEmpty(); - container.setItem(emptyContainer.getItem()); - container.setTagCompound(emptyContainer.getTagCompound()); - container.setItemDamage(emptyContainer.getItemDamage()); + container.deserializeNBT(emptyContainer.serializeNBT()); } } } diff --git a/src/main/java/net/minecraftforge/fluids/capability/templates/FluidHandlerItemStackSimple.java b/src/main/java/net/minecraftforge/fluids/capability/templates/FluidHandlerItemStackSimple.java index 46090ce322..9dca0c2a45 100644 --- a/src/main/java/net/minecraftforge/fluids/capability/templates/FluidHandlerItemStackSimple.java +++ b/src/main/java/net/minecraftforge/fluids/capability/templates/FluidHandlerItemStackSimple.java @@ -198,9 +198,7 @@ public class FluidHandlerItemStackSimple implements IFluidHandler, ICapabilityPr protected void setContainerToEmpty() { super.setContainerToEmpty(); - container.setItem(emptyContainer.getItem()); - container.setTagCompound(emptyContainer.getTagCompound()); - container.setItemDamage(emptyContainer.getItemDamage()); + container.deserializeNBT(emptyContainer.serializeNBT()); } } } diff --git a/src/main/java/net/minecraftforge/fluids/capability/wrappers/FluidBucketWrapper.java b/src/main/java/net/minecraftforge/fluids/capability/wrappers/FluidBucketWrapper.java index 16525ccc7c..0bb3e0921f 100644 --- a/src/main/java/net/minecraftforge/fluids/capability/wrappers/FluidBucketWrapper.java +++ b/src/main/java/net/minecraftforge/fluids/capability/wrappers/FluidBucketWrapper.java @@ -69,34 +69,24 @@ public class FluidBucketWrapper implements IFluidHandler, ICapabilityProvider protected void setFluid(Fluid fluid) { if (fluid == null) { - container.setItem(Items.BUCKET); - container.setTagCompound(null); - container.setItemDamage(0); + container.deserializeNBT(new ItemStack(Items.BUCKET).serializeNBT()); } else if (fluid == FluidRegistry.WATER) { - container.setItem(Items.WATER_BUCKET); - container.setTagCompound(null); - container.setItemDamage(0); + container.deserializeNBT(new ItemStack(Items.WATER_BUCKET).serializeNBT()); } else if (fluid == FluidRegistry.LAVA) { - container.setItem(Items.LAVA_BUCKET); - container.setTagCompound(null); - container.setItemDamage(0); + container.deserializeNBT(new ItemStack(Items.LAVA_BUCKET).serializeNBT()); } else if (fluid.getName().equals("milk")) { - container.setItem(Items.MILK_BUCKET); - container.setTagCompound(null); - container.setItemDamage(0); + container.deserializeNBT(new ItemStack(Items.MILK_BUCKET).serializeNBT()); } else if (FluidRegistry.isUniversalBucketEnabled() && FluidRegistry.getBucketFluids().contains(fluid)) { ItemStack filledBucket = UniversalBucket.getFilledBucket(ForgeModContainer.getInstance().universalBucket, fluid); - container.setItem(filledBucket.getItem()); - container.setTagCompound(filledBucket.getTagCompound()); - container.setItemDamage(filledBucket.getItemDamage()); + container.deserializeNBT(filledBucket.serializeNBT()); } } diff --git a/src/main/java/net/minecraftforge/fluids/capability/wrappers/FluidContainerRegistryWrapper.java b/src/main/java/net/minecraftforge/fluids/capability/wrappers/FluidContainerRegistryWrapper.java index 09894e316a..c6f12147f9 100644 --- a/src/main/java/net/minecraftforge/fluids/capability/wrappers/FluidContainerRegistryWrapper.java +++ b/src/main/java/net/minecraftforge/fluids/capability/wrappers/FluidContainerRegistryWrapper.java @@ -28,14 +28,6 @@ public class FluidContainerRegistryWrapper implements IFluidHandler, ICapability this.container = container; } - private void updateContainer(ItemStack newContainerData) - { - container.setItem(newContainerData.getItem()); - container.setTagCompound(newContainerData.getTagCompound()); - container.setItemDamage(newContainerData.getItemDamage()); - container.stackSize = newContainerData.stackSize; - } - @Override public IFluidTankProperties[] getTankProperties() { @@ -62,7 +54,7 @@ public class FluidContainerRegistryWrapper implements IFluidHandler, ICapability if (doFill) { - updateContainer(result); + container.deserializeNBT(result.serializeNBT()); } FluidStack newContained = FluidContainerRegistry.getFluidForFilledItem(result); @@ -113,7 +105,7 @@ public class FluidContainerRegistryWrapper implements IFluidHandler, ICapability { emptyContainer.stackSize = 0; } - updateContainer(emptyContainer); + container.deserializeNBT(emptyContainer.serializeNBT()); } return contained; }