Пример #1
0
  @Override
  public FluidTankInfo[] getTankInfo(ForgeDirection direction) {
    FluidTank compositeTank = new FluidTank(tank.getCapacity());

    TileTank tile = getBottomTank();

    int capacity = tank.getCapacity();

    if (tile != null && tile.tank.getFluid() != null) {
      compositeTank.setFluid(tile.tank.getFluid().copy());
    } else {
      return new FluidTankInfo[] {compositeTank.getInfo()};
    }

    tile = getTankAbove(tile);

    while (tile != null) {

      FluidStack liquid = tile.tank.getFluid();
      if (liquid == null || liquid.amount == 0) {
        // NOOP
      } else if (!compositeTank.getFluid().isFluidEqual(liquid)) {
        break;
      } else {
        compositeTank.getFluid().amount += liquid.amount;
      }

      capacity += tile.tank.getCapacity();
      tile = getTankAbove(tile);
    }

    compositeTank.setCapacity(capacity);
    return new FluidTankInfo[] {compositeTank.getInfo()};
  }