Guest User

Untitled

a guest
Jan 14th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. public LivingEntity getTargetedEntity(Player player, int range, boolean targetPlayers, boolean targetNonPlayers) {
  2. // get nearby living entities, filtered by player targeting options
  3. List<Entity> ne = player.getNearbyEntities(range, range, range);
  4. ArrayList<LivingEntity> entities = new ArrayList<LivingEntity>();
  5. for (Entity e : ne) {
  6. if (e instanceof LivingEntity) {
  7. if ((targetPlayers || !(e instanceof Player)) && (targetNonPlayers || e instanceof Player)) {
  8. entities.add((LivingEntity)e);
  9. }
  10. }
  11. }
  12.  
  13. // find target
  14. LivingEntity target = null;
  15. BlockIterator bi = new BlockIterator(player, range);
  16. Block b;
  17. Location l;
  18. int bx, by, bz;
  19. double ex, ey, ez;
  20. // loop through player's line of sight
  21. while (bi.hasNext()) {
  22. b = bi.next();
  23. bx = b.getX();
  24. by = b.getY();
  25. bz = b.getZ();
  26. // check for entities near this block in the line of sight
  27. for (LivingEntity e : entities) {
  28. l = e.getLocation();
  29. ex = l.getX();
  30. ey = l.getY();
  31. ez = l.getZ();
  32. if ((bx-.75 <= ex && ex <= bx+1.75) && (bz-.75 <= ez && ez <= bz+1.75) && (by-1 <= ey && ey <= by+2.5)) {
  33. // entity is close enough, set target and stop
  34. target = e;
  35. break;
  36. }
  37. }
  38. }
  39.  
  40.  
  41. return target;
  42. }
Add Comment
Please, Sign In to add comment