Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Статус
Закрыто для дальнейших ответов.

Очередной_адмЕн

Участник
Пользователь
Баллы
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) не сохраняет его).

Как мне быть с нестандартным конфигом, как его создать?
 
Я не про в работе с конфигом, но я делал вот такой объект и наследовался от него:
Java:
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 + "]");
        }
    }

   

}
 
Не работает через обьект, как и было, так и осталось, что конфиг у меня лишь мнимый получается, реальный файл не создается. Пробовал ему подсунуть пустой файл с таким же именем - оно все равно туда ничего не сохраняет.
 
Не работает через обьект, как и было, так и осталось, что конфиг у меня лишь мнимый получается, реальный файл не создается. Пробовал ему подсунуть пустой файл с таким же именем - оно все равно туда ничего не сохраняет.
Ты мой способ попробывал?
 
Ты должен файл для начала создать
file.createNewFile(); - что то такое.
А config.yml создается скорее всего из за того что ты в onEnable() прописал saveDefaultConfig();
Не работает через обьект, как и было, так и осталось, что конфиг у меня лишь мнимый получается, реальный файл не создается. Пробовал ему подсунуть пустой файл с таким же именем - оно все равно туда ничего не сохраняет.
Не сохраняет потому что у тебя
JavaScript:
if(!regionlist.exists()){
            try {
                rgconfig.save(regionlist);
            } catch (IOException e) {
                e.printStackTrace();
            }
}
а нужно, хотя бы так
JavaScript:
if(regionlist.exists()){
            try {
                rgconfig.save(regionlist);
            } catch (IOException e) {
                e.printStackTrace();
            }
}
Запомни, (!) - это нет, т.е !regionlist.exists() значит что если файла нет то он будет делать это.
 
Запомни, (!) - это нет, т.е !regionlist.exists() значит что если файла нет то он будет делать это.
Лучше бы так написал - '!' инвертирует значение.
Т.е. "if regionlist NOT exists : try rgconfig save to regionlist", когда нужно "if regionlist exists : try rgconfig save to regionlist".
А вообще, FileConfiguration:save(File) создаёт файл, если его нету.
 
Оказывается нужно было просто путь файла брать через getDataFolder(), а не так, как я это делал. Для стандартного config.yml и так пошло, а вот для нестандартного не пошло. Теперь всё работает.
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх