/** @return How much oxygen this network needs. */ @Override public float getRequest(TileEntity... ignoreTiles) { List<Float> requests = new ArrayList<Float>(); if (this.oxygenTiles.isEmpty()) this.refreshOxygenTiles(); List<TileEntity> ignoreTilesList = Arrays.asList(ignoreTiles); for (TileEntity tileEntity : new HashSet<TileEntity>(this.oxygenTiles.keySet())) { if (ignoreTilesList.contains(tileEntity)) { continue; } if (tileEntity instanceof IOxygenReceiver && ((IOxygenReceiver) tileEntity).shouldPullOxygen()) { if (!tileEntity.isInvalid()) { if (tileEntity .getWorldObj() .getTileEntity(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord) == tileEntity) { for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) { BlockVec3 tileVec = new BlockVec3(tileEntity); TileEntity tile = tileVec .modifyPositionFromSide(direction, 1) .getTileEntity(tileEntity.getWorldObj()); if (((IOxygenReceiver) tileEntity).canConnect(direction, NetworkType.OXYGEN) && this.pipes.contains(tile)) { requests.add(((IOxygenReceiver) tileEntity).getOxygenRequest(direction)); } } } } } } float total = 0.0F; for (Float f : requests) { total += f; } return total; }