Java Bukkit(插口api)侦听器没有响应?

Java Bukkit(插口api)侦听器没有响应?,java,bukkit,Java,Bukkit,我一直在制作一个bukkit插件,它出现在插件列表中,但当我做我想让代码做的事情时,什么也不会发生 public class MyClass extends JavaPlugin implements Listener { @EventHandler public void onInteract(PlayerInteractEvent event) { Player player = event.getPlayer(); if (player.isSneaking()) {

我一直在制作一个bukkit插件,它出现在插件列表中,但当我做我想让代码做的事情时,什么也不会发生

public class MyClass extends JavaPlugin implements Listener {

@EventHandler
public 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)));
      }
   }
}

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

您可以使用PluginManager的方法注册侦听器。一个聪明的想法是在你的onEnable方法中做到这一点,以确保你的监听器在你的插件启动时就被注册

public class MyClass extends JavaPlugin implements Listener {

    @Override
    public void onEnable() {
        this.getServer().getPluginManager().registerEvents(this, this);
    }

    // rest of your code
}

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

您可以使用PluginManager的方法注册侦听器。一个聪明的想法是在你的onEnable方法中做到这一点,以确保你的监听器在你的插件启动时就被注册

public class MyClass extends JavaPlugin implements Listener {

    @Override
    public void onEnable() {
        this.getServer().getPluginManager().registerEvents(this, this);
    }

    // rest of your code
}
只是一个简单的提示

如果要为其他类注册侦听器,则#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);
}
谢谢

只是一个简单的提示

如果要为其他类注册侦听器,则#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);
}

谢谢

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

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编程,可能值得一看以下视频:以及本系列:


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

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编程,可能值得一看以下视频:以及本系列: