@EventHandler永远不会运行Bukkit插件

时间:2016-04-20 16:48:11

标签: override minecraft bukkit eventhandler

我目前正在尝试使用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");
    }
}

在服务器上运行时,它永远不会看到玩家加入游戏。

1 个答案:

答案 0 :(得分:1)

如果您没有大写onEnable(和onDisable)方法的名称,那么您的代码将会起作用。 on 启用和开启启用两种不同的方法,因为java区分大小写,并且由于您尝试覆盖JavaPlugin超类中的特定方法,因此您需要;我需要以完全相同的方式拼写它们。

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

(我从另一个answer of mine复制了此文字,其中有人遇到了类似的问题,但我并不认为这个问题是重复的。)