Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Не создается файл конфигурации

Тема в разделе "Разработка плагинов для новичков", создана пользователем Очередной_адмЕн, 8 июл 2015.

Статус темы:
Закрыта.
  1. Автор темы
    Очередной_адмЕн

    Очередной_адмЕн Участник Пользователь

    Баллы:
    36
    Вобщем, вот имеем такой код:
    Код:
        File config = new File("/plugins/IslandRegion/config.yml");
        File regionlist = new File("/plugins/IslandRegion/regionlist.yml");
        FileConfiguration rgconfig;
    
        public void onEnable(){
            getServer().getPluginManager().registerEvents(this, this);
            if(!config.exists()){
                getConfig().addDefault("price1", Integer.valueOf(0));
                getConfig().addDefault("price2", Integer.valueOf(10000));
                getConfig().addDefault("price3", Integer.valueOf(20000));
                getConfig().addDefault("price4", Integer.valueOf(100000));
                getConfig().addDefault("regcount", Integer.valueOf(2));
                getConfig().addDefault("donatcount", Integer.valueOf(5));
                getConfig().addDefault("num", Integer.valueOf(0));
                getConfig().addDefault("freelist", new ArrayList<Integer>());
               
                getConfig().options().copyDefaults(true);
                saveConfig();
               
            rgconfig = YamlConfiguration.loadConfiguration(regionlist);  
            }
            if(!regionlist.exists()){
                try {
                    rgconfig.save(regionlist);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    Стандартный конфиг создается без вопросов, а вот regionlist нет. Притом, что данные, которые я в него записываю, доступны во время одной игровой сессии сервера, но, естественно, не сохраняются, если перезапустить сервер, так как файл не создается(как и при запуске плагина, так и при попытке сохранить этот конфиг после добавления/удаления информации в нем уже в другой части кода, всё тщено, rgconfig.save(regionlist) не сохраняет его).

    Как мне быть с нестандартным конфигом, как его создать?
     
  2. Хостинг MineCraft
    <
  3. LomNar

    LomNar Активный участник Пользователь

    Баллы:
    78
    Skype:
    radius981
    Имя в Minecraft:
    LomNar
    Я не про в работе с конфигом, но я делал вот такой объект и наследовался от него:
    Код:
    public class Config {
       
        private FileConfiguration config = null;
        private File configFile = null;
        private String name = null;
       
        public Config (String name) {
            this.name = name;
            reloadConfig();   
        }
    
        public FileConfiguration getConfig() {
            if (configFile == null) {
                reloadConfig();
            }
            return config;
        }
    
        public void reloadConfig() {
            if (configFile == null) {
                configFile = new File(RunGun.get().getDataFolder(), name);
            }
            config = YamlConfiguration.loadConfiguration(configFile);
        }
       
        public void saveConfig() {
            if (config == null || configFile == null) {
                return;
            }
            try {
                getConfig().save(configFile);
            } catch (IOException e) {
                System.out.println(configFile + "[" + e + "]");
            }
        }
    
       
    
    }
     
  4. Автор темы
    Очередной_адмЕн

    Очередной_адмЕн Участник Пользователь

    Баллы:
    36
    Не работает через обьект, как и было, так и осталось, что конфиг у меня лишь мнимый получается, реальный файл не создается. Пробовал ему подсунуть пустой файл с таким же именем - оно все равно туда ничего не сохраняет.
     
  5. LomNar

    LomNar Активный участник Пользователь

    Баллы:
    78
    Skype:
    radius981
    Имя в Minecraft:
    LomNar
    Ты мой способ попробывал?
     
  6. Rider3217

    Rider3217 Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Planet0111
    Ты должен файл для начала создать
    file.createNewFile(); - что то такое.
    А config.yml создается скорее всего из за того что ты в onEnable() прописал saveDefaultConfig();[DOUBLEPOST=1436423921,1436423584][/DOUBLEPOST]
    Не сохраняет потому что у тебя
    Код:
    if(!regionlist.exists()){
                try {
                    rgconfig.save(regionlist);
                } catch (IOException e) {
                    e.printStackTrace();
                }
    }
    а нужно, хотя бы так
    Код:
    if(regionlist.exists()){
                try {
                    rgconfig.save(regionlist);
                } catch (IOException e) {
                    e.printStackTrace();
                }
    }
    Запомни, (!) - это нет, т.е !regionlist.exists() значит что если файла нет то он будет делать это.
     
  7. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Лучше бы так написал - '!' инвертирует значение.
    Т.е. "if regionlist NOT exists : try rgconfig save to regionlist", когда нужно "if regionlist exists : try rgconfig save to regionlist".
    А вообще, FileConfiguration:save(File) создаёт файл, если его нету.
     
  8. Автор темы
    Очередной_адмЕн

    Очередной_адмЕн Участник Пользователь

    Баллы:
    36
    Оказывается нужно было просто путь файла брать через getDataFolder(), а не так, как я это делал. Для стандартного config.yml и так пошло, а вот для нестандартного не пошло. Теперь всё работает.
     
Статус темы:
Закрыта.

Поделиться этой страницей