From 9a10f8be3121f49c7661ca2a75ce5324693db4aa Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Fri, 13 Sep 2013 08:51:57 -0400 Subject: [PATCH] Fixed tank duping issue I think it simple came down to i need to clean up the network before doing anything to the network. As well i think the fluid container network was not clearing the save stack data when it was empty. --- .../prefab/tilenetwork/fluid/FluidCraftingHandler.java | 3 +++ .../prefab/tilenetwork/fluid/NetworkFluidContainers.java | 2 ++ .../core/prefab/tilenetwork/fluid/NetworkFluidTiles.java | 7 +++---- src/dark/fluid/common/machines/TileEntityTank.java | 5 +++-- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/dark/core/prefab/tilenetwork/fluid/FluidCraftingHandler.java b/src/dark/core/prefab/tilenetwork/fluid/FluidCraftingHandler.java index 1e888846..d441e14d 100644 --- a/src/dark/core/prefab/tilenetwork/fluid/FluidCraftingHandler.java +++ b/src/dark/core/prefab/tilenetwork/fluid/FluidCraftingHandler.java @@ -154,10 +154,12 @@ public class FluidCraftingHandler } else if (stackTwo != null && stackOne != null && !stackOne.isFluidEqual(stackTwo)) { + System.out.println("preforming fluid merge event"); Object result = fluidMergeResults.get(new Pair(stackOne.getFluid(), stackTwo.getFluid())); /* Try to merge fluids by mod defined rules first */ if (result != null) { + System.out.println("result = " + result.toString()); if (result instanceof Fluid) { resultStack = new FluidStack(((Fluid) result).getID(), stackOne.amount + stackTwo.amount); @@ -186,6 +188,7 @@ public class FluidCraftingHandler } if (resultStack == null) { + System.out.println("Merging fluids into a waste fluid stack"); Fluid waste = FluidRegistry.getFluid("waste"); if (waste == null) { diff --git a/src/dark/core/prefab/tilenetwork/fluid/NetworkFluidContainers.java b/src/dark/core/prefab/tilenetwork/fluid/NetworkFluidContainers.java index 2cc416da..3d051e03 100644 --- a/src/dark/core/prefab/tilenetwork/fluid/NetworkFluidContainers.java +++ b/src/dark/core/prefab/tilenetwork/fluid/NetworkFluidContainers.java @@ -39,6 +39,7 @@ public class NetworkFluidContainers extends NetworkFluidTiles if (this.combinedStorage() == null || this.combinedStorage().getFluid() == null) { + super.writeDataToTiles(); return; } FluidStack fillStack = this.combinedStorage().getFluid().copy(); @@ -85,6 +86,7 @@ public class NetworkFluidContainers extends NetworkFluidTiles /* Fill all tanks on this level */ for (INetworkFluidPart part : parts) { + ((INetworkFluidPart) part).drainTankContent(0, Integer.MAX_VALUE, true); fillStack.amount -= part.fillTankContent(0, FluidHelper.getStack(fillStack, fillvolume), true); } } diff --git a/src/dark/core/prefab/tilenetwork/fluid/NetworkFluidTiles.java b/src/dark/core/prefab/tilenetwork/fluid/NetworkFluidTiles.java index ff8636e8..dc900cb9 100644 --- a/src/dark/core/prefab/tilenetwork/fluid/NetworkFluidTiles.java +++ b/src/dark/core/prefab/tilenetwork/fluid/NetworkFluidTiles.java @@ -111,6 +111,7 @@ public class NetworkFluidTiles extends NetworkTileEntities @Override public void writeDataToTiles() { + this.cleanUpMembers(); if (this.combinedStorage().getFluid() != null && this.networkMember.size() > 0) { FluidStack stack = this.combinedStorage().getFluid() == null ? null : this.combinedStorage().getFluid().copy(); @@ -125,7 +126,6 @@ public class NetworkFluidTiles extends NetworkTileEntities { //EMPTY TANK ((INetworkFluidPart) par).drainTankContent(0, Integer.MAX_VALUE, true); - //FILL TANK if (stack != null) { @@ -135,7 +135,7 @@ public class NetworkFluidTiles extends NetworkTileEntities } } } - this.cleanUpMembers(); + } @Override @@ -232,10 +232,9 @@ public class NetworkFluidTiles extends NetworkTileEntities newNetwork.getNetworkMemebers().addAll(this.getNetworkMemebers()); newNetwork.getNetworkMemebers().addAll(network.getNetworkMemebers()); - newNetwork.refresh(); + newNetwork.cleanUpMembers(); newNetwork.combinedStorage().setFluid(FluidCraftingHandler.mergeFluidStacks(one, two)); newNetwork.writeDataToTiles(); - } @Override diff --git a/src/dark/fluid/common/machines/TileEntityTank.java b/src/dark/fluid/common/machines/TileEntityTank.java index 555ddd09..305f7575 100644 --- a/src/dark/fluid/common/machines/TileEntityTank.java +++ b/src/dark/fluid/common/machines/TileEntityTank.java @@ -16,6 +16,7 @@ import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; import net.minecraftforge.fluids.IFluidTank; @@ -96,7 +97,7 @@ public class TileEntityTank extends TileEntityFluidStorage implements IFluidHand if (id == 0) { this.getTank().setFluid(FluidStack.loadFluidStackFromNBT(PacketHandler.instance().readNBTTagCompound(dataStream))); - System.out.println("Received Fluid Packet Fluid = " + this.getTank().getFluid().getFluid().getName() + "@" + this.getTank().getFluid().amount); + //System.out.println("Received Fluid Packet Fluid = " + this.getTank().getFluid().getFluid().getName() + "@" + this.getTank().getFluid().amount); } else { @@ -355,7 +356,7 @@ public class TileEntityTank extends TileEntityFluidStorage implements IFluidHand } @Override - public IFluidTank getTank(int index) + public FluidTank getTank(int index) { return this.getTank(); }