@EventHandler永远不会为Bukkit插件运行



我目前正在尝试让 bukkit 插件工作。我每次都遇到这个问题,想知道是否有人知道如何解决它。我已经尝试了几乎所有你可以谷歌的修复程序,所以希望有人可以分享一些光。

所有玩家事件都不起作用。当我用前面的@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)方法的名称大写,您的代码将起作用。启用和启用是两种不同的方法,因为 java 区分大小写,并且由于您尝试覆盖 JavaPlugin 超类中的特定方法,因此您需要以完全相同的方式拼写它们。

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

(我从我的另一个答案中复制了这段文字,有人有一个非常相似的问题,尽管我不认为这个问题算作重复)。

最新更新