Program: 133916
Project: 133916
Buggy source:
/** 
 * Attempts to access a Water bendable block that was recently shifted or clicked on by the player.
 * @param player the player that is trying to bend.
 * @param range the maximum range to access the block.
 * @param clickType the action that was performed to access the source,either  {@link ClickType}.SHIFT_DOWN or ClickType.LEFT_CLICK.
 * @param allowWater true if water blocks are allowed.
 * @param allowIce true if ice blocks are allowed.
 * @param allowPlant true if plant blocks are allowed.
 * @param allowWaterBottles true if we should look for a close water block,that may have been created by a WaterBottle.
 * @return a valid Water bendable block, or null if none was found.
 */
public static Block getWaterSourceBlock(Player player,double range,ClickType clickType,boolean allowWater,boolean allowIce,boolean allowPlant,boolean allowWaterBottles){
  Block sourceBlock=null;
  if (allowWaterBottles) {
    sourceBlock=WaterAbility.getWaterSourceBlock(player,range,allowPlant);
    if (sourceBlock == null || sourceBlock.getLocation().distance(player.getEyeLocation()) > 3) {
      sourceBlock=null;
    }
  }
  if (allowWater && sourceBlock == null) {
    sourceBlock=getSourceBlock(player,range,BlockSourceType.WATER,clickType);
  }
  if (allowIce && sourceBlock == null) {
    sourceBlock=getSourceBlock(player,range,BlockSourceType.ICE,clickType);
  }
  if (allowPlant && sourceBlock == null) {
    sourceBlock=getSourceBlock(player,range,BlockSourceType.PLANT,clickType);
  }
  if (sourceBlock != null && TempBlock.isTempBlock(sourceBlock) && !tempblock) {
    return null;
  }
  return sourceBlock;
}

Fixed version (ground truth):
/** 
 * Attempts to access a Water bendable block that was recently shifted or clicked on by the player.
 * @param player the player that is trying to bend.
 * @param range the maximum range to access the block.
 * @param clickType the action that was performed to access the source,either  {@link ClickType}.SHIFT_DOWN or ClickType.LEFT_CLICK.
 * @param allowWater true if water blocks are allowed.
 * @param allowIce true if ice blocks are allowed.
 * @param allowPlant true if plant blocks are allowed.
 * @param allowWaterBottles true if we should look for a close water block,that may have been created by a WaterBottle.
 * @return a valid Water bendable block, or null if none was found.
 */
public static Block getWaterSourceBlock(Player player,double range,ClickType clickType,boolean allowWater,boolean allowIce,boolean allowPlant,boolean allowSnow,boolean allowWaterBottles){
  Block sourceBlock=null;
  if (allowWaterBottles) {
    sourceBlock=WaterAbility.getWaterSourceBlock(player,range,allowPlant);
    if (sourceBlock == null || sourceBlock.getLocation().distance(player.getEyeLocation()) > 3) {
      sourceBlock=null;
    }
  }
  if (allowWater && sourceBlock == null) {
    sourceBlock=getSourceBlock(player,range,BlockSourceType.WATER,clickType);
  }
  if (allowIce && sourceBlock == null) {
    sourceBlock=getSourceBlock(player,range,BlockSourceType.ICE,clickType);
  }
  if (allowPlant && sourceBlock == null) {
    sourceBlock=getSourceBlock(player,range,BlockSourceType.PLANT,clickType);
  }
  if (allowSnow && sourceBlock == null) {
    sourceBlock=getSourceBlock(player,range,BlockSourceType.SNOW,clickType);
  }
  if (sourceBlock != null && TempBlock.isTempBlock(sourceBlock) && !tempblock) {
    return null;
  }
  return sourceBlock;
}