Package com.garbagemule.MobArena.waves.ability

Source Code of com.garbagemule.MobArena.waves.ability.AbilityUtils

package com.garbagemule.MobArena.waves.ability;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import org.bukkit.entity.Creature;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;

import com.garbagemule.MobArena.MAUtils;
import com.garbagemule.MobArena.framework.Arena;

public class AbilityUtils
{
    public static Random random = new Random();
   
    /**
     * Get the target player of the LivingEntity if possible.
     * @param the arena
     * @param entity The entity whose target to get
     * @param random Grab a random player if no target was found
     * @return The target player, or null
     */
    public static LivingEntity getTarget(Arena arena, LivingEntity entity, boolean random) {
        if (entity instanceof Creature) {
            LivingEntity target = ((Creature) entity).getTarget();
           
            if (target instanceof Player && arena.inArena((Player) target)) {
                return target;
            }
        }
       
        if (random) {
            return getRandomPlayer(arena);
        }
        return null;
    }
   
    /**
     * Get a random arena player.
     * @param arena the arena
     * @return a random arena player, or null if none were found
     */
    public static Player getRandomPlayer(Arena arena) {
        List<Player> list = new ArrayList<Player>(arena.getPlayersInArena());
        if (list.isEmpty()) return null;
       
        return list.get(random.nextInt(list.size()));
    }
   
    /**
     * Get a list of nearby players
     * @param arena the arena
     * @param boss the boss
     * @param x the 'radius' in which to grab players
     * @return a list of nearby players
     */
    public static List<Player> getNearbyPlayers(Arena arena, Entity boss, int x) {
        List<Player> result = new ArrayList<Player>();
        for (Entity e : boss.getNearbyEntities(x, x, x)) {
            if (arena.getPlayersInArena().contains(e)) {
                result.add((Player) e);
            }
        }
        return result;
    }
   
    /**
     * Get a list of distant players
     * @param arena the arena
     * @param boss the boss
     * @param x the 'radius' in which to exclude players
     * @return a list of distant players
     */
    public static List<Player> getDistantPlayers(Arena arena, Entity boss, int x) {
        List<Player> result = new ArrayList<Player>();
        for (Player p : arena.getPlayersInArena()) {
            if (MAUtils.distanceSquared(arena.getPlugin(), p, boss.getLocation()) > (double) (x*x)) {
                result.add(p);
            }
        }
        return result;
    }
}
TOP

Related Classes of com.garbagemule.MobArena.waves.ability.AbilityUtils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.