Создать и редактировать список в конфиге

  • Автор темы Автор темы ToBlEzZ
  • Дата начала Дата начала

ToBlEzZ

Активный участник
Пользователь
Баллы
76
Всем привет!
Нужно создать новый ключ в конфиге inviteList, и хочу чтобы он был массивом или списком. Как это можно сделать? И как его потом расширять или убавлять?
Примерно:
inviteList: Doc, Jack, Mac, Tac
 
Код:
    private ConfigurationSection configuration;

    public void setInviteList(List<String> inviteList) {
        configuration.set("inviteList", inviteList);

        // todo save?
    }

    public List<String> getInviteList() {
        return configuration.getStringList("inviteList");
    }

    public void addInvite(String entry) {
        List<String> list = getInviteList();
        list.add(entry);
        
        setInviteList(list);
    }

    public void removeInvite(String entry) {
        List<String> list = getInviteList();
        list.remove(entry);

        setInviteList(list);
    }
 
И это тоже. Но сейчас это используется, чтобы добавить и удалить элемент из списка.
У него слишком базовые вопросы и он не понимает даже что ему отправили. Тут только послать учить джаву.
 
Подождите, как вижу это код для отдельного файла, который будет содержать список. А мне нужно, чтобы уже в созданном файле один из ключей был списком.
Player:
X: 20
Y: 30
Z: 40
Private: false
inviteList: Jack, Mac, Doc

Как в таком случае получить iviteList?
У меня есть метод создания и сохранения целого файла, в случае изменения одного из параметров. Только вот пытаюсь понять как сделать ключ списком.


public static void extendInviteList(FileConfiguration homes, String Player, String newInvite) {
homes.set(Player + ".inviteList" ???"
}
Как такой метод правильно сделать?
 
Последнее редактирование:
У него слишком базовые вопросы и он не понимает даже что ему отправили. Тут только послать учить джаву.
Джаву я и так изучаю. Только действительно хромают списки, предпочитаю массивы.
Если не выходить за рамки темы, то я знаю как работать с конфигами, конкретнее как получать и заменять значение (get, set). Но понимаю, что список редактируется иначе, отсюда я и создал эту тему.
 
Подождите, как вижу это код для отдельного файла, который будет содержать список. А мне нужно, чтобы уже в созданном файле один из ключей был списком.
Player:
X: 20
Y: 30
Z: 40
Private: false
inviteList: Jack, Mac, Doc

Как в таком случае получить iviteList?
У меня есть метод создания и сохранения целого файла, в случае изменения одного из параметров. Только вот пытаюсь понять как сделать ключ списком.


public static void extendInviteList(FileConfiguration homes, String Player, ??? inviteList) {
homes.set(Player + ".inviteList" ???"
}
Как такой метод правильно сделать?
Код:
// FileConfiguration config;
// List<?> inviteList;
config.set("inviteList", inviteList);
config.save()
// Установит в конфиге inviteList на массив. Чтобы обновить просто установи "inviteList" тем же способом но с другим массивом
Ты просто переустановишь значение переменной из конфига на новый список, с которым предварительно произвёл махинации. Сам список удобно хранить можешь в List<String>, String - тип значений в списке. Чтобы добавить думаю метод ясен(add).
 
Подождите, как вижу это код для отдельного файла, который будет содержать список. А мне нужно, чтобы уже в созданном файле один из ключей был списком.
Player:
X: 20
Y: 30
Z: 40
Private: false
inviteList: Jack, Mac, Doc

Как в таком случае получить iviteList?
У меня есть метод создания и сохранения целого файла, в случае изменения одного из параметров. Только вот пытаюсь понять как сделать ключ списком.


public static void extendInviteList(FileConfiguration homes, String Player, String newInvite) {
homes.set(Player + ".inviteList" ???"
}
Как такой метод правильно сделать?
Списки в yml идут не через запятые, учи мат часть.
 
Подождите, как вижу это код для отдельного файла, который будет содержать список. А мне нужно, чтобы уже в созданном файле один из ключей был списком.
Player:
X: 20
Y: 30
Z: 40
Private: false
inviteList: Jack, Mac, Doc

Как в таком случае получить iviteList?
У меня есть метод создания и сохранения целого файла, в случае изменения одного из параметров. Только вот пытаюсь понять как сделать ключ списком.


public static void extendInviteList(FileConfiguration homes, String Player, String newInvite) {
homes.set(Player + ".inviteList" ???"
}
Как такой метод правильно сделать?
Если руководствоваться вашем стилем то будет примерно вот так
Код:
    public ArrayList<String> get(Player p){
        ArrayList<String> list = new ArrayList<String>();
        String inviteList = getConfig().getString("players."+p.getName()+".inviteList");
        if(inviteList!=null){
            for(String invite : inviteList.split(",")){
                list.add(invite);
            }
        }
        return list;
    }


    public void set(Player p, String newInvite){
        ArrayList<String> list = get(p);
        String result = String.join(",", list.add(newInvite));
        getConfig().set("players."+p.getName()+".inviteList", result);
        saveConfig();
    }
На работоспособность не проверял
 
Если руководствоваться вашем стилем то будет примерно вот так
Код:
    public ArrayList<String> get(Player p){
        ArrayList<String> list = new ArrayList<String>();
        String inviteList = getConfig().getString("players."+p.getName()+".inviteList");
        if(inviteList!=null){
            for(String invite : inviteList.split(",")){
                list.add(invite);
            }
        }
        return list;
    }


    public void set(Player p, String newInvite){
        ArrayList<String> list = get(p);
        String result = String.join(",", list.add(newInvite));
        getConfig().set("players."+p.getName()+".inviteList", result);
        saveConfig();
    }
На работоспособность не проверял
String не может быть null
 
Код:
    private ConfigurationSection configuration;

    public void setInviteList(List<String> inviteList) {
        configuration.set("inviteList", inviteList);

        // todo save?
    }

    public List<String> getInviteList() {
        return configuration.getStringList("inviteList");
    }

    public void addInvite(String entry) {
        List<String> list = getInviteList();
        list.add(entry);
       
        setInviteList(list);
    }

    public void removeInvite(String entry) {
        List<String> list = getInviteList();
        list.remove(entry);

        setInviteList(list);
    }
Большое спасибо! Ваши методы мне очень помогли
 
Назад
Верх