public LavaSurgeWall(Player player) {
    super(player);

    this.interval = 30;
    this.radius = getConfig().getDouble("Abilities.Water.Surge.Wall.Radius");
    this.range = getConfig().getDouble("Abilities.Water.Surge.Wall.Range");
    this.cooldown = GeneralMethods.getGlobalCooldown();

    LavaSurgeWave wave = getAbility(player, LavaSurgeWave.class);
    if (wave != null && wave.isProgressing()) {
      LavaSurgeWave.launch(player);
      return;
    }

    if (bPlayer.isAvatarState()) {
      radius = AvatarState.getValue(radius);
      range = AvatarState.getValue(range);
    }

    if (!bPlayer.canBend(this)) {
      return;
    }
  }
  public EarthColumn(Player player) {
    BendingPlayer bPlayer = GeneralMethods.getBendingPlayer(player.getName());

    if (bPlayer.isOnCooldown("RaiseEarth")) return;

    try {
      if (AvatarState.isAvatarState(player)) {
        height = (int) (2. / 5. * (double) AvatarState.getValue(height));
      }
      block = BlockSource.getEarthSourceBlock(player, range, ClickType.LEFT_CLICK);
      if (block == null) return;
      origin = block.getLocation();
      location = origin.clone();
      distance =
          EarthMethods.getEarthbendableBlocksLength(
              player, block, direction.clone().multiply(-1), height);
    } catch (IllegalStateException e) {
      return;
    }

    this.player = player;

    loadAffectedBlocks();

    if (distance != 0) {
      if (canInstantiate()) {
        id = ID;
        instances.put(id, this);
        bPlayer.addCooldown("RaiseEarth", GeneralMethods.getGlobalCooldown());
        if (ID >= Integer.MAX_VALUE) {
          ID = Integer.MIN_VALUE;
        }
        ID++;
        time = System.currentTimeMillis() - interval;
      }
    }
  }
  public static void throwEarth(Player player) {
    ArrayList<EarthBlast> ignore = new ArrayList<EarthBlast>();

    BendingPlayer bPlayer = GeneralMethods.getBendingPlayer(player.getName());
    if (bPlayer.isOnCooldown("EarthBlast")) {
      return;
    }

    boolean cooldown = false;
    for (int id : instances.keySet()) {
      EarthBlast blast = instances.get(id);
      if (blast.player == player && !blast.progressing) {
        blast.throwEarth();
        cooldown = true;
        ignore.add(blast);
      }
    }

    if (cooldown) {
      bPlayer.addCooldown("EarthBlast", GeneralMethods.getGlobalCooldown());
    }

    redirectTargettedBlasts(player, ignore);
  }