1

每次我加入通过配置文件连接的加入时都会收到错误消息。

主类:


    public Core plugin;

    @Override
    public void onEnable() {

        Bukkit.getServer().getPluginManager().registerEvents(new Events(), this);
        new DiscordCommand(this);
        new TeamspeakCommand(this);
        new cHubCommand(this);
        new PingCommand(this);
        new HelpCommand(this);
        new WebsiteCommand(this);
        new BuyCommand(this);
        new MenuCommand(this);

        getConfig().options().copyDefaults(true);
        saveConfig();
    }

活动类:


    @EventHandler
    public void onPlayerJoin(PlayerJoinEvent event) {

        Player player = event.getPlayer();

        event.setJoinMessage(null);
        event.getPlayer().sendMessage(Core.getPlugin(null).getConfig().getString("joinmessage_1.", "§fWelcome to the official §acHub§f network!"));
        event.getPlayer().sendMessage(Core.getPlugin(null).getConfig().getString("joinmessage_1.", "§fWelcome to the official §acHub§f network!"));
        event.getPlayer().sendMessage(Core.getPlugin(null).getConfig().getString("joinmessage_2.", "§fIf you need any assistance, type §a/help"));
        event.getPlayer().sendMessage(Core.getPlugin(null).getConfig().getString("joinmessage_line_2.", "§7§m--------------------------------------"));

控制台错误: https ://pastebin.com/CDwK3UFj

4

1 回答 1

0

问题出在Core.getPlugin(null). 方法来自您的Core.javagetPlugin()扩展的父类 JavaPlugin,您不能将 null 作为参数传递。

如果您想引用您的插件对象(Core.java),您可以将其更改为Core.getPlugin(Core.class)但更专业的是在构造函数中传递对此类的引用。

因此,您的 Events.class 的开头将如下所示:

Core plugin;

public Events(Core plugin){
    this.plugin = plugin;
}

然后你可以简单地做:

event.getPlayer().sendMessage(plugin.getConfig().getString("joinmessage_1.", "§fWelcome to the official §acHub§f network!"));

在核心课程中,您将其更改为:

Bukkit.getServer().getPluginManager().registerEvents(new Events(this), this);
于 2020-01-02T11:46:11.090 回答