@Override
  public void updateEntity() {
    super.updateEntity();

    if (!world.isRemote) {
      if (shouldReadFluidsFromNBT) {
        if (!doneReadingFluidsFromNBT) {
          int i = 0;
          while (i <= internalFluidsAmounts.length - 1) {
            internalFluids.add(
                new FluidStack(
                    FluidRegistry.getFluid(internalFluidsIDS[i]), internalFluidsAmounts[i]));
            i++;
          }
          shouldReadFluidsFromNBT = false;
          doneReadingFluidsFromNBT = true;
        }
      } else {
        if (!doneReadingFluidsFromNBT) {
          int i = 1;
          while (i < FluidRegistry.getMaxID()) {
            internalFluids.add(new FluidStack(FluidRegistry.getFluid(i), 0));
            i++;
          }
          doneReadingFluidsFromNBT = true;
        }
      }

      if (justReadNBT) {
        if (fluidBridges.isEmpty() && shouldReadBridgesFromNBT) {
          int xCoordsLength = fluidBridgesXCoords.length;
          shouldReadBridgesFromNBT = false;
          if (fluidBridgesYCoords[0] == 260) {
          } else {
            int i = 0;
            while (i <= xCoordsLength - 1) {
              fluidBridges.add(
                  (TileEntityFluidNetworkBridge)
                      worldObj.getTileEntity(
                          fluidBridgesXCoords[i], fluidBridgesYCoords[i], fluidBridgesZCoords[i]));
              i++;
            }
          }
        }
        justReadNBT = false;
      }

      int i = 0;
      // Removes bridges that don't exist anymore.
      if (!fluidBridges.isEmpty()) {
        while (i <= fluidBridges.size() - 1) {
          if (world.getTileEntity(
                  fluidBridges.get(i).xCoord,
                  fluidBridges.get(i).yCoord,
                  fluidBridges.get(i).zCoord)
              == null) {
            fluidBridges.remove(i);
            i--;
          }
          i++;
        }
      }
    }
  }