Fixed grate not filling world with gravity

This commit is contained in:
Calclavia 2014-03-11 20:36:45 +08:00
parent 59e5c5cf10
commit e03aec6950
3 changed files with 21 additions and 26 deletions

View file

@ -60,24 +60,6 @@ public class TileGrate extends TilePressureNode implements IRotatable
iconSide = iconRegister.registerIcon(Reference.PREFIX + "grate");
}
@Override
public boolean canUpdate()
{
return false;
}
@Override
public ForgeDirection getDirection()
{
return ForgeDirection.getOrientation(getBlockMetadata());
}
@Override
public void setDirection(ForgeDirection direction)
{
this.worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, direction.ordinal(), 3);
}
@Override
public FluidTankInfo[] getTankInfo(ForgeDirection from)
{
@ -96,11 +78,18 @@ public class TileGrate extends TilePressureNode implements IRotatable
return getDirection() != from;
}
@Override
public void updateEntity()
{
super.updateEntity();
System.out.println("" + getPressureTank().getFluidAmount());
}
@Override
public int fill(ForgeDirection from, FluidStack resource, boolean doFill)
{
int filled = getPressureTank().fill(resource, doFill);
System.out.println("FILL");
if (getPressureTank().getFluidAmount() > 0)
{
@ -110,10 +99,11 @@ public class TileGrate extends TilePressureNode implements IRotatable
gratePath.startFill(new Vector3(this), getPressureTank().getFluid().getFluid().getID());
}
return getPressureTank().drain(gratePath.tryFill(getPressureTank().getFluidAmount(), 2000), true).amount;
int filledInWorld = gratePath.tryFill(getPressureTank().getFluidAmount(), 2000);
getPressureTank().drain(filledInWorld, true);
}
return 0;
return filled;
}
@Override
@ -127,6 +117,8 @@ public class TileGrate extends TilePressureNode implements IRotatable
@Override
public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain)
{
System.out.println("DRAIN");
if (maxDrain > 0)
{
if (gratePath == null)

View file

@ -84,6 +84,7 @@ public abstract class TilePressureNode extends TileFluidNode implements IPressur
{
this.tank = new FluidTank(FluidContainerRegistry.BUCKET_VOLUME);
}
return this.tank;
}

View file

@ -100,14 +100,16 @@ public class FluidPressureNode extends Node<IPressureNodeProvider, TickingGrid,
if (obj instanceof FluidPressureNode)
{
FluidPressureNode otherPipe = (FluidPressureNode) obj;
/**
* Move fluid from higher pressure to lower. In this case, move from tankA to
* tankB.
*/
FluidPressureNode otherNode = (FluidPressureNode) obj;
// A is the pressure in the current node while B is the pressure in the node we
// are iterating through.
int pressureA = getPressure(dir);
int pressureB = otherPipe.getPressure(dir.getOpposite());
int pressureB = otherNode.getPressure(dir.getOpposite());
if (pressureA >= pressureB)
{
@ -123,7 +125,7 @@ public class FluidPressureNode extends Node<IPressureNodeProvider, TickingGrid,
if (amountA > 0)
{
FluidTank tankB = otherPipe.parent.getPressureTank();
FluidTank tankB = otherNode.parent.getPressureTank();
if (tankB != null)
{
@ -137,7 +139,7 @@ public class FluidPressureNode extends Node<IPressureNodeProvider, TickingGrid,
FluidStack drainStack = parent.drain(dir.getOpposite(), quantity, false);
if (drainStack != null && drainStack.amount > 0)
parent.drain(dir.getOpposite(), otherPipe.parent.fill(dir, drainStack, true), true);
parent.drain(dir.getOpposite(), otherNode.parent.fill(dir, drainStack, true), true);
}
}
}