2

我对编码很陌生。我已经尝试了一切。我可以考虑尝试获取存储在我的配置中的标题列表,以作为消息发送给播放器,而我尝试过的任何方法都不起作用。

引用的当前配置设置

players:
    player1name:
        - title1
        - title2
        - title3
    player2name:
        - title1
        - title3

调用发送消息代码行

    if (args.length == 2) {
                        try {
                        // insert code here to display titles list available
                        // to
                        // player
                        Player p = Bukkit.getPlayer(args[1]);
                        if (p == null) {
                            sender.sendMessage("Could Not Find Player!!");
                            return true;
                        }
                        Bukkit.broadcastMessage("I got to this point pre- list");
                        List<String> s = this.Ach.getConfig()
                                .getStringList("players." + p + "titles");

                        StringBuilder message = new StringBuilder();
                        Bukkit.broadcastMessage("I got to this point post message");
                        for (String players : s) {

                            message.append(players).append(" - ");
                        Bukkit.broadcastMessage("I got to this point post for");

                        sender.sendMessage(message.toString()); // (message.toString());
                        } 

                        // Set<String> keys =
                        // this.Ach.getConfig().getConfigurationSection("player."
                        // + p + "titles").getKeys(false);
                        // sender.sendMessage(keys + " - ");
                        Bukkit.broadcastMessage("I got to this point pre return");
                        return true;}
                        catch (Exception e) {
                            e.printStackTrace();
                        }

'Ach' 是前面定义的,以引用我在其中定义 get config 的主类。

我期望输出player1nameargs[1]title1 - title2 - title3 -

使用有效的玩家名称而不是返回玩家拥有的头衔,我被发送到聊天的只是 [] -

任何帮助将不胜感激。

4

2 回答 2

0

在发送消息之前,您需要遍历所有字符串并将它们添加到变量中 - 类似于(未经测试)

StringBuilder message = new StringBuilder();
for (String player : s)
   message.append(player).append(" - ");
sender.sendMessage(message.toString());
于 2013-04-16T10:38:45.727 回答
0

Bukkit API 还为您提供了使用 YamlConfiguration 类的选项,它是 getStringList() 方法,您可以在其中将字符串路径发送到您想要的列表,然后它会向您发送列表。如果您要将它用于该文件,则需要类似的行

List<String> titlesList = this.Ach.getStringList("players." + sender.getName());

对于那个特定的输出类型,我会使用

sender.sendMessage(titlesList.toString().replace("[", "").replace("]", "").replace(", ", " - ");

你有那个输出的原因是因为你有(ASet + " - "). ASet 读取为字符串时的样子[title1, title2],而您的集合为空。此外,在它旁边有破折号根本不会纠正格式。因此我的替换方法。去掉方括号、逗号和空格,用你真正想要的东西。

于 2014-03-24T06:10:06.337 回答