如题 战争服想写一个这样的插件,让玩家更容易产生冲突。
然后如果能做出别的功能就更好了,比如使用某种物品暂时屏蔽自己被指南针发现。
或者让附近的玩家指南针失灵什么的。
我现在就是不太清楚怎么获取离自己最近的玩家,如果很近的距离还可以不停获取周围目标
但是以很远的距离来获取的话就不太现实了。
然后如果能做出别的功能就更好了,比如使用某种物品暂时屏蔽自己被指南针发现。
或者让附近的玩家指南针失灵什么的。
我现在就是不太清楚怎么获取离自己最近的玩家,如果很近的距离还可以不停获取周围目标
但是以很远的距离来获取的话就不太现实了。
我不是很懂,但是你可以去看看指南书的相关API 可以重写一下方法。
个人感觉可以这样
复制代码
或者你如果想全地图的话(不推荐 距离太远可能会炸...)
复制代码
如果我的回答有用的话 请给评分哦~
- //写个调度器 - 1秒运行一次 当然时间你也可以改
 
- new BukkitRunnable() {
 
-     @Override
 
-     public void run() {
 
-         //附近方圆10个方块的所有实体
 
-         List<Entity> list = player.getNearbyEntities(10.0D, 10.0D, 10.0D);
 
-         //遍历实体
 
-         for (Entity entity : list) {
 
-             //如果是玩家的话
 
-             if(entity instanceof Player){
 
-                 Player who = (Player) entity;
 
-                 TreeMap<Player, Double> map = new TreeMap<>();
 
-                 map.put(who, player.getLocation().distance(player.Location()));
 
-             }
 
-         }
 
-         player.setCompassTarget(map.firstEntry().getValue());
 
-     }
 
- }.runTaskTimer(this, 0L, 20L);
或者你如果想全地图的话(不推荐 距离太远可能会炸...)
- //写个调度器 - 1秒运行一次 当然时间你也可以改
 
- new BukkitRunnable() {
 
-     @Override
 
-     public void run() {
 
-         //获取玩家当前世界的所有玩家列表
 
-         List<Player> list = player.getWorld().getPlayers();
 
-         //遍历玩家
 
-         for (Player who : list) {
 
-             //忽略掉自己~
 
-             if(!who.getName().equals(player.getName())){
 
-                 TreeMap<Player, Double> map = new TreeMap<>();
 
-                 map.put(who, player.getLocation().distance(player.Location()));
 
-             }
 
-         }
 
-         player.setCompassTarget(map.firstEntry().getValue());
 
-     }
 
- }.runTaskTimer(this, 0L, 20L);
如果我的回答有用的话 请给评分哦~
第二个代码是因为什么代码产生的卡顿
调用全地图玩家位置应该没什么大量计算啊
调用全地图玩家位置应该没什么大量计算啊