单向或反向平

时间:2016-04-04 12:34:56

标签: java bukkit

我必须知道对于反应测试的玩家的确切ping。 我使用处理程序:

public int pingPlayer(Player p) {
    try {
        String bukkitversion = Bukkit.getServer().getClass().getPackage().getName().substring(23);
        Class<?> craftPlayer = Class.forName("org.bukkit.craftbukkit." + bukkitversion + ".entity.CraftPlayer");
        Object handle = craftPlayer.getMethod("getHandle").invoke(p);
        Integer ping = (Integer) handle.getClass().getDeclaredField("ping").get(handle);
        return ping.intValue();
    } catch (ClassNotFoundException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException | NoSuchFieldException e) {
        return -1;
    }
}

但现在我不知道ping是否是单向的[Server - &gt;播放器]或两种方式[服务器 - &gt;播放器 - &gt;服务器

有人知道,这究竟是如何运作的?

1 个答案:

答案 0 :(得分:0)

如果您正在寻找反应测试,请尝试将当前时间存储在System.getCurrentTimeMillis();中。然后,在随机的一段时间后发生一些事情(很可能在Runnable中以防止冻结服务器),并且当他们执行操作时,使用相同的方法来获得不同的方法。减去这两个数字,除以1000得到时间差(以秒为单位)。

示例:

// stuff before reaction test Long timeStart = System.getCurrentTimeMillis(); // first time // runnable, action, etc. (what you are testing the reaction time for) Long timeEnd = System.getCurrentTimeMillis(); // second time Long timeDifference = timeEnd - timeStart; // difference in time Integer timeInSeconds = timeDifference / 1000; // difference in time (in seconds) player.sendMessage("Your time was " + timeInSeconds.toString() + " seconds!"); // send message to player