Fixed multiple fluid in network conflict

This commit is contained in:
Calclavia 2014-02-24 21:32:15 +08:00
parent 3c4808bb6c
commit ca9e694a68
2 changed files with 13 additions and 8 deletions

View file

@ -126,7 +126,8 @@ public class PartPipe extends PartFramedConnection<EnumPipeMaterial, IFluidPipe,
@Override
public int fill(ForgeDirection from, FluidStack resource, boolean doFill)
{
markPacket = true;
if (doFill)
markPacket = true;
if (!world().isRemote)
return tank.fill(resource, doFill);
return pressure;
@ -135,7 +136,8 @@ public class PartPipe extends PartFramedConnection<EnumPipeMaterial, IFluidPipe,
@Override
public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain)
{
markPacket = true;
if (doDrain)
markPacket = true;
if (!world().isRemote)
return tank.drain(resource.amount, doDrain);
return null;
@ -144,7 +146,8 @@ public class PartPipe extends PartFramedConnection<EnumPipeMaterial, IFluidPipe,
@Override
public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain)
{
markPacket = true;
if (doDrain)
markPacket = true;
if (!world().isRemote)
return tank.drain(maxDrain, doDrain);
return null;

View file

@ -191,8 +191,10 @@ public class PipeNetwork extends FluidNetwork
if (quantity > 0)
{
sourcePipe.drain(dir.getOpposite(), quantity, true);
otherPipe.fill(dir, new FluidStack(fluidA.getFluid(), quantity), true);
FluidStack drainStack = sourcePipe.drain(dir.getOpposite(), quantity, false);
if (drainStack != null)
sourcePipe.drain(dir.getOpposite(), otherPipe.fill(dir, drainStack, true), true);
}
}
}
@ -213,8 +215,8 @@ public class PipeNetwork extends FluidNetwork
{
if (sourceTank.getFluidAmount() > 0 && transferAmount > 0)
{
FluidStack drainStack = sourceTank.drain(transferAmount, false);
sourceTank.drain(fluidHandler.fill(dir.getOpposite(), drainStack, true), true);
FluidStack drainStack = sourcePipe.drain(dir.getOpposite(), transferAmount, false);
sourcePipe.drain(dir.getOpposite(), fluidHandler.fill(dir.getOpposite(), drainStack, true), true);
}
}
else if (pressure < tankPressure)
@ -222,7 +224,7 @@ public class PipeNetwork extends FluidNetwork
if (transferAmount > 0)
{
FluidStack drainStack = fluidHandler.drain(dir.getOpposite(), transferAmount, false);
fluidHandler.drain(dir.getOpposite(), sourceTank.fill(drainStack, true), true);
fluidHandler.drain(dir.getOpposite(), sourcePipe.fill(dir.getOpposite(), drainStack, true), true);
}
}
}