shouldRepeat = false;
//Add up every volume and air.
int totalVolume = getVolume();
int totalAir = currentAir;
for(Pair<ForgeDirection, IPneumaticMachine> entry : teList) {
IAirHandler airHandler = entry.getValue().getAirHandler();
totalVolume += airHandler.getVolume();
totalAir += airHandler.getCurrentAir(entry.getKey().getOpposite());
}
//Only go push based, ignore any machines that have a higher pressure than this block.
Iterator<Pair<ForgeDirection, IPneumaticMachine>> iterator = teList.iterator();
while(iterator.hasNext()) {
Pair<ForgeDirection, IPneumaticMachine> entry = iterator.next();
IAirHandler airHandler = entry.getValue().getAirHandler();
int totalMachineAir = (int)((long)totalAir * airHandler.getVolume() / totalVolume);//Calculate the total air the machine is going to get.
int airDispersed = totalMachineAir - airHandler.getCurrentAir(entry.getKey().getOpposite());
if(airDispersed < 0) {
iterator.remove();
shouldRepeat = true;
dispersion.clear();
break;