This commit is contained in:
Aidan Brady 2014-08-10 00:14:19 -04:00
commit 62743cfda7
20 changed files with 102 additions and 77 deletions

View file

@ -168,7 +168,7 @@ public class GasNetwork extends DynamicNetwork<IGasHandler, GasNetwork>
remaining--;
}
toSend -= acceptor.receiveGas(acceptorDirections.get(acceptor).getOpposite(), new GasStack(stack.getGas(), currentSending));
toSend -= acceptor.receiveGas(acceptorDirections.get(acceptor).getOpposite(), new GasStack(stack.getGas(), currentSending), true);
}
}
}
@ -184,7 +184,7 @@ public class GasNetwork extends DynamicNetwork<IGasHandler, GasNetwork>
return sent;
}
public synchronized int emit(GasStack stack)
public synchronized int emit(GasStack stack, boolean doTransfer)
{
if(gasStored != null && gasStored.getGas() != stack.getGas())
{
@ -193,13 +193,16 @@ public class GasNetwork extends DynamicNetwork<IGasHandler, GasNetwork>
int toUse = Math.min(getGasNeeded(), stack.amount);
if(gasStored == null)
if(doTransfer)
{
gasStored = stack.copy();
gasStored.amount = toUse;
}
else {
gasStored.amount += toUse;
if(gasStored == null)
{
gasStored = stack.copy();
gasStored.amount = toUse;
}
else {
gasStored.amount += toUse;
}
}
return toUse;

View file

@ -14,14 +14,14 @@ public interface IGasHandler
* @param stack - gas to add
* @return gas added
*/
public int receiveGas(ForgeDirection side, GasStack stack);
public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer);
/**
* Draws a certain amount of gas from this block.
* @param amount - amount to draw
* @return gas drawn
*/
public GasStack drawGas(ForgeDirection side, int amount);
public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer);
/**
* Whether or not this block can accept gas from a certain side.

View file

@ -57,6 +57,27 @@ public class PartPressurizedTube extends PartTransmitter<GasNetwork> implements
MekanismUtils.saveChunk(tile());
}
}
IGasHandler[] connectedAcceptors = GasTransmission.getConnectedAcceptors(tile());
for(ForgeDirection side : getConnections(ConnectionType.PULL))
{
if(connectedAcceptors[side.ordinal()] != null)
{
IGasHandler container = connectedAcceptors[side.ordinal()];
if(container != null)
{
GasStack received = container.drawGas(side.getOpposite(), 100, false);
if(received != null && received.amount != 0)
{
container.drawGas(side.getOpposite(), getTransmitterNetwork().emit(received, true), true);
}
}
}
}
}
else {
float targetScale = getTransmitterNetwork().gasScale;
@ -258,18 +279,18 @@ public class PartPressurizedTube extends PartTransmitter<GasNetwork> implements
}
@Override
public int receiveGas(ForgeDirection side, GasStack stack)
public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer)
{
if(getConnectionType(side) == ConnectionType.NORMAL || getConnectionType(side) == ConnectionType.PULL)
{
return getTransmitterNetwork().emit(stack);
return getTransmitterNetwork().emit(stack, doTransfer);
}
return 0;
}
@Override
public GasStack drawGas(ForgeDirection side, int amount)
public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{
return null;
}

View file

@ -78,15 +78,15 @@ public class SharedInventory implements IStrictEnergyStorage, IFluidHandler, IGa
}
@Override
public int receiveGas(ForgeDirection side, GasStack stack)
public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer)
{
return storedGas.receive(stack, true);
return storedGas.receive(stack, doTransfer);
}
@Override
public GasStack drawGas(ForgeDirection side, int amount)
public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{
return storedGas.draw(amount, true);
return storedGas.draw(amount, doTransfer);
}
@Override

View file

@ -333,13 +333,13 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM
}
@Override
public int receiveGas(ForgeDirection side, GasStack stack)
public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer)
{
return 0;
}
@Override
public GasStack drawGas(ForgeDirection side, int amount)
public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{
return null;
}

View file

@ -394,18 +394,18 @@ public class TileEntityChemicalCrystallizer extends TileEntityElectricBlock impl
}
@Override
public int receiveGas(ForgeDirection side, GasStack stack)
public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer)
{
if(canReceiveGas(side, stack.getGas()))
{
return inputTank.receive(stack, true);
return inputTank.receive(stack, doTransfer);
}
return 0;
}
@Override
public GasStack drawGas(ForgeDirection side, int amount)
public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{
return null;
}

View file

@ -165,7 +165,7 @@ public class TileEntityChemicalDissolutionChamber extends TileEntityElectricBloc
{
if(((IGasHandler)tileEntity).canReceiveGas(MekanismUtils.getRight(facing).getOpposite(), outputTank.getGas().getGas()))
{
outputTank.draw(((IGasHandler)tileEntity).receiveGas(MekanismUtils.getRight(facing).getOpposite(), toSend), true);
outputTank.draw(((IGasHandler)tileEntity).receiveGas(MekanismUtils.getRight(facing).getOpposite(), toSend, true), true);
}
}
}
@ -409,18 +409,18 @@ public class TileEntityChemicalDissolutionChamber extends TileEntityElectricBloc
}
@Override
public int receiveGas(ForgeDirection side, GasStack stack)
public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer)
{
if(canReceiveGas(side, stack.getGas()))
{
return injectTank.receive(stack, true);
return injectTank.receive(stack, doTransfer);
}
return 0;
}
@Override
public GasStack drawGas(ForgeDirection side, int amount)
public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{
return null;
}

View file

@ -136,7 +136,7 @@ public class TileEntityChemicalInfuser extends TileEntityElectricBlock implement
{
if(((IGasHandler)tileEntity).canReceiveGas(ForgeDirection.getOrientation(facing).getOpposite(), centerTank.getGas().getGas()))
{
centerTank.draw(((IGasHandler)tileEntity).receiveGas(ForgeDirection.getOrientation(facing).getOpposite(), toSend), true);
centerTank.draw(((IGasHandler)tileEntity).receiveGas(ForgeDirection.getOrientation(facing).getOpposite(), toSend, true), true);
}
}
}
@ -388,22 +388,22 @@ public class TileEntityChemicalInfuser extends TileEntityElectricBlock implement
}
@Override
public int receiveGas(ForgeDirection side, GasStack stack)
public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer)
{
if(canReceiveGas(side, stack != null ? stack.getGas() : null))
{
return getTank(side).receive(stack, true);
return getTank(side).receive(stack, doTransfer);
}
return 0;
}
@Override
public GasStack drawGas(ForgeDirection side, int amount)
public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{
if(canDrawGas(side, null))
{
return getTank(side).draw(amount, true);
return getTank(side).draw(amount, doTransfer);
}
return null;

View file

@ -43,11 +43,11 @@ public class TileEntityChemicalInjectionChamber extends TileEntityAdvancedElectr
}
@Override
public int receiveGas(ForgeDirection side, GasStack stack)
public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer)
{
if(isValidGas(stack.getGas()))
{
return gasTank.receive(stack, true);
return gasTank.receive(stack, doTransfer);
}
return 0;

View file

@ -145,7 +145,7 @@ public class TileEntityChemicalOxidizer extends TileEntityElectricBlock implemen
{
if(((IGasHandler)tileEntity).canReceiveGas(MekanismUtils.getRight(facing).getOpposite(), gasTank.getGas().getGas()))
{
gasTank.draw(((IGasHandler)tileEntity).receiveGas(MekanismUtils.getRight(facing).getOpposite(), toSend), true);
gasTank.draw(((IGasHandler)tileEntity).receiveGas(MekanismUtils.getRight(facing).getOpposite(), toSend, true), true);
}
}
}

View file

@ -141,7 +141,7 @@ public class TileEntityChemicalWasher extends TileEntityElectricBlock implements
{
if(((IGasHandler)tileEntity).canReceiveGas(MekanismUtils.getRight(facing).getOpposite(), outputTank.getGas().getGas()))
{
outputTank.draw(((IGasHandler)tileEntity).receiveGas(MekanismUtils.getRight(facing).getOpposite(), toSend), true);
outputTank.draw(((IGasHandler)tileEntity).receiveGas(MekanismUtils.getRight(facing).getOpposite(), toSend, true), true);
}
}
}
@ -457,22 +457,22 @@ public class TileEntityChemicalWasher extends TileEntityElectricBlock implements
}
@Override
public int receiveGas(ForgeDirection side, GasStack stack)
public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer)
{
if(canReceiveGas(side, stack != null ? stack.getGas() : null))
{
return getTank(side).receive(stack, true);
return getTank(side).receive(stack, doTransfer);
}
return 0;
}
@Override
public GasStack drawGas(ForgeDirection side, int amount)
public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{
if(canDrawGas(side, null))
{
return getTank(side).draw(amount, true);
return getTank(side).draw(amount, doTransfer);
}
return null;

View file

@ -154,7 +154,7 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp
{
if(((IGasHandler)tileEntity).canReceiveGas(MekanismUtils.getLeft(facing).getOpposite(), leftTank.getGas().getGas()))
{
leftTank.draw(((IGasHandler)tileEntity).receiveGas(MekanismUtils.getLeft(facing).getOpposite(), toSend), true);
leftTank.draw(((IGasHandler)tileEntity).receiveGas(MekanismUtils.getLeft(facing).getOpposite(), toSend, true), true);
}
}
}
@ -180,7 +180,7 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp
{
if(((IGasHandler)tileEntity).canReceiveGas(MekanismUtils.getRight(facing).getOpposite(), rightTank.getGas().getGas()))
{
rightTank.draw(((IGasHandler)tileEntity).receiveGas(MekanismUtils.getRight(facing).getOpposite(), toSend), true);
rightTank.draw(((IGasHandler)tileEntity).receiveGas(MekanismUtils.getRight(facing).getOpposite(), toSend, true), true);
}
}
}
@ -645,21 +645,21 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp
}
@Override
public int receiveGas(ForgeDirection side, GasStack stack)
public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer)
{
return 0;
}
@Override
public GasStack drawGas(ForgeDirection side, int amount)
public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{
if(side == MekanismUtils.getLeft(facing))
{
return leftTank.draw(amount, true);
return leftTank.draw(amount, doTransfer);
}
else if(side == MekanismUtils.getRight(facing))
{
return rightTank.draw(amount, true);
return rightTank.draw(amount, doTransfer);
}
return null;

View file

@ -44,6 +44,7 @@ public class TileEntityEntangledBlock extends TileEntityElectricBlock implements
public void setInventory(String frequency)
{
sharedInventory = SharedInventoryManager.getInventory(frequency);
markDirty();
}
@Override
@ -152,15 +153,15 @@ public class TileEntityEntangledBlock extends TileEntityElectricBlock implements
}
@Override
public int receiveGas(ForgeDirection side, GasStack stack)
public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer)
{
return sharedInventory == null ? 0 : sharedInventory.receiveGas(side, stack);
return sharedInventory == null ? 0 : sharedInventory.receiveGas(side, stack, doTransfer);
}
@Override
public GasStack drawGas(ForgeDirection side, int amount)
public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{
return sharedInventory == null ? null : sharedInventory.drawGas(side, amount);
return sharedInventory == null ? null : sharedInventory.drawGas(side, amount, doTransfer);
}
@Override

View file

@ -878,11 +878,11 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IPerip
}
@Override
public int receiveGas(ForgeDirection side, GasStack stack)
public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer)
{
if(canReceiveGas(side, stack.getGas()))
{
return gasTank.receive(stack, true);
return gasTank.receive(stack, doTransfer);
}
return 0;
@ -901,7 +901,7 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IPerip
}
@Override
public GasStack drawGas(ForgeDirection side, int amount)
public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{
return null;
}

View file

@ -69,7 +69,7 @@ public class TileEntityGasTank extends TileEntityContainerBlock implements IGasH
{
if(((IGasHandler)tileEntity).canReceiveGas(ForgeDirection.getOrientation(facing).getOpposite(), gasTank.getGas().getGas()))
{
gasTank.draw(((IGasHandler)tileEntity).receiveGas(ForgeDirection.getOrientation(facing).getOpposite(), toSend), true);
gasTank.draw(((IGasHandler)tileEntity).receiveGas(ForgeDirection.getOrientation(facing).getOpposite(), toSend, true), true);
}
}
}
@ -118,13 +118,13 @@ public class TileEntityGasTank extends TileEntityContainerBlock implements IGasH
}
@Override
public int receiveGas(ForgeDirection side, GasStack stack)
public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer)
{
return gasTank.receive(stack, true);
return gasTank.receive(stack, doTransfer);
}
@Override
public GasStack drawGas(ForgeDirection side, int amount)
public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{
return null;
}

View file

@ -121,7 +121,7 @@ public class TileEntityPRC extends TileEntityBasicMachine implements IFluidHandl
{
if(((IGasHandler)tileEntity).canReceiveGas(MekanismUtils.getLeft(facing), outputGasTank.getGas().getGas()))
{
outputGasTank.draw(((IGasHandler)tileEntity).receiveGas(MekanismUtils.getLeft(facing), toSend), true);
outputGasTank.draw(((IGasHandler)tileEntity).receiveGas(MekanismUtils.getLeft(facing), toSend, true), true);
}
}
}
@ -401,22 +401,22 @@ public class TileEntityPRC extends TileEntityBasicMachine implements IFluidHandl
}
@Override
public int receiveGas(ForgeDirection side, GasStack stack)
public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer)
{
if(side == MekanismUtils.getLeft(facing))
{
return inputGasTank.receive(stack, true);
return inputGasTank.receive(stack, doTransfer);
}
return 0;
}
@Override
public GasStack drawGas(ForgeDirection side, int amount)
public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{
if(side == MekanismUtils.getRight(facing))
{
return outputGasTank.draw(amount, true);
return outputGasTank.draw(amount, doTransfer);
}
return null;

View file

@ -42,11 +42,11 @@ public class TileEntityPurificationChamber extends TileEntityAdvancedElectricMac
}
@Override
public int receiveGas(ForgeDirection side, GasStack stack)
public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer)
{
if(stack.getGas() == GasRegistry.getGas("oxygen"))
{
return gasTank.receive(stack, true);
return gasTank.receive(stack, doTransfer);
}
return 0;

View file

@ -192,7 +192,7 @@ public class TileEntityRotaryCondensentrator extends TileEntityElectricBlock imp
{
if(((IGasHandler)tileEntity).canReceiveGas(MekanismUtils.getLeft(facing).getOpposite(), gasTank.getGas().getGas()))
{
gasTank.draw(((IGasHandler)tileEntity).receiveGas(MekanismUtils.getLeft(facing).getOpposite(), toSend), true);
gasTank.draw(((IGasHandler)tileEntity).receiveGas(MekanismUtils.getLeft(facing).getOpposite(), toSend, true), true);
}
}
}
@ -481,15 +481,15 @@ public class TileEntityRotaryCondensentrator extends TileEntityElectricBlock imp
}
@Override
public int receiveGas(ForgeDirection side, GasStack stack)
public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer)
{
return gasTank.receive(stack, true);
return gasTank.receive(stack, doTransfer);
}
@Override
public GasStack drawGas(ForgeDirection side, int amount)
public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{
return gasTank.draw(amount, true);
return gasTank.draw(amount, doTransfer);
}
@Override

View file

@ -229,11 +229,11 @@ public class TileEntityGasGenerator extends TileEntityGenerator implements IGasH
}
@Override
public int receiveGas(ForgeDirection side, GasStack stack)
public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer)
{
if(fuelTank.getGas() == null || fuelTank.getGas().isGasEqual(stack))
{
return fuelTank.receive(stack, true);
return fuelTank.receive(stack, doTransfer);
}
return 0;
@ -262,7 +262,7 @@ public class TileEntityGasGenerator extends TileEntityGenerator implements IGasH
}
@Override
public GasStack drawGas(ForgeDirection side, int amount)
public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{
return null;
}

View file

@ -104,21 +104,21 @@ public class TileEntityReactorPort extends TileEntityReactorBlock implements IFl
}
@Override
public int receiveGas(ForgeDirection side, GasStack stack)
public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer)
{
if(getReactor() != null)
{
if(stack.getGas() == GasRegistry.getGas("deuterium"))
{
return getReactor().getDeuteriumTank().receive(stack, true);
return getReactor().getDeuteriumTank().receive(stack, doTransfer);
}
else if(stack.getGas() == GasRegistry.getGas("tritium"))
{
return getReactor().getTritiumTank().receive(stack, true);
return getReactor().getTritiumTank().receive(stack, doTransfer);
}
else if(stack.getGas() == GasRegistry.getGas("fusionFuelDT"))
{
return getReactor().getFuelTank().receive(stack, true);
return getReactor().getFuelTank().receive(stack, doTransfer);
}
}
@ -126,13 +126,13 @@ public class TileEntityReactorPort extends TileEntityReactorBlock implements IFl
}
@Override
public GasStack drawGas(ForgeDirection side, int amount)
public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{
if(getReactor() != null)
{
if(getReactor().getSteamTank().getFluidAmount() > 0)
{
return new GasStack(GasRegistry.getGas("steam"), getReactor().getSteamTank().drain(amount, true).amount);
return new GasStack(GasRegistry.getGas("steam"), getReactor().getSteamTank().drain(amount, doTransfer).amount);
}
}