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--; 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; return sent;
} }
public synchronized int emit(GasStack stack) public synchronized int emit(GasStack stack, boolean doTransfer)
{ {
if(gasStored != null && gasStored.getGas() != stack.getGas()) 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); int toUse = Math.min(getGasNeeded(), stack.amount);
if(gasStored == null) if(doTransfer)
{ {
gasStored = stack.copy(); if(gasStored == null)
gasStored.amount = toUse; {
} gasStored = stack.copy();
else { gasStored.amount = toUse;
gasStored.amount += toUse; }
else {
gasStored.amount += toUse;
}
} }
return toUse; return toUse;

View file

@ -14,14 +14,14 @@ public interface IGasHandler
* @param stack - gas to add * @param stack - gas to add
* @return gas added * @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. * Draws a certain amount of gas from this block.
* @param amount - amount to draw * @param amount - amount to draw
* @return gas drawn * @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. * 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()); 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 { else {
float targetScale = getTransmitterNetwork().gasScale; float targetScale = getTransmitterNetwork().gasScale;
@ -258,18 +279,18 @@ public class PartPressurizedTube extends PartTransmitter<GasNetwork> implements
} }
@Override @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) if(getConnectionType(side) == ConnectionType.NORMAL || getConnectionType(side) == ConnectionType.PULL)
{ {
return getTransmitterNetwork().emit(stack); return getTransmitterNetwork().emit(stack, doTransfer);
} }
return 0; return 0;
} }
@Override @Override
public GasStack drawGas(ForgeDirection side, int amount) public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{ {
return null; return null;
} }

View file

@ -78,15 +78,15 @@ public class SharedInventory implements IStrictEnergyStorage, IFluidHandler, IGa
} }
@Override @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 @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 @Override

View file

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

View file

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

View file

@ -165,7 +165,7 @@ public class TileEntityChemicalDissolutionChamber extends TileEntityElectricBloc
{ {
if(((IGasHandler)tileEntity).canReceiveGas(MekanismUtils.getRight(facing).getOpposite(), outputTank.getGas().getGas())) 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 @Override
public int receiveGas(ForgeDirection side, GasStack stack) public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer)
{ {
if(canReceiveGas(side, stack.getGas())) if(canReceiveGas(side, stack.getGas()))
{ {
return injectTank.receive(stack, true); return injectTank.receive(stack, doTransfer);
} }
return 0; return 0;
} }
@Override @Override
public GasStack drawGas(ForgeDirection side, int amount) public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{ {
return null; 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())) 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 @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)) if(canReceiveGas(side, stack != null ? stack.getGas() : null))
{ {
return getTank(side).receive(stack, true); return getTank(side).receive(stack, doTransfer);
} }
return 0; return 0;
} }
@Override @Override
public GasStack drawGas(ForgeDirection side, int amount) public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{ {
if(canDrawGas(side, null)) if(canDrawGas(side, null))
{ {
return getTank(side).draw(amount, true); return getTank(side).draw(amount, doTransfer);
} }
return null; return null;

View file

@ -43,11 +43,11 @@ public class TileEntityChemicalInjectionChamber extends TileEntityAdvancedElectr
} }
@Override @Override
public int receiveGas(ForgeDirection side, GasStack stack) public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer)
{ {
if(isValidGas(stack.getGas())) if(isValidGas(stack.getGas()))
{ {
return gasTank.receive(stack, true); return gasTank.receive(stack, doTransfer);
} }
return 0; 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())) 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())) 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 @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)) if(canReceiveGas(side, stack != null ? stack.getGas() : null))
{ {
return getTank(side).receive(stack, true); return getTank(side).receive(stack, doTransfer);
} }
return 0; return 0;
} }
@Override @Override
public GasStack drawGas(ForgeDirection side, int amount) public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{ {
if(canDrawGas(side, null)) if(canDrawGas(side, null))
{ {
return getTank(side).draw(amount, true); return getTank(side).draw(amount, doTransfer);
} }
return null; 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())) 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())) 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 @Override
public int receiveGas(ForgeDirection side, GasStack stack) public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer)
{ {
return 0; return 0;
} }
@Override @Override
public GasStack drawGas(ForgeDirection side, int amount) public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{ {
if(side == MekanismUtils.getLeft(facing)) if(side == MekanismUtils.getLeft(facing))
{ {
return leftTank.draw(amount, true); return leftTank.draw(amount, doTransfer);
} }
else if(side == MekanismUtils.getRight(facing)) else if(side == MekanismUtils.getRight(facing))
{ {
return rightTank.draw(amount, true); return rightTank.draw(amount, doTransfer);
} }
return null; return null;

View file

@ -44,6 +44,7 @@ public class TileEntityEntangledBlock extends TileEntityElectricBlock implements
public void setInventory(String frequency) public void setInventory(String frequency)
{ {
sharedInventory = SharedInventoryManager.getInventory(frequency); sharedInventory = SharedInventoryManager.getInventory(frequency);
markDirty();
} }
@Override @Override
@ -152,15 +153,15 @@ public class TileEntityEntangledBlock extends TileEntityElectricBlock implements
} }
@Override @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 @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 @Override

View file

@ -878,11 +878,11 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IPerip
} }
@Override @Override
public int receiveGas(ForgeDirection side, GasStack stack) public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer)
{ {
if(canReceiveGas(side, stack.getGas())) if(canReceiveGas(side, stack.getGas()))
{ {
return gasTank.receive(stack, true); return gasTank.receive(stack, doTransfer);
} }
return 0; return 0;
@ -901,7 +901,7 @@ public class TileEntityFactory extends TileEntityElectricBlock implements IPerip
} }
@Override @Override
public GasStack drawGas(ForgeDirection side, int amount) public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{ {
return null; 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())) 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 @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 @Override
public GasStack drawGas(ForgeDirection side, int amount) public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{ {
return null; 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())) 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 @Override
public int receiveGas(ForgeDirection side, GasStack stack) public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer)
{ {
if(side == MekanismUtils.getLeft(facing)) if(side == MekanismUtils.getLeft(facing))
{ {
return inputGasTank.receive(stack, true); return inputGasTank.receive(stack, doTransfer);
} }
return 0; return 0;
} }
@Override @Override
public GasStack drawGas(ForgeDirection side, int amount) public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{ {
if(side == MekanismUtils.getRight(facing)) if(side == MekanismUtils.getRight(facing))
{ {
return outputGasTank.draw(amount, true); return outputGasTank.draw(amount, doTransfer);
} }
return null; return null;

View file

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

View file

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

View file

@ -104,21 +104,21 @@ public class TileEntityReactorPort extends TileEntityReactorBlock implements IFl
} }
@Override @Override
public int receiveGas(ForgeDirection side, GasStack stack) public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer)
{ {
if(getReactor() != null) if(getReactor() != null)
{ {
if(stack.getGas() == GasRegistry.getGas("deuterium")) 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")) 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")) 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 @Override
public GasStack drawGas(ForgeDirection side, int amount) public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer)
{ {
if(getReactor() != null) if(getReactor() != null)
{ {
if(getReactor().getSteamTank().getFluidAmount() > 0) 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);
} }
} }