ConfigurationSection * Методы set изменили значение так, как вы хотите, однако при сохранении конфигурации будут отменены все текущие значения. Это означает, что вы должны редактировать / указывать каждое отдельное значение, если хотите сохранить их, иначе они будут потеряны.
Чтобы вместо этого нужно было редактировать только одно значение, я использую массив.
Массив для хранения временных данных, вам нужен объект, содержащий String name
и int votes
, я называю этот объект VoteData
.
Когда сервер запустится, загрузите config и заполните массив результатом. Это позволяет нам удалять объекты или изменять массив во время выполнения, не касаясь файла конфигурации, что повышает производительность.
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();
}
}
Теперь, когда вам нужно использовать данные в плагине, используйте массив вместо конфига. А когда вы хотите что-то удалить, просто удалите из массива.