检查我的世界服务器是否启用了白名单

时间:2019-08-07 00:50:52

标签: java networking minecraft

我知道可以获取有关远程Minecraft服务器的一些信息,例如:

  • 当前玩家/最大玩家
  • MOTD
  • 版本

但是可以在任何服务器上获取白名单的状态吗?

  Socket socket = new Socket();
  socket.connect(new InetSocketAddress(ip, port), 1 * 1000);

  DataOutputStream out = new DataOutputStream(socket.getOutputStream());
  DataInputStream in = new DataInputStream(socket.getInputStream());

  out.write(0xFE);

  StringBuilder str = new StringBuilder();

  int b;
  while ((b = in .read()) != -1) {
   if (b != 0 && b > 16 && b != 255 && b != 23 && b != 24) {
    str.append((char) b);
   }
  }

  String[] data = str.toString().split("§");
  String motd = data[0];
  int onlinePlayers = Integer.valueOf(data[1]);
  int maxPlayers = Integer.valueOf(data[2]);

我知道可以通过加入服务器并检查用户是否被踢出“您未在此服务器上列入白名单”来实现。但这会花费太长时间。

那么实际上是否可以通过不加入服务器来检查服务器是否启用了白名单?

1 个答案:

答案 0 :(得分:0)

您无需对服务器进行硬编码即可获得列入白名单的播放器。只需使用包含白名单方法的Bukkit API。

要从文件中获取白名单玩家:

Bukkit.getServer().getWhitelistedPlayers();

要检查是否启用了白名单:

Bukkit.getServer().hasWhitelist();