我是开发插件的小伙伴,但到目前为止,我已经能够解决因为之前的Java经验,API,一些教程等等。现在我遇到了问题我似乎无法修复。我正在为我的服务器(/ builders)设置一个命令,该命令显示可以召唤到您所在位置的在线构建器列表,以便为您提供构建建议。我已经建立了一个系统来发送这样的构建器列表(不要问为什么我调用了我的命令变量bobmc):
if (bobmc.getName().equalsIgnoreCase("builders") && sender instanceof Player) {
Player p = (Player) sender;
List<Player> onlineBuilders = new ArrayList<Player>();
for (Player players : Bukkit.getOnlinePlayers()) {
if (PermissionsEx.getPermissionManager().getUser(players).inGroup("builder")) {
onlineBuilders.add(players);
}
}
sender.sendMessage(ChatColor.BLUE + "Builders List: " + ChatColor.BOLD + "" + onlineBuilders);
return true;
}
我似乎无法解决这个问题,互联网上似乎没有任何其他帖子可以帮助我。
答案 0 :(得分:2)
使用String
打印名称。如果您只是在寻找玩家名称,则无需创建List
。要获取名称,您可以使用getName()
。
if (bobmc.getName().equalsIgnoreCase("builders") && sender instanceof Player) {
Player p = (Player) sender;
String onlineBuilders = "";
for (Player players : Bukkit.getOnlinePlayers()) {
if (PermissionsEx.getPermissionManager().getUser(players).inGroup("builder")) {
onlineBuilders += players.getName() + " ";
}
}
sender.sendMessage(ChatColor.BLUE + "Builders List: " + ChatColor.BOLD + "" + onlineBuilders);
return true;
}
答案 1 :(得分:0)
回答我自己的问题可能很奇怪,但我在Spigot论坛上得到了一个简单的答案。我添加了一个String(onlineBuilderList)并使用它来使用构建器列表更新它:
onlineBuilderList = String.join(", ", onlineBuilders.stream().map(Player::getName).collect(Collectors.toList()));
这也允许一个简单的错误消息,因为我在第一时间声明String时可以说String onlineBuilderList = "No builders are currently online";
。但这确实使用了Java 8,因此它不是最完美的解决方案。