插件不能为空错误 - Spigot 编码

Plugin cannot be null Error - Spigot Coding

我在重新加载我的插件时出现错误 'Plugin cannot be null'。事实上,我试图自己解决这个 'Bug',但我认为这没有用...希望你能帮助我...

这里有一些相关的东西:

错误信息:

Could not load 'plugins/OwnChallenges-1.0.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: java.lang.IllegalArgumentException: Plugin cannot be null
...
Caused by: java.lang.IllegalArgumentException: Plugin cannot be null
...
at com.fabo0814.ownchallenges.utils.Utils.delayIt(Utils.java:9) ~[?:?]

Main.class:

    // ... Some stuff ...

    public static Main main;
    PluginManager pm = Bukkit.getPluginManager();
    Position pos = new Position();

    @Override
    public void onEnable() {

        main = this;
        SQL.connect();

        listeners();
        commands();
        tab();

        new Config();
        new RanksConfig();

        doWorldStuff();

    }

    // ... Some Stuff ...

Utils.class:

    // ... Some Stuff ...
    
    public static void delayIt(Runnable run, int delay) {
        Bukkit.getScheduler().scheduleSyncDelayedTask(Main.getPlugin(Main.class), run, delay);
    }

    // ... Some Stuff ...

感谢您的帮助:D

编辑:如果我在启动服务器后重新加载插件,它会以某种方式运行。

尝试使用 JavaPlugin.getPlugin(Main.class) 而不是 Main.getPlugin(Main.class)。另外,为什么要创建 Main class 的实例?在 Bukkit 插件中你不需要单例(事实上它不是一个真正的单例,因为你不能将你的构造函数的访问权限设置为私有)。另外,尝试将插件的 Main class 命名为您的插件名称,例如:您的插件名称为 AchievementsX,然后将您的 main class AchievementsX 命名,使用此命名您可以轻松地将您的插件实现到其他插件。