Java Bukkit(插口api)侦听器没有响应?
我一直在制作一个bukkit插件,它出现在插件列表中,但当我做我想让代码做的事情时,什么也不会发生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()) {
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编程,可能值得一看以下视频:以及本系列: