Помогите Плагин сбрасывает данные в списке конфига

Artem99z

Активный участник
Пользователь
Баллы
88
Имя в Minecraft
ReDcTiOn
Ребят, помогите.
Есть в конфигурации список:
Код:
regionNames:
   spawn: '&4Спавн'
   exit: '&6Выход'

Конфиг у меня устроен таким образом:
Код:
package ru.ReDcTiOn.RegionName;

import org.bukkit.configuration.file.FileConfiguration;
import ru.ReDcTiOn.RegionName.Main;

import java.util.List;


public class Config {

    static String region;
    static String not_region;
    static Integer mode;
    //static String lang;
    static boolean hideNotRegion;
    static List<String> blackList;
    static List<String> regionNames;

    private static FileConfiguration config;

    public static void save() {
        config.set("region", region);
        config.set("not_region", not_region);
        config.set("hideNotRegion",hideNotRegion);
        config.set("mode",mode);
        //config.set("lang",lang);
        config.set("blackList",blackList);
        config.set("regionNames",regionNames);

        Main.getPlugin().saveConfig();
    }

    public static void load() {

        region = config.getString("region").replace('&', '\u00a7');
        not_region = config.getString("not_region").replace('&', '\u00a7');
        hideNotRegion = config.getBoolean("hideNotRegion");
        mode = config.getInt("mode");
        //lang = config.getString("lang");
        blackList = config.getStringList("blackList");
        regionNames = config.getStringList("regionNames");
    }

    static {
        config = Main.getPlugin().getConfig();
    }

}

Вызывается в onEnable:
Код:
Config.load();
Config.save();

Так вот, после запуска плагина данный список сбрасывается до такого значения:
Код:
regionNames: []

Как сделать так, чтобы значения списка не сбрасывались?
 
regionNames: spawn: '&4Спавн' exit: '&6Выход'
config.set("regionNames",regionNames);
Здесь нет List.

Здесь должен быть список такого вида:
Код:
regionNames:
- 'строка1'
- 'строка2'

При запуске плагина у него не получается прочесть эту секцию, создает пустой List, а затем сохраняет его в конфиг, как описано здесь:
Config.load(); Config.save();


Как сделать так, чтобы значения списка не сбрасывались?
Это не список получается, тебе нужно циклом создать секции примерно так:
Код:
config.set("regionNames." + data, "значение");
И таким же образом десериализовать обратно.
 
Здесь нет List.

Здесь должен быть список такого вида:
Код:
regionNames:
- 'строка1'
- 'строка2'

При запуске плагина у него не получается прочесть эту секцию, создает пустой List, а затем сохраняет его в конфиг, как описано здесь:




Это не список получается, тебе нужно циклом создать секции примерно так:
Код:
config.set("regionNames." + data, "значение");
И таким же образом десериализовать обратно.
У меня это делается в другом классе
Код:
    public static String getRegion(Location l)
    {   
        RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer();
        RegionQuery query = container.createQuery();
        ApplicableRegionSet set = query.getApplicableRegions(BukkitAdapter.adapt(l));
        List<String> names = new ArrayList<>();

        for (ProtectedRegion pr : set.getRegions()) {

            String name = ChatColor.translateAlternateColorCodes('&', Main.config.getString("regionNames." + pr.getId(), pr.getId()));
            names.add(name);
            //p.sendMessage("name: " + name + "names: " + names);

            
            //return pr.getId();
        }
        return names.isEmpty() ? Config.not_region : StringUtils.join(names, ", ");
 
Назад
Верх