Program: 134002
Project: 134002
Buggy source:
private static int spoutableWaterHeight(Location location,Player player){
  WaterSpout spout=instances.get(player);
  int height=spout.defaultheight;
  if (WaterMethods.isNight(player.getWorld()))   height=(int)WaterMethods.waterbendingNightAugment((double)height,player.getWorld());
  int maxheight=(int)((double)spout.defaultheight * ProjectKorra.plugin.getConfig().getDouble("String_Node_Str")) + 5;
  Block blocki;
  for (int i=0; i < maxheight; i++) {
    blocki=location.clone().add(0,-i,0).getBlock();
    if (GeneralMethods.isRegionProtectedFromBuild(player,"String_Node_Str",blocki.getLocation()))     return -1;
    if (!affectedblocks.contains(blocki)) {
      if (blocki.getType() == Material.WATER || blocki.getType() == Material.STATIONARY_WATER) {
        if (!TempBlock.isTempBlock(blocki)) {
          revertBaseBlock(player);
        }
        spout.base=blocki;
        if (i > height)         return height;
        return i;
      }
      if (blocki.getType() == Material.ICE || blocki.getType() == Material.SNOW || blocki.getType() == Material.SNOW_BLOCK) {
        if (!TempBlock.isTempBlock(blocki)) {
          revertBaseBlock(player);
          instances.get(player).baseblock=new TempBlock(blocki,Material.STATIONARY_WATER,(byte)8);
        }
        spout.base=blocki;
        if (i > height)         return height;
        return i;
      }
      if ((blocki.getType() != Material.AIR && (!WaterMethods.isPlant(blocki) || !WaterMethods.canPlantbend(player)))) {
        revertBaseBlock(player);
        return -1;
      }
    }
  }
  revertBaseBlock(player);
  return -1;
}

Fixed version (ground truth):
private static int spoutableWaterHeight(Location location,Player player){
  WaterSpout spout=instances.get(player);
  int height=spout.defaultheight;
  if (WaterMethods.isNight(player.getWorld()))   height=(int)WaterMethods.waterbendingNightAugment((double)height,player.getWorld());
  int maxheight=(int)((double)spout.defaultheight * ProjectKorra.plugin.getConfig().getDouble("String_Node_Str")) + 5;
  Block blocki;
  for (int i=0; i < maxheight; i++) {
    blocki=location.clone().add(0,-i,0).getBlock();
    if (GeneralMethods.isRegionProtectedFromBuild(player,"String_Node_Str",blocki.getLocation()))     return -1;
    if (!affectedblocks.contains(blocki)) {
      if (blocki.getType() == Material.WATER || blocki.getType() == Material.STATIONARY_WATER) {
        if (!TempBlock.isTempBlock(blocki)) {
          revertBaseBlock(player);
        }
        spout.base=blocki;
        if (i > height)         return height;
        return i;
      }
      if (blocki.getType() == Material.ICE || blocki.getType() == Material.SNOW || blocki.getType() == Material.SNOW_BLOCK || (blocki.getType() == Material.PACKED_ICE && spout.canBendOnPackedIce)) {
        if (!TempBlock.isTempBlock(blocki)) {
          revertBaseBlock(player);
          instances.get(player).baseblock=new TempBlock(blocki,Material.STATIONARY_WATER,(byte)8);
        }
        spout.base=blocki;
        if (i > height)         return height;
        return i;
      }
      if ((blocki.getType() != Material.AIR && (!WaterMethods.isPlant(blocki) || !WaterMethods.canPlantbend(player)))) {
        revertBaseBlock(player);
        return -1;
      }
    }
  }
  revertBaseBlock(player);
  return -1;
}