我的配置文件中的PlayerJoinEvent错误

问题描述 投票:1回答: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

java bukkit
1个回答
0
投票

Core.getPlugin(null)存在问题。方法getPlugin()来自父类JavaPlugin,您的Core.java扩展了该类,并且您不能将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!"));

并且在Core类中,您将其更改为:

Bukkit.getServer().getPluginManager().registerEvents(new Events(this), this);
© www.soinside.com 2019 - 2024. All rights reserved.