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

Lisenochek

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

JavaScript:
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();
            }
        }
    }
}
 
Научитесь правильно организовывать свой код, и все проблемы уйдут и вряд ли вернуться.
 
А что все же с кодом не так? Почему не создает?
Внимательно изучите код, обращая внимание на каждую строчку. Если так проблему найти не удастся, разделяйте ваш код на отдельные части и проводите тесты. Проблема всплывет быстро.
 
А нахера нам тогда getConfig() и saveDefaultConfig()?
 
А нахера нам тогда getConfig() и saveDefaultConfig()?
DefaultConfig - ни о чем не говорит? Помимо дефолтного конфига бывают еще и кастомные, с которыми такими методами работать нельзя.
 
DefaultConfig - ни о чем не говорит? Помимо дефолтного конфига бывают еще и кастомные, с которыми такими методами работать нельзя.
В его случае у него дефолтный конфиг.
 
Я знаю специалиста в области конфигов. @CoolBoy, твой выход.
 
Ждем специалиста в этой сфере.
 
Ждем специалиста в этой сфере.
Действительно. Зачем вообще пытаться разобраться в чем-то самостоятельно? Пф.. бред.
"Я написал код, но он не работает из-за какой-то проблемы. Мне не важно что там такое случилось, дайте мне решение."
 
Я знаю специалиста в области конфигов. @CoolBoy, твой выход.
Спасибо.
Народ, создал конфиг файл, в котором по идее должен быть список миров, в котором плагин будет работать (функционал) и лист игроков, но файл создается пустым, что тут не так? Делаю не в главном класе.

JavaScript:
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();
            }
        }
    }
}
Была такая же проблема и у меня когда-то. Проблему самостоятельно исправить не мог - размер конфига был огромен и переписывать всё было нельзя.

После крайне поучительной беседы с @Reality_SC, я усвоил пару вещей.
Собственно, вся твоя проблема:
Java:
public static File configFolder = new File("plugins/Realistic", "config.yml");
    public static FileConfiguration config = YamlConfiguration.loadConfig
Именно в этом.
 
> @SuppressWarnings("static-access")
gjn81wvxqsq6yzcwubok.png
 
Я не смогу расписать всё так, как это сделал @Reality_SC.
Всё что могу сказать - удалите статическую переменную config, и используйте класс.инстанс.getConfig() (Core.getCore().getConfig());
 
Ох. Не буду встревать.
 
Спасибо.

Была такая же проблема и у меня когда-то. Проблему самостоятельно исправить не мог - размер конфига был огромен и переписывать всё было нельзя.

После крайне поучительной беседы с @Reality_SC, я усвоил пару вещей.
Собственно, вся твоя проблема:
Java:
public static File configFolder = new File("plugins/Realistic", "config.yml");
    public static FileConfiguration config = YamlConfiguration.loadConfig
Именно в этом.
Посмотрю...
Сам себе могилу роешь, вот что не так.
Не понимаю.. Он же вроде бы убирает варн
 
Ладно, разжую как есть.
Java:
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. За сим не мучай сфинктер и пиши нормально.
 
Java:
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);
        }
    }
}
Это - универсальный класс, для любой кастомной конфигурации.
 
Последнее редактирование:
Назад
Верх