@EventHandler 从不为 Bukkit 插件 运行

@EventHandler never running for Bukkit Plugin

我目前正在尝试使 bukkit 插件正常工作。我 运行 每次都会遇到这个问题,想知道是否有人知道如何解决它。我已经尝试了几乎所有你能解决的问题 google,所以希望有人能分享一些信息。

None 的玩家事件曾经有效。当我用前面的 @EventHandler 做任何事情时,它只是不 运行。 这是一个例子:

package me.tgb20;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class pluginmain extends JavaPlugin implements Listener{

    public void OnEnable(){
        this.getServer().getPluginManager().registerEvents(this, this);
    }

    public void OnDisable(){
    }

    @EventHandler
    public void OnJoin(PlayerJoinEvent e){
        Player p = e.getPlayer();
        p.sendMessage("Hello");
    }
}

当运行在服务器上安装这个时,它永远不会看到有玩家加入游戏。

如果您不将 onEnable(和 onDisable)方法的名称大写,您的代码将有效。 onEnable 和 OnEnable 是两种不同的方法,因为 java 区分大小写,并且由于您试图覆盖特定方法JavaPlugin super class,您需要以完全相同的方式拼写它们。

据我所知,通常的约定是无论如何您的方法都以小写字母开头。 @Override 注解在捕获这类错误时非常有用,因为它让编译器知道你要重写一个现有的方法,如果那个方法不存在(例如,如果你拼错了名字或添加了不同的参数),它会提醒你(它还会让任何阅读代码的人立即知道你正在覆盖现有方法或实现接口)。

(我从另一个 那里复制了这篇文章,其中有人遇到了非常相似的问题,尽管我认为这个问题不算重复)。