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

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

Discussion in 'Разработка плагинов для новичков' started by Lisenochek, Aug 14, 2016.

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

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

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

    Code:
    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 Активный участник Пользователь

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Dereku Старожил

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

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

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

    Dereku Старожил

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

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

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

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

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

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

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

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

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

    Dereku Старожил

    Trophy Points:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Ладно, разжую как есть.
    Code:
    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 Активный участник Пользователь

    Trophy Points:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Code:
    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);
            }
        }
    }
    
    Это - универсальный класс, для любой кастомной конфигурации.
     
    Last edited: Aug 14, 2016

Share This Page