Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public LivingEntity getTargetedEntity(Player player, int range, boolean targetPlayers, boolean targetNonPlayers) {
- // get nearby living entities, filtered by player targeting options
- List<Entity> ne = player.getNearbyEntities(range, range, range);
- ArrayList<LivingEntity> entities = new ArrayList<LivingEntity>();
- for (Entity e : ne) {
- if (e instanceof LivingEntity) {
- if ((targetPlayers || !(e instanceof Player)) && (targetNonPlayers || e instanceof Player)) {
- entities.add((LivingEntity)e);
- }
- }
- }
- // find target
- LivingEntity target = null;
- BlockIterator bi = new BlockIterator(player, range);
- Block b;
- Location l;
- int bx, by, bz;
- double ex, ey, ez;
- // loop through player's line of sight
- while (bi.hasNext()) {
- b = bi.next();
- bx = b.getX();
- by = b.getY();
- bz = b.getZ();
- // check for entities near this block in the line of sight
- for (LivingEntity e : entities) {
- l = e.getLocation();
- ex = l.getX();
- ey = l.getY();
- ez = l.getZ();
- if ((bx-.75 <= ex && ex <= bx+1.75) && (bz-.75 <= ez && ez <= bz+1.75) && (by-1 <= ey && ey <= by+2.5)) {
- // entity is close enough, set target and stop
- target = e;
- break;
- }
- }
- }
- return target;
- }
Add Comment
Please, Sign In to add comment