将具有相同 IP 的在线玩家收集到列表中
Gather online players with same IP to a list
我 运行 我的服务器上有一堆 alt/bot 帐户,我正在尝试创建一个命令来获取所有(在线)玩家的 IP 地址,如果它与我的相匹配,那么它将它们添加到播放器列表以打印给执行命令的人。这是我目前所拥有的。
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (label.equalsIgnoreCase("bots")) {
if (!sender.hasPermission("lbp.bots")) {
sender.sendMessage(ChatColor.RED + "You cannot run this command.");
return true;
}
if (args.length == 0) {
//Player p = (Player) sender;
List < Player > onlineBots = new ArrayList < Player > ();
for (Player players: Bukkit.getOnlinePlayers()) {
if (players.getAddress().getAddress().getHostAddress() == "redacted ip address") {
onlineBots.add(players);
}
}
sender.sendMessage(ChatColor.AQUA + "Luke's Bot List: " + ChatColor.BOLD + "" + onlineBots);
return true;
}
}
return false;
}
我已经将我的 IP 地址插入到“已编辑的 IP 地址”,加入了我的端口转发本地服务器,所以我没有加入主机 IP(仔细检查了我的 IP 是否正确注册了 essentials /whois)和命令 returns 一个空列表。控制台中没有错误。
[1]: https://i.stack.imgur.com/ykTAX.png
有什么想法吗?
你只需要检查你和其他人之间的玩家IP。 Adress/Host 地址之间的值变化很大,特别是在 spigot/bungee.
之间
所以,我建议你使用这样的代码:
if (args.length == 0) {
List<Player> onlineBots = new ArrayList<>();
for (Player players : Bukkit.getOnlinePlayers()) {
if (players.getAddress().getAddress().getHostAddress().equals(sender.getAddress().getAddress().getHostAddress())) {
onlineBots.add(players);
}
}
sender.sendMessage(ChatColor.AQUA + "Luke's Bot List: " + ChatColor.BOLD + "" + onlineBots);
return true;
}
使用此代码成功运行:
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (label.equalsIgnoreCase("bots")) {
if (!sender.hasPermission("lbp.bots")) {
sender.sendMessage(ChatColor.RED + "You cannot run this command.");
return true;
}
if (args.length == 0) {
List < String > onlineBots = new ArrayList < > ();
for (Player players: Bukkit.getOnlinePlayers()) {
if (players.getAddress().getAddress().getHostAddress().equals("insert IP here")) {
onlineBots.add(players.getName());
}
}
sender.sendMessage(ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "Luke's Bot List: " + ChatColor.RESET + "" + ChatColor.AQUA + "" + onlineBots.toString());
return true;
}
}
return false;
}
由于 List<Player>
,列表以 CraftPlayer 格式返回玩家,所以我将列表类型更改为 List<String>
并使用 onlineBots.add(players.getName());
,这似乎已经成功了.
我 运行 我的服务器上有一堆 alt/bot 帐户,我正在尝试创建一个命令来获取所有(在线)玩家的 IP 地址,如果它与我的相匹配,那么它将它们添加到播放器列表以打印给执行命令的人。这是我目前所拥有的。
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (label.equalsIgnoreCase("bots")) {
if (!sender.hasPermission("lbp.bots")) {
sender.sendMessage(ChatColor.RED + "You cannot run this command.");
return true;
}
if (args.length == 0) {
//Player p = (Player) sender;
List < Player > onlineBots = new ArrayList < Player > ();
for (Player players: Bukkit.getOnlinePlayers()) {
if (players.getAddress().getAddress().getHostAddress() == "redacted ip address") {
onlineBots.add(players);
}
}
sender.sendMessage(ChatColor.AQUA + "Luke's Bot List: " + ChatColor.BOLD + "" + onlineBots);
return true;
}
}
return false;
}
我已经将我的 IP 地址插入到“已编辑的 IP 地址”,加入了我的端口转发本地服务器,所以我没有加入主机 IP(仔细检查了我的 IP 是否正确注册了 essentials /whois)和命令 returns 一个空列表。控制台中没有错误。 [1]: https://i.stack.imgur.com/ykTAX.png 有什么想法吗?
你只需要检查你和其他人之间的玩家IP。 Adress/Host 地址之间的值变化很大,特别是在 spigot/bungee.
之间所以,我建议你使用这样的代码:
if (args.length == 0) {
List<Player> onlineBots = new ArrayList<>();
for (Player players : Bukkit.getOnlinePlayers()) {
if (players.getAddress().getAddress().getHostAddress().equals(sender.getAddress().getAddress().getHostAddress())) {
onlineBots.add(players);
}
}
sender.sendMessage(ChatColor.AQUA + "Luke's Bot List: " + ChatColor.BOLD + "" + onlineBots);
return true;
}
使用此代码成功运行:
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (label.equalsIgnoreCase("bots")) {
if (!sender.hasPermission("lbp.bots")) {
sender.sendMessage(ChatColor.RED + "You cannot run this command.");
return true;
}
if (args.length == 0) {
List < String > onlineBots = new ArrayList < > ();
for (Player players: Bukkit.getOnlinePlayers()) {
if (players.getAddress().getAddress().getHostAddress().equals("insert IP here")) {
onlineBots.add(players.getName());
}
}
sender.sendMessage(ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "Luke's Bot List: " + ChatColor.RESET + "" + ChatColor.AQUA + "" + onlineBots.toString());
return true;
}
}
return false;
}
由于 List<Player>
,列表以 CraftPlayer 格式返回玩家,所以我将列表类型更改为 List<String>
并使用 onlineBots.add(players.getName());
,这似乎已经成功了.