如何从 config.yml Bukkit 获取字符串

How to get strings from config.yml Bukkit

我有一个这样的配置文件:

mute:
 MrBahur:
  time: 30
  reason: dsa
 SlayZBro:
  time: 30
  reason: dsa

我想取名字 "MrBahur" 和 "SlayZBro" 并在广播上每秒打印一次 我的代码是这样的,但它不起作用为什么

public void runnable() {
    new BukkitRunnable() {  
        @Override
        public void run() {
                for(String x : getConfig().getStringList("mute"))
                    Bukkit.broadcastMessage(x);             
        }
    }.runTaskTimerAsynchronously(this, 0, 20);
}

通常,Whosebug 上的人会鼓励您解释到目前为止您为使代码正常工作所做的尝试,以便将来了解这一点。

无论如何,您遇到的问题是您正在尝试访问数据,就好像它们是一个字符串列表(具体来说,您调用 getStringList(String))。 YAML(写入 .yml 文件的格式)本质上是 JSON 的 readable/simple 版本。您的 .yml 文件将如下所示:

{
    "mute": {
        "MrBahur": {
            "time": 30,
            "reason": "dsa"
        },
        "SlayZBro": {
            "time": 30,
            "reason": "dsa"
        }
    }
}

如您所见,采用这种格式时,您的 .yml 文件在任何地方都不包含字符串列表。为了访问"MrBahur"和"SlayZBro"这两个字符串,需要替换如下代码:

for (String x : getConfig().getStringList("mute"))

改为:

for (String x : getConfig().getConfigurationSection("mute").getKeys(false))

如果您参考方法 getConfigurationSection(String) and getKeys(boolean) 的文档,您将准确设置此方法的作用。

请注意,Whosebug 在 Bukkit 开发人员方面并不是最活跃的。我通常会回答人们提出的任何问题,但我没有看到很多其他人在这个标签上如此活跃。 SpigotMC 开发者论坛更加活跃。