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.
This commit is contained in:
parent
c6031ce624
commit
9a10f8be31
4 changed files with 11 additions and 6 deletions
|
@ -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<Fluid, Fluid>(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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue