我有一个这样的配置文件:
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);
}
答案 0 :(得分:2)
通常,StackOverflow上的人员鼓励您解释到目前为止为使代码正常工作而进行的尝试,因此请为将来知道。
无论如何,您遇到的问题是您正试图像访问字符串列表一样访问数据(具体来说,您叫getStringList(String)
)。 YAML(写入.yml文件的格式)本质上是JSON更具可读性/更简单的版本。您的.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)
和getKeys(boolean)
的文档,则将确切设置此方法的工作状态。
请注意,在Bukkit开发人员方面,StackOverflow并不是最活跃的。我通常会回答人们提出的任何问题,但在这个标签上我看不到其他很多活跃的人。 SpigotMC开发人员论坛往往更活跃。