我目前正在尝试使用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");
}
}
在服务器上运行时,它永远不会看到玩家加入游戏。
答案 0 :(得分:1)
如果您没有大写onEnable(和onDisable)方法的名称,那么您的代码将会起作用。 on 启用和开启启用两种不同的方法,因为java区分大小写,并且由于您尝试覆盖JavaPlugin超类中的特定方法,因此您需要;我需要以完全相同的方式拼写它们。
据我所知,常见的惯例是,无论如何都要用小写字母开始你的方法。 @Override
注释在捕获这些类型的错误时非常有用,因为它让编译器知道您的意思是覆盖现有方法,并且该方法是否存在(例如,如果您拼错了名称)或者添加了不同的参数),它会提醒您(它还允许任何阅读代码的人立即知道您重写现有方法或实现接口)。
(我从另一个answer of mine复制了此文字,其中有人遇到了类似的问题,但我并不认为这个问题是重复的。)