2 回答
TA贡献1780条经验 获得超1个赞
ConfigurationSection的 set 方法根据您的需要更改了值,但是在保存配置时,它将覆盖所有当前值。这意味着如果要保留它们,则必须编辑/指定每个值,否则它们将丢失。为了只需要编辑一个值,我使用了一个数组。
该阵列是有保留的临时数据,你似乎需要一个物体保持String name和int votes,我调用这个对象VoteData。
当服务器启动时,加载配置并用结果填充数组。这允许我们在运行时删除对象或修改数组,而无需触及配置文件,从而提高性能。
private void loadConfig() {
voteDataArray = new ArrayList<VoteData>();
YamlConfiguration config = YamlConfiguration.loadConfiguration(yourConfigFile);
ConfigurableSection section = config.getConfigurableSection("ThingsYouCanVoteFor");
if(section == null) {
Bukkit.getLogger().warn("ConfigSection ThingsYouCanVoteFor doesn't exist");
return;
}
for(String num : section.getKeys(false)) {
String name = section.getString(num + ".name");
int votes = section.getDouble(num + ".votes");
voteDataArray.add(new VoteData(name, votes));
}
}
当服务器关闭或任何时候你想要的时候,通过循环config.getKeys(false)并将节点设置为你的数据值来保存包含数组内容的配置。
private void saveConfig() {
YamlConfiguration config = new YamlConfiguration();
int num = 1;
for(VoteData data : voteDataArray) {
config.set("ThingsYouCanVoteFor." + num + ".name", data.getName());
config.set("ThingsYouCanVoteFor." + num + ".votes", data.getVotes());
num++;
}
try {
config.save(yourConfigFile);
} catch (IOException e) {
e.printStackTrace();
}
}
现在当你需要使用插件中的数据时,使用数组而不是配置。当您想删除某些内容时,只需从数组中删除即可。
添加回答
举报