Java 配置文件给我的值有点随机

Java 配置文件给我的值有点随机,java,bukkit,Java,Bukkit,我正在制作一个Minecraft Bukkit插件,我的配置文件有问题 当我尝试使用getConfig().getString(path)从配置中获取值时,它工作得非常好。但现在,我试图从我的配置中加载一个团队列表,在YAML中,它们是: teams: list: - ArnyminerZ ArnyminerZ: players: [] prefix: '' suffix: '' dispname: ArnyminerZ

我正在制作一个Minecraft Bukkit插件,我的配置文件有问题

当我尝试使用
getConfig().getString(path)
从配置中获取值时,它工作得非常好。但现在,我试图从我的配置中加载一个团队列表,在YAML中,它们是:

teams:
    list:
      - ArnyminerZ
    ArnyminerZ:
      players: []
      prefix: ''
      suffix: ''
      dispname: ArnyminerZ
      seeinvbuddies: false
      friendlyfire: false
      color: WHITE
起初,我使用了
for(String team:config.createSection(“teams”).getKeys(false))
,但经过一些修改后,它突然停止了工作,我将方法更改为加载字符串列表,我不知道为什么,它的工作方式有点奇怪

在我的
onEnable()
方法中,我有:

public FileConfiguration config;

public static AlcoasUHC plugin;

@Override
public void onEnable() {
    plugin = this;

    config = this.getConfig();
    loadConfigDefaults();

    getLogger().info("Alcoas UHC -> Enabled! There are " + scoreboard.getTeams().size() + " teams registered.");
}
在外部类中,我有方法
getTeams()

它在服务器日志中返回一个空列表,在游戏中它运行这一行
config.getString(“messages.anyTeamCreated”),表示列表为空

我能做什么?我做错什么了吗

我正在使用服务器git-spiget-549c1fa-45c8386
,使用Minecraft 1.12.2实现API版本
1.12.2-R0.1-SNAPSHOT
,并使用

IntelliJ IDEA 2017.3.1 (Community Edition)
Build #IC-173.3942.27, built on December 11, 2017
JRE: 1.8.0_152-release-1024-b8 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0
根据的请求发布,以提供一个接受答案并公开解决此问题的机会

根据Bukkit的API,方法
createSection(字符串路径)
有这样的描述:“以前在此路径上设置的任何值都将被覆盖。” 这意味着,当您执行该方法时,它将实际清理包含您的团队的部分,因为它将被覆盖,从而不会加载任何团队

您要使用的是
getConfigurationSection(字符串路径)
,如果它存在,将返回正确的节。这不会覆盖任何内容

或者你可以使用两者的混合物。如果
getConfigurationSection(字符串路径)
返回null(如果该节根本不存在),请使用
createSection(字符串路径)
创建一个新节。像这样:

ConfigurationSection=getConfigurationSection(“your.path.here”);
if(节==null){
section=createSection(“your.path.here”);
}


此外,这与您的问题无关,但我强烈建议仅在必要时从配置加载团队,例如服务器启动时,而不是每次使用时。

OK。我要尝试一下非常有效的itOK,谢谢。@Squiddie,你能把这个写下来作为答案,这样这个问题就可以标记为已回答和已结束了吗?非常感谢。
} else if (args[0].equalsIgnoreCase("teams")) {
    List<String> teams = scoreboard.getTeams();
    if (teams.size() <= 0) {
        SendMessage.sendMessage(sender, 
     config.getString("messages.anyTeamCreated"));
    } else {
        StringBuilder printingTeams = new StringBuilder();
        for (String team : scoreboard.getTeams()) {
            if (teams.toString().equals("")) {
                printingTeams.append(AndColor.GOLD).append(team);
            } else {
                printingTeams.append(AndColor.GREEN).append(", ").append(AndColor.GOLD).append(team);
            }
        }
        SendMessage.sendMessage(sender, config.getString("messages.availableTeams").replace("%at%", printingTeams));
    }
}
IntelliJ IDEA 2017.3.1 (Community Edition)
Build #IC-173.3942.27, built on December 11, 2017
JRE: 1.8.0_152-release-1024-b8 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0