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

时间:2020-08-16 18:40:37

标签: java maven jar minecraft

重新加载插件时出现错误“插件不能为空”。其实我试图自己解决这个“臭虫”,但是我认为那没有用...希望您能帮助我...

以下是一些相关的东西:

错误消息

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

编辑:如果我在启动服务器后重新加载了插件,它将以某种方式起作用。

1 个答案:

答案 0 :(得分:0)

请尝试使用Main.getPlugin(Main.class),而不要使用JavaPlugin.getPlugin(Main.class)。另外,为什么还要创建Main类的实例?您在Bukkit插件中不需要单例(实际上,它不是真正的单例,因为您无法将构造函数的访问权限设置为private)。另外,尝试将插件的Main类命名为插件名称,例如:插件名称为AchievementsX,然后命名主类AchievementsX,通过这种命名,您可以轻松地将插件实现为其他插件。