Program: 133923
Project: 133923
Buggy source:
/** 
 * Creates a new LavaFlow ability and initializes all of the variables and cooldowns. The ability is not guaranteed to continue, it may be the case that the player doesn't have the correct permissions to bend this ability.
 * @param player the player that bended the ability
 * @param type either shift or sneak
 */
public LavaFlow(Player player,AbilityType type){
  super(player);
  if (!bPlayer.canLavabend()) {
    return;
  }
  this.time=System.currentTimeMillis();
  this.type=type;
  this.shiftCounter=0;
  this.currentRadius=0;
  this.particleOffset=3;
  this.removing=false;
  this.makeLava=true;
  this.clickIsFinished=false;
  this.affectedBlocks=new ArrayList<TempBlock>();
  this.tasks=new ArrayList<BukkitRunnable>();
  this.shiftCooldown=getConfig().getLong("String_Node_Str");
  this.shiftPlatformRadius=getConfig().getDouble("String_Node_Str");
  this.shiftMaxRadius=getConfig().getDouble("String_Node_Str");
  this.shiftFlowSpeed=getConfig().getDouble("String_Node_Str");
  this.shiftRemoveSpeed=getConfig().getDouble("String_Node_Str");
  this.shiftRemoveDelay=getConfig().getLong("String_Node_Str");
  this.particleDensity=getConfig().getDouble("String_Node_Str");
  this.clickRange=getConfig().getDouble("String_Node_Str");
  this.clickLavaRadius=getConfig().getDouble("String_Node_Str");
  this.clickLandRadius=getConfig().getDouble("String_Node_Str");
  this.clickLavaDelay=getConfig().getLong("String_Node_Str");
  this.clickLandDelay=getConfig().getLong("String_Node_Str");
  this.clickLavaCooldown=getConfig().getLong("String_Node_Str");
  this.clickLandCooldown=getConfig().getLong("String_Node_Str");
  this.clickLavaCleanupDelay=getConfig().getLong("String_Node_Str");
  this.clickLandCleanupDelay=getConfig().getLong("String_Node_Str");
  this.lavaCreateSpeed=getConfig().getDouble("String_Node_Str");
  this.landCreateSpeed=getConfig().getDouble("String_Node_Str");
  this.upwardFlow=getConfig().getInt("String_Node_Str");
  this.downwardFlow=getConfig().getInt("String_Node_Str");
  this.allowNaturalFlow=getConfig().getBoolean("String_Node_Str");
  if (bPlayer.isAvatarState()) {
    shiftCooldown=0;
    clickLavaCooldown=0;
    clickLandCooldown=0;
    shiftPlatformRadius=AvatarState.getValue(shiftPlatformRadius);
    shiftMaxRadius=AvatarState.getValue(shiftMaxRadius);
    shiftFlowSpeed=AvatarState.getValue(shiftFlowSpeed);
    shiftRemoveDelay=AvatarState.getValue(shiftRemoveDelay);
    clickRange=AvatarState.getValue(clickRange);
    clickLavaRadius=AvatarState.getValue(clickLavaRadius);
    clickLandRadius=AvatarState.getValue(clickLandRadius);
    clickLavaCleanupDelay=(long)AvatarState.getValue(clickLavaCleanupDelay);
    clickLandCleanupDelay=(long)AvatarState.getValue(clickLandCleanupDelay);
    lavaCreateSpeed=AvatarState.getValue(lavaCreateSpeed);
    landCreateSpeed=AvatarState.getValue(landCreateSpeed);
    upwardFlow=AvatarState.getValue(upwardFlow);
    downwardFlow=AvatarState.getValue(downwardFlow);
  }
  if (type == AbilityType.SHIFT) {
    ArrayList<LavaFlow> shiftFlows=LavaFlow.getLavaFlow(player,LavaFlow.AbilityType.SHIFT);
    if (shiftFlows.size() > 0 && !player.isSneaking()) {
      for (      LavaFlow lavaFlow : shiftFlows) {
        lavaFlow.shiftCounter++;
      }
    }
    if (bPlayer.isOnCooldown("String_Node_Str")) {
      remove();
      return;
    }
    start();
  }
 else   if (type == AbilityType.CLICK) {
    Block sourceBlock=BlockSource.getEarthOrLavaSourceBlock(player,clickRange,ClickType.LEFT_CLICK);
    if (sourceBlock == null) {
      remove();
      return;
    }
    long cooldown=makeLava ? clickLavaCooldown : clickLandCooldown;
    origin=sourceBlock.getLocation();
    makeLava=!isLava(sourceBlock);
    if (makeLava) {
      if (bPlayer.isOnCooldown("String_Node_Str")) {
        remove();
        return;
      }
 else {
        bPlayer.addCooldown("String_Node_Str",cooldown);
      }
    }
    if (!makeLava) {
      if (bPlayer.isOnCooldown("String_Node_Str")) {
        remove();
        return;
      }
 else {
        bPlayer.addCooldown("String_Node_Str",cooldown);
      }
    }
    start();
  }
}

Fixed version (ground truth):
/** 
 * Creates a new LavaFlow ability and initializes all of the variables and cooldowns. The ability is not guaranteed to continue, it may be the case that the player doesn't have the correct permissions to bend this ability.
 * @param player the player that bended the ability
 * @param type either shift or sneak
 */
public LavaFlow(Player player,AbilityType type){
  super(player);
  if (!bPlayer.canLavabend()) {
    return;
  }
  this.time=System.currentTimeMillis();
  this.type=type;
  this.shiftCounter=0;
  this.currentRadius=0;
  this.particleOffset=3;
  this.removing=false;
  this.makeLava=true;
  this.clickIsFinished=false;
  this.affectedBlocks=new ArrayList<TempBlock>();
  this.tasks=new ArrayList<BukkitRunnable>();
  this.revertMaterial=Material.getMaterial(getConfig().getString("String_Node_Str"));
  this.shiftCooldown=getConfig().getLong("String_Node_Str");
  this.shiftPlatformRadius=getConfig().getDouble("String_Node_Str");
  this.shiftMaxRadius=getConfig().getDouble("String_Node_Str");
  this.shiftFlowSpeed=getConfig().getDouble("String_Node_Str");
  this.shiftRemoveSpeed=getConfig().getDouble("String_Node_Str");
  this.shiftRemoveDelay=getConfig().getLong("String_Node_Str");
  this.particleDensity=getConfig().getDouble("String_Node_Str");
  this.clickRange=getConfig().getDouble("String_Node_Str");
  this.clickLavaRadius=getConfig().getDouble("String_Node_Str");
  this.clickLandRadius=getConfig().getDouble("String_Node_Str");
  this.clickLavaDelay=getConfig().getLong("String_Node_Str");
  this.clickLandDelay=getConfig().getLong("String_Node_Str");
  this.clickLavaCooldown=getConfig().getLong("String_Node_Str");
  this.clickLandCooldown=getConfig().getLong("String_Node_Str");
  this.clickLavaCleanupDelay=getConfig().getLong("String_Node_Str");
  this.clickLandCleanupDelay=getConfig().getLong("String_Node_Str");
  this.lavaCreateSpeed=getConfig().getDouble("String_Node_Str");
  this.landCreateSpeed=getConfig().getDouble("String_Node_Str");
  this.upwardFlow=getConfig().getInt("String_Node_Str");
  this.downwardFlow=getConfig().getInt("String_Node_Str");
  this.allowNaturalFlow=getConfig().getBoolean("String_Node_Str");
  if (bPlayer.isAvatarState()) {
    shiftCooldown=0;
    clickLavaCooldown=0;
    clickLandCooldown=0;
    shiftPlatformRadius=AvatarState.getValue(shiftPlatformRadius);
    shiftMaxRadius=AvatarState.getValue(shiftMaxRadius);
    shiftFlowSpeed=AvatarState.getValue(shiftFlowSpeed);
    shiftRemoveDelay=AvatarState.getValue(shiftRemoveDelay);
    clickRange=AvatarState.getValue(clickRange);
    clickLavaRadius=AvatarState.getValue(clickLavaRadius);
    clickLandRadius=AvatarState.getValue(clickLandRadius);
    clickLavaCleanupDelay=(long)AvatarState.getValue(clickLavaCleanupDelay);
    clickLandCleanupDelay=(long)AvatarState.getValue(clickLandCleanupDelay);
    lavaCreateSpeed=AvatarState.getValue(lavaCreateSpeed);
    landCreateSpeed=AvatarState.getValue(landCreateSpeed);
    upwardFlow=AvatarState.getValue(upwardFlow);
    downwardFlow=AvatarState.getValue(downwardFlow);
  }
  if (type == AbilityType.SHIFT) {
    ArrayList<LavaFlow> shiftFlows=LavaFlow.getLavaFlow(player,LavaFlow.AbilityType.SHIFT);
    if (shiftFlows.size() > 0 && !player.isSneaking()) {
      for (      LavaFlow lavaFlow : shiftFlows) {
        lavaFlow.shiftCounter++;
      }
    }
    if (bPlayer.isOnCooldown("String_Node_Str")) {
      remove();
      return;
    }
    start();
  }
 else   if (type == AbilityType.CLICK) {
    Block sourceBlock=BlockSource.getEarthOrLavaSourceBlock(player,clickRange,ClickType.LEFT_CLICK);
    if (sourceBlock == null) {
      remove();
      return;
    }
    long cooldown=makeLava ? clickLavaCooldown : clickLandCooldown;
    origin=sourceBlock.getLocation();
    makeLava=!isLava(sourceBlock);
    if (bPlayer.isOnCooldown("String_Node_Str")) {
      remove();
      return;
    }
 else {
      bPlayer.addCooldown("String_Node_Str",cooldown);
    }
    start();
  }
}