在Spigot 1.12.2中打印List <player>

时间:2018-01-13 18:18:46

标签: java minecraft bukkit

我是开发插件的小伙伴,但到目前为止,我已经能够解决因为之前的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;

        }

这个问题是它打印出来: [​IMG]

我似乎无法解决这个问题,互联网上似乎没有任何其他帖子可以帮助我。

2 个答案:

答案 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,因此它不是最完美的解决方案。