453299227
如题 战争服想写一个这样的插件,让玩家更容易产生冲突。
然后如果能做出别的功能就更好了,比如使用某种物品暂时屏蔽自己被指南针发现。
或者让附近的玩家指南针失灵什么的。

我现在就是不太清楚怎么获取离自己最近的玩家,如果很近的距离还可以不停获取周围目标

但是以很远的距离来获取的话就不太现实了。

魔方-magic
我不是很懂,但是你可以去看看指南书的相关API 可以重写一下方法。

个人感觉可以这样
  1. //写个调度器 - 1秒运行一次 当然时间你也可以改
  2. new BukkitRunnable() {
  3.     @Override
  4.     public void run() {
  5.         //附近方圆10个方块的所有实体
  6.         List<Entity> list = player.getNearbyEntities(10.0D, 10.0D, 10.0D);
  7.         //遍历实体
  8.         for (Entity entity : list) {
  9.             //如果是玩家的话
  10.             if(entity instanceof Player){
  11.                 Player who = (Player) entity;
  12.                 TreeMap<Player, Double> map = new TreeMap<>();
  13.                 map.put(who, player.getLocation().distance(player.Location()));
  14.             }
  15.         }
  16.         player.setCompassTarget(map.firstEntry().getValue());
  17.     }
  18. }.runTaskTimer(this, 0L, 20L);
复制代码

或者你如果想全地图的话(不推荐 距离太远可能会炸...)
  1. //写个调度器 - 1秒运行一次 当然时间你也可以改
  2. new BukkitRunnable() {
  3.     @Override
  4.     public void run() {
  5.         //获取玩家当前世界的所有玩家列表
  6.         List<Player> list = player.getWorld().getPlayers();
  7.         //遍历玩家
  8.         for (Player who : list) {
  9.             //忽略掉自己~
  10.             if(!who.getName().equals(player.getName())){
  11.                 TreeMap<Player, Double> map = new TreeMap<>();
  12.                 map.put(who, player.getLocation().distance(player.Location()));
  13.             }
  14.         }
  15.         player.setCompassTarget(map.firstEntry().getValue());
  16.     }
  17. }.runTaskTimer(this, 0L, 20L);
复制代码


如果我的回答有用的话 请给评分哦~

453299227
第二个代码是因为什么代码产生的卡顿
  调用全地图玩家位置应该没什么大量计算啊