配置文件给我值随意类

我正在做一个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)),和它的工作,但suddently,一些修改后,它停止工作,我改变了我的方法加载一个字符串列表,我不知道为什么,它有点奇怪。

在我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()

public List<String> getTeams() { 

return plugin.config.getStringList("teams.list");

}

loadConfigDefaults()方法只加载某些特定值的配置,与config.addDefault(path, value);config.options().copyDefaults(false);

在这第一种方法中,加载工作正常,它调试Alcoas UHC -> Enabled! There are 1 teams registered.。但是,当我尝试再次装入球队,例如,在这种方法:

} 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));

}

}

它返回我的空单在服务器日志,并在游戏运行此行config.getString("messages.anyTeamCreated"));,这意味着名单空。

我该怎么办?难道我做错了什么?

我使用的服务器git-Spigot-549c1fa-45c8386,实现API版本1.12.2-R0.1-SNAPSHOT,与我的世界1.12.2,但我是

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

回答:

发布者的bn4t要求编程给Arnyminer机会接受答案并公开解决这个问题。

根据Bukkit的API为ConfigurationSectioncreateSection(String path)有这样的描述方法:“以前设置在此路径将被覆盖的任何价值。” 这意味着当您执行该方法时,它将实际清理包含您的团队的部分,因为它将被覆盖,导致没有团队被加载。

你想使用的是getConfigurationSection(String path),这将返回正确的部分,如果它存在。这不会覆盖任何内容。

或者你可以使用它们两者的混合物。如果getConfigurationSection(String path)返回空(如果该部分根本不存在),则使用createSection(String path)创建一个新的。就像这样:

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

而且这不会有任何与你的问题,但我强烈建议加载仅当它是必要的,当服务器启动例如像配置的球队,而不是每你使用它的时间。

以上是 配置文件给我值随意类 的全部内容, 来源链接: utcz.com/qa/266829.html

回到顶部