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

Помогите Создается пустой конфиг файл

Тема в разделе "Разработка плагинов для новичков", создана пользователем Lisenochek, 14 авг 2016.

  1. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Народ, создал конфиг файл, в котором по идее должен быть список миров, в котором плагин будет работать (функционал) и лист игроков, но файл создается пустым, что тут не так? Делаю не в главном класе.

    Код:
    package com.realistic.config;
    
    import java.io.File;
    import java.io.IOException;
    
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.configuration.file.YamlConfiguration;
    
    import com.realistic.api.API;
    import com.realistic.list.MinecraftList;
    
    @SuppressWarnings("static-access")
    public class configMain {
       
        private static API plugin;
        private static MinecraftList ml;
       
        public configMain(API plugin) {
            this.plugin=plugin;
        }
       
        public configMain(MinecraftList ml) {
            this.ml=ml;
        }
    
        public static File configFolder = new File("plugins/Realistic", "config.yml");
        public static FileConfiguration config = YamlConfiguration.loadConfiguration(configFolder);
       
        static {
            if(!configFolder.exists()) {
                try {
                    configFolder.createNewFile();
                   
                    ml.worlds.addAll(config.getStringList("worlds"));
                    config.set("worlds", "");
                   
                    if (config.isConfigurationSection("Disease_Cold")) {
                        for (String a : config.getConfigurationSection("Disease_Cold").getKeys(false)) {
                            com.realistic.list.MinecraftList.Disease_Cold.put(a,
                                    config.getBoolean("Disease_Cold." + a));
                            config.set("Disease_Cold." + a, null);
                        }
                    }
    
                    if (config.isConfigurationSection("Disease_Pneumonia")) {
                        for (String a : config.getConfigurationSection("Disease_Pneumonia").getKeys(false)) {
                            com.realistic.list.MinecraftList.Disease_Pneumonia.put(a,
                                    config.getBoolean("Disease_Pneumonia." + a));
                            config.set("Disease_Pneumonia." + a, null);
                        }
                    }
    
                    if (config.isConfigurationSection("bloodingPlayers")) {
                        for (String a : config.getConfigurationSection("bloodingPlayers").getKeys(false)) {
                            com.realistic.list.MinecraftList.bloodingPlayers.put(a,
                                    config.getBoolean("bloodingPlayers." + a));
                            config.set("bloodingPlayers." + a, null);
                        }
                    }
    
                    if (config.isConfigurationSection("Broken_Bones")) {
                        for (String a : config.getConfigurationSection("Broken_Bones").getKeys(false)) {
                            com.realistic.list.MinecraftList.Broken_Bones.put(a, config.getBoolean("Broken_Bones." + a));
                            config.set("Broken_Bones." + a, null);
                        }
                    }
                    try {
                        config.save(configFolder);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    
     
  2. Хостинг MineCraft
    <
  3. fall.us

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

    Баллы:
    76
    Имя в Minecraft:
    fallus
    Научитесь правильно организовывать свой код, и все проблемы уйдут и вряд ли вернуться.
     
  4. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    А что все же с кодом не так? Почему не создает?
     
  5. fall.us

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

    Баллы:
    76
    Имя в Minecraft:
    fallus
    Внимательно изучите код, обращая внимание на каждую строчку. Если так проблему найти не удастся, разделяйте ваш код на отдельные части и проводите тесты. Проблема всплывет быстро.
     
  6. _Rex_

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

    Баллы:
    76
    Имя в Minecraft:
    itzRex
    А нахера нам тогда getConfig() и saveDefaultConfig()?
     
  7. fall.us

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

    Баллы:
    76
    Имя в Minecraft:
    fallus
    DefaultConfig - ни о чем не говорит? Помимо дефолтного конфига бывают еще и кастомные, с которыми такими методами работать нельзя.
     
  8. _Rex_

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

    Баллы:
    76
    Имя в Minecraft:
    itzRex
    В его случае у него дефолтный конфиг.
     
  9. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Я знаю специалиста в области конфигов. @CoolBoy, твой выход.
     
  10. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Ждем специалиста в этой сфере.
     
  11. fall.us

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

    Баллы:
    76
    Имя в Minecraft:
    fallus
    Действительно. Зачем вообще пытаться разобраться в чем-то самостоятельно? Пф.. бред.
    "Я написал код, но он не работает из-за какой-то проблемы. Мне не важно что там такое случилось, дайте мне решение."
     
  12. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Спасибо.
    Была такая же проблема и у меня когда-то. Проблему самостоятельно исправить не мог - размер конфига был огромен и переписывать всё было нельзя.

    После крайне поучительной беседы с @Reality_SC, я усвоил пару вещей.[DOUBLEPOST=1471197795,1471197723][/DOUBLEPOST]Собственно, вся твоя проблема:
    Код:
    public static File configFolder = new File("plugins/Realistic", "config.yml");
        public static FileConfiguration config = YamlConfiguration.loadConfig
    
    Именно в этом.
     
  13. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    > @SuppressWarnings("static-access")
    [​IMG]
     
  14. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    А что не так?
     
  15. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Сам себе могилу роешь, вот что не так.
     
  16. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Я не смогу расписать всё так, как это сделал @Reality_SC.
    Всё что могу сказать - удалите статическую переменную config, и используйте класс.инстанс.getConfig() (Core.getCore().getConfig());
     
  17. fall.us

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

    Баллы:
    76
    Имя в Minecraft:
    fallus
    Ох. Не буду встревать.
     
  18. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Посмотрю...
    Не понимаю.. Он же вроде бы убирает варн
     
  19. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Нормальный код не создаёт варнов. Порой, иногда, даже @Deprecation убивает.
     
  20. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Ладно, разжую как есть.
    Код:
    package com.realistic.config;
    
    import java.io.File;
    import java.io.IOException;
    
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.configuration.file.YamlConfiguration;
    
    import com.realistic.api.API;
    import com.realistic.list.MinecraftList;
    
    @SuppressWarnings("static-access")
    public class configMain {
        //И че? И че? Че ты этим хочешь добиться?
        private static API plugin;
        private static MinecraftList ml;
      
        public configMain(API plugin) {
            this.plugin=plugin;
        }
      
        public configMain(MinecraftList ml) {
            this.ml=ml;
        }
        //А если я захочу переименовать плагин, то че? А?
        public static File configFolder = new File("plugins/Realistic", "config.yml");
        public static FileConfiguration config = YamlConfiguration.loadConfiguration(configFolder);
        //Во оно как. Ну смотрим дальше.
        static {
            if(!configFolder.exists()) {
                try {
                    configFolder.createNewFile();
                  
                    ml.worlds.addAll(config.getStringList("worlds")); //NullPointerException: ml == null
                    config.set("worlds", "");
                  
                    if (config.isConfigurationSection("Disease_Cold")) {
                        for (String a : config.getConfigurationSection("Disease_Cold").getKeys(false)) {
                            // Может быть выброшено исключение NullPointerException, т.к. я не знаю ничего за Disease_Cold
                            com.realistic.list.MinecraftList.Disease_Cold.put(a,
                                    config.getBoolean("Disease_Cold." + a));
                            config.set("Disease_Cold." + a, null);
                        }
                    }
    
                    if (config.isConfigurationSection("Disease_Pneumonia")) {
                        for (String a : config.getConfigurationSection("Disease_Pneumonia").getKeys(false)) {
                            //Тоже самое
                            com.realistic.list.MinecraftList.Disease_Pneumonia.put(a,
                                    config.getBoolean("Disease_Pneumonia." + a));
                            config.set("Disease_Pneumonia." + a, null);
                        }
                    }
    
                    if (config.isConfigurationSection("bloodingPlayers")) {
                        for (String a : config.getConfigurationSection("bloodingPlayers").getKeys(false)) {
                             //Тоже самое
                            com.realistic.list.MinecraftList.bloodingPlayers.put(a,
                                    config.getBoolean("bloodingPlayers." + a));
                            config.set("bloodingPlayers." + a, null);
                        }
                    }
    
                    if (config.isConfigurationSection("Broken_Bones")) {
                        for (String a : config.getConfigurationSection("Broken_Bones").getKeys(false)) {
                            //Тоже самое
                            com.realistic.list.MinecraftList.Broken_Bones.put(a, config.getBoolean("Broken_Bones." + a));
                            config.set("Broken_Bones." + a, null);
                        }
                    }
                    try {
                        config.save(configFolder);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    
    Проще говоря, ты нихрена не знаешь про static. За сим не мучай сфинктер и пиши нормально.
     
  21. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Код:
    public class Configuration
    {
        private Core core;
    
        public FileConfiguration config;
        public File config_file;
    
        public Configuration(Core core)
        {
            this.core = core;
        }
    
        public void initConfiguration()
        {
            this.getConfiguration().options().copyDefaults(true);
            this.saveDefaultConfiguration();
            this.saveConfiguration();
        }
    
        public FileConfiguration getConfiguration()
        {
            if (config == null)
            {
                if (config_file == null)
                {
                    config_file = new File(core.getDataFolder(), "config.yml");
                }
    
                config = YamlConfiguration.loadConfiguration(config_file);
    
                Reader stream = new InputStream(core.getResource("config.yml"));
    
                if (stream != null)
                {
                    YamlConfiguration defaultConfiguration = YamlConfiguration.loadConfiguration(stream);
                    config.setDefaults(defaultConfiguration);
                }
            }
    
            return config;
        }
    
        public void saveConfiguration()
        {
            if (config == null || config_file == null)
            {
                return;
            }
    
            try {
                this.getConfiguration().save(config_file);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        public void saveDefaultConfiguration()
        {
            if (config_file == null)
            {
                config_file = new File(core.getDataFolder(), "config.yml");
            }
    
            if (!config_file.exists())
            {
                core.saveResource("config.yml", false);
            }
        }
    }
    
    Это - универсальный класс, для любой кастомной конфигурации.
     
    Последнее редактирование: 14 авг 2016

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