为了账号安全,请及时绑定邮箱和手机立即绑定

Bukkit(spigot api)监听器没有响应?

Bukkit(spigot api)监听器没有响应?

达令说 2021-11-24 15:52:14
我一直在制作一个 bukkit 插件,它显示在插件列表中,但是当我做我想让代码做的事情时,什么也没发生。public class MyClass extends JavaPlugin implements Listener {@EventHandlerpublic void onInteract(PlayerInteractEvent event) {  Player player = event.getPlayer();  if (player.isSneaking()) {      player.sendMessage("Fire!");      Arrow arrow = player.launchProjectile(Arrow.class);      arrow.setShooter(player);      arrow.setGravity(false);      arrow.setSilent(true);      arrow.setBounce(false);      Block attach = arrow.getAttachedBlock();      Location attachlocation = attach.getLocation();      attachlocation.getWorld().createExplosion(attachlocation, 3);            arrow.setVelocity((player.getEyeLocation().getDirection().multiply(1000)));      }   }}
查看完整描述

3 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

我看不到你注册你的听众。Bukkit 需要知道哪些对象是侦听器(您没有这样做)并且需要知道要执行哪些方法(使用@EventHandler注释)


您可以使用 PluginManager 的registerEvents(Listener listener, Plugin plugin)方法注册侦听器。一个聪明的想法是在您的 onEnable 方法中执行此操作,以确保您的侦听器在您的插件启动后立即注册。


public class MyClass extends JavaPlugin implements Listener {


    @Override

    public void onEnable() {

        this.getServer().getPluginManager().registerEvents(this, this);

    }


    // rest of your code

}


查看完整回答
反对 回复 2021-11-24
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

只是一个快速提示,


如果你想为不同的类注册一个监听器,那么#onEnable() 中的代码将是:


public void onEnable() {

    this.getServer().getPluginManager().registerEvents(this, this); //You have to 

    register the main class as a listener too.

    this.getServer().getPluginManager().registerEvents(new EventClass(), this);

}

谢谢!


查看完整回答
反对 回复 2021-11-24
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

您尝试调用的侦听器类代码将有助于尝试和调试此场景。您必须确保以下内容为真:

1) 类实现监听器

2)您使用以下方法注册课程:

Bukkit.getServer().getPluginManager().registerEvents(new [class] /* class of listener. this if it's your main class */, this/* your main class */);

3) 你在每个事件之前都记得@EventHandler。

如果您正在学习 bukkit 编程,可能值得观看此视频:https ://youtu.be/Rinjdx6c6r8和本系列:

https://www.youtube.com/watch?v=bVySbfryiMM&list=PLAF3anQEEkzREsHA8yZzVhc3_GHcPnqxR


查看完整回答
反对 回复 2021-11-24
  • 3 回答
  • 0 关注
  • 220 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信