Помогите Почему main = null ???

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

Todorov26

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Todorov26
Класс Main. метод onEnable():
Код:
@Override
    public void onEnable() {
        logger = getLogger();

        storageManager = new StorageManager(this);
        factionManager = new FactionManager(this);
        pluginManager = getServer().getPluginManager();
        commandManager = new CommandManager(this);

        storageManager.setup();
        factionManager.loadFractions();

        messages = storageManager.getMessages();

        if(messages == null) pluginManager.disablePlugin(this);

        new FractionCommand(this, "fraction");

        pluginManager.registerEvents(new PlayerHandler(this), this);
    }

Метод storageManager.setup + конструктор.


Код:
private Main main;
private File fractionData, localeFolder;

private PlayerConfig playerData;

public StorageManager(Main main){
    this.main = main;
}

    public void setup(){
        fractionData = new File(main.getDataFolder() + File.separator + "fractions");
        localeFolder = new File(main.getDataFolder() + File.separator + "locale");

        File config = new File(main.getDataFolder() + File.separator + "config.yml");

        if(!config.exists()){
            main.getConfig().options().copyDefaults(true);
            main.saveDefaultConfig();
        }

        playerData = new PlayerConfig(main));

        if(playerData.getConfigurationSection("players") == null) {
            playerData.createSection("players");
        }

        if(!fractionData.exists() || fractionData.isFile()){
            fractionData.mkdirs();
        }

        if(!localeFolder.exists()){
            localeFolder.mkdirs();

            main.saveResource("locale/russian.yml", false);
        }
    }

Почему в класс PlayerConfig передается null а не main????
P.s. не учите как писать код, объясните просто что я не так сделал......

unknown.png
 
Покажи-ка PlayerConfig
 
Покажи-ка PlayerConfig
Там просто переопределен метод создания...

Код:
package ru.dest.destfractions.config;

import ru.dest.destfractions.Main;

public class PlayerConfig extends Config{

    private Main main;

    public PlayerConfig(Main main) {
        super(main.getDataFolder(), "playerData");
        this.main = main;
    }

    @Override
    protected void create() {
        main.saveResource(file.getName(), false);
    }


}
 
Скорее всего super() вызывает метод create, а поскольку переменная инициализируется после вызова - она null
 
Вообще, передавать плагин в конструкторах - гиблое дело.
Вот тебе вариант, чтобы получить плагин в классах, обращаешься к главному - main.getInstance();
https://paste.xtrafrancyz.net/jLRwfcXgx2.typescript
 
Вообще, передавать плагин в конструкторах - гиблое дело.
Вот тебе вариант, чтобы получить плагин в классах, обращаешься к главному - main.getInstance();
https://paste.xtrafrancyz.net/jLRwfcXgx2.typescript
Точно! Он ведь и правда вызывается до инициализации... Лааадно. По поводу инстанса, я про без него решил обойтись)) Так обычно юзаю.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх