import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.util.Vector; import com.garbagemule.MobArena.framework.Arena; import com.garbagemule.MobArena.waves.MABoss; import com.garbagemule.MobArena.waves.ability.*; @AbilityInfo( name = "Pull Nearby", aliases = {"pullnearby"} ) public class PullNearby implements Ability { /** * How close players must be to be affected by the ability. */ private final int RADIUS = 5; @Override public void execute(Arena arena, MABoss boss) { Location bLoc = boss.getEntity().getLocation(); for (Player p : AbilityUtils.getNearbyPlayers(arena, boss.getEntity(), RADIUS)) { Location loc = p.getLocation(); Vector v = new Vector(bLoc.getX() - loc.getX(), 0, bLoc.getZ() - loc.getZ()); double a = Math.abs(bLoc.getX() - loc.getX()); double b = Math.abs(bLoc.getZ() - loc.getZ()); double c = Math.sqrt((a*a + b*b)); p.setVelocity(v.normalize().multiply(c*0.3).setY(0.8)); } } }