Bukkit插件爆炸箭头

时间:2015-07-14 04:01:27

标签: bukkit

我有一个bukkit插件,但我希望我的箭头爆炸。我有这段代码:

 public void ArrowHit(ProjectileHitEvent e)
      {
        if (((e.getEntity() instanceof Arrow)) && 
          ((e.getEntity().getShooter() instanceof Player)))
        {
          Player shooter = (Player)e.getEntity().getShooter();

            double x = e.getEntity().getLocation().getX();
            double y = e.getEntity().getLocation().getY();
            double z = e.getEntity().getLocation().getZ();
            e.getEntity().getWorld().createExplosion(x, y, z, 2.0F, false,   false);

        }

在我的主课的底部。它不起作用。有人在乎解释吗?

2 个答案:

答案 0 :(得分:2)

首先,您应确保已使用onEnable()方法注册了您的监听器!例如:

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

完成此操作后,请检查您的活动前是否有@EventHandler annotation

您还可以添加优先级!例如:

@EventHandler(priority = EventPriority.HIGH)
public void ArrowHit(ProjectileHitEvent e) {
    if (e.getEntity() instanceof Arrow && e.getEntity().getShooter() instanceof Player) {
        Player shooter = (Player) e.getEntity().getShooter();

        double x = e.getEntity().getLocation().getX();
        double y = e.getEntity().getLocation().getY();
        double z = e.getEntity().getLocation().getZ();
        e.getEntity().getWorld().createExplosion(x, y, z, 2.0F, false,   false);
    }
}

答案 1 :(得分:0)

第一个是检查以确保您注册了侦听器,并且您已为该方法提供了EventHandler注释。如果这不起作用,请在代码周围放置一些sysouts / sout以查看出错的地方。据我所知,除了缺少注释的可能性外,所有代码都可以从您发布的块中获得。

public class Example implements Listener {

    public Example(JavaPlugin plugin) {
        plugin.getServer().getPluginManager().registerEvents(this, plugin);
    }

    @EventHandler
    public void onGUIClick(InventoryClickEvent e) {
        // foo
    }
}

不同的事件,但同样的前提。