Ejemplo n.º 1
0
  private void affect(LivingEntity entity) {
    int damage = (int) WaterMethods.waterbendingNightAugment(defaultdamage, player.getWorld());
    if (entity instanceof Player) {
      BendingPlayer bPlayer = GeneralMethods.getBendingPlayer(player.getName());
      if (bPlayer.canBeSlowed()) {
        PotionEffect effect = new PotionEffect(PotionEffectType.SLOW, 70, 2);
        new TempPotionEffect(entity, effect);
        bPlayer.slow(10);
        // entity.damage(damage, player);
        GeneralMethods.damageEntity(player, entity, damage, "IceBlast");
      }
    } else {
      PotionEffect effect = new PotionEffect(PotionEffectType.SLOW, 70, 2);
      new TempPotionEffect(entity, effect);
      // entity.damage(damage, player);
      GeneralMethods.damageEntity(player, entity, damage, "IceBlast");
    }
    AirMethods.breakBreathbendingHold(entity);

    for (int x = 0; x < 30; x++) {
      ParticleEffect.ITEM_CRACK.display(
          new ParticleEffect.ItemData(Material.ICE, (byte) 0),
          new Vector(
              ((Math.random() - 0.5) * .5),
              ((Math.random() - 0.5) * .5),
              ((Math.random() - 0.5) * .5)),
          .3f,
          location,
          257.0D);
    }
  }
Ejemplo n.º 2
0
  public QuickStrike(Player player) {
    if (!isEligible(player)) return;

    Entity e = GeneralMethods.getTargetedEntity(player, 2, new ArrayList<Entity>());

    if (e == null) return;

    GeneralMethods.damageEntity(player, e, damage);

    if (GeneralMethods.rand.nextInt(100) < blockChance && e instanceof Player) {
      ChiPassive.blockChi((Player) e);
    }

    ChiComboManager.addCombo(player, ChiCombo.QuickStrike);
  }
Ejemplo n.º 3
0
 private void affect(LivingEntity entity) {
   entity.setVelocity(thrown);
   GeneralMethods.damageEntity(player, entity, damage, "IceSpike");
   damaged.add(entity);
   long slowCooldown = IceSpike2.slowCooldown;
   int mod = 2;
   if (entity instanceof Player) {
     BendingPlayer bPlayer = GeneralMethods.getBendingPlayer(player.getName());
     if (bPlayer.canBeSlowed()) {
       PotionEffect effect = new PotionEffect(PotionEffectType.SLOW, 70, mod);
       new TempPotionEffect(entity, effect);
       bPlayer.slow(slowCooldown);
     }
   } else {
     PotionEffect effect = new PotionEffect(PotionEffectType.SLOW, 70, mod);
     new TempPotionEffect(entity, effect);
   }
   AirMethods.breakBreathbendingHold(entity);
 }
  private boolean progress() {
    if (player.isDead()
        || !player.isOnline()
        || !GeneralMethods.canBend(player.getName(), "EarthBlast")) {
      breakBlock();
      return false;
    }
    if (System.currentTimeMillis() - time >= interval) {
      time = System.currentTimeMillis();

      if (falling) {
        breakBlock();
        return false;
      }

      if (!EarthMethods.isEarthbendable(player, sourceblock)
          && sourceblock.getType() != Material.COBBLESTONE) {
        instances.remove(id);
        return false;
      }

      if (!progressing && !falling) {

        if (GeneralMethods.getBoundAbility(player) == null) {
          unfocusBlock();
          return false;
        }

        if (!GeneralMethods.getBoundAbility(player).equalsIgnoreCase("EarthBlast")) {
          unfocusBlock();
          return false;
        }

        if (sourceblock == null) {
          instances.remove(id);
          return false;
        }
        if (!player.getWorld().equals(sourceblock.getWorld())) {
          unfocusBlock();
          return false;
        }
        if (sourceblock.getLocation().distance(player.getLocation()) > preparerange) {
          unfocusBlock();
          return false;
        }
      }

      if (falling) {
        breakBlock();

      } else {
        if (!progressing) {
          return false;
        }

        if (sourceblock.getY() == firstdestination.getBlockY()) {
          settingup = false;
        }

        Vector direction;
        if (settingup) {
          direction = GeneralMethods.getDirection(location, firstdestination).normalize();
        } else {
          direction = GeneralMethods.getDirection(location, destination).normalize();
        }

        location = location.clone().add(direction);

        WaterMethods.removeWaterSpouts(location, player);
        AirMethods.removeAirSpouts(location, player);

        Block block = location.getBlock();
        if (block.getLocation().equals(sourceblock.getLocation())) {
          location = location.clone().add(direction);
          block = location.getBlock();
        }

        if (EarthMethods.isTransparentToEarthbending(player, block) && !block.isLiquid()) {
          GeneralMethods.breakBlock(block);
        } else if (!settingup) {
          breakBlock();
          return false;
        } else {
          location = location.clone().subtract(direction);
          direction = GeneralMethods.getDirection(location, destination).normalize();
          location = location.clone().add(direction);

          WaterMethods.removeWaterSpouts(location, player);
          AirMethods.removeAirSpouts(location, player);
          double radius = FireBlast.AFFECTING_RADIUS;
          Player source = player;
          if (EarthBlast.annihilateBlasts(location, radius, source)
              || WaterManipulation.annihilateBlasts(location, radius, source)
              || FireBlast.annihilateBlasts(location, radius, source)) {
            breakBlock();
            return false;
          }

          Combustion.removeAroundPoint(location, radius);

          Block block2 = location.getBlock();
          if (block2.getLocation().equals(sourceblock.getLocation())) {
            location = location.clone().add(direction);
            block2 = location.getBlock();
          }

          if (EarthMethods.isTransparentToEarthbending(player, block) && !block.isLiquid()) {
            GeneralMethods.breakBlock(block);
          } else {
            breakBlock();
            return false;
          }
        }

        for (Entity entity :
            GeneralMethods.getEntitiesAroundPoint(location, FireBlast.AFFECTING_RADIUS)) {
          if (GeneralMethods.isRegionProtectedFromBuild(
              player, "EarthBlast", entity.getLocation())) {
            continue;
          }
          if (entity instanceof LivingEntity
              && (entity.getEntityId() != player.getEntityId() || hitself)) {

            AirMethods.breakBreathbendingHold(entity);

            Location location = player.getEyeLocation();
            Vector vector = location.getDirection();
            entity.setVelocity(vector.normalize().multiply(pushfactor));
            double damage = this.damage;
            if (EarthMethods.isMetal(sourceblock) && EarthMethods.canMetalbend(player)) {
              damage = EarthMethods.getMetalAugment(this.damage);
            }
            GeneralMethods.damageEntity(player, entity, damage);
            progressing = false;
          }
        }

        if (!progressing) {
          breakBlock();
          return false;
        }

        if (revert) {
          // Methods.addTempEarthBlock(sourceblock, block);
          if (sourceblock.getType() == Material.RED_SANDSTONE) {
            sourceblock.setType(sourcetype);
            if (sourcetype == Material.SAND) {
              sourceblock.setData((byte) 0x1);
            }
          } else {
            sourceblock.setType(sourcetype);
          }
          EarthMethods.moveEarthBlock(sourceblock, block);

          if (block.getType() == Material.SAND) {
            block.setType(Material.SANDSTONE);
          }
          if (block.getType() == Material.GRAVEL) {
            block.setType(Material.STONE);
          }
        } else {
          block.setType(sourceblock.getType());
          sourceblock.setType(Material.AIR);
        }

        sourceblock = block;

        if (location.distance(destination) < 1) {
          if (sourcetype == Material.SAND || sourcetype == Material.GRAVEL) {
            progressing = false;
            if (sourceblock.getType() == Material.RED_SANDSTONE) {
              sourcetype = Material.SAND;
              sourceblock.setType(sourcetype);
              sourceblock.setData((byte) 0x1);
            } else {
              sourceblock.setType(sourcetype);
            }
          }

          falling = true;
          progressing = false;
        }

        return true;
      }
    }

    return false;
  }