Java Bukkit PlayerInteractEvent将注册两次

Java Bukkit PlayerInteractEvent将注册两次,java,events,bukkit,Java,Events,Bukkit,所以我一直在Bukkit中构建一些事件处理程序,现在我被困在这个问题上。这可能是个愚蠢的错误,所以请原谅我 我想要的是:当我右键单击一个块时,它应该每秒都在聊天中进行:test。但它实际上每秒放两次。我已经调试了几乎所有的代码,但我没有让它工作。在我看来,这是注册两次 Main()类: Events()类: 提前谢谢 之所以PlayerInteractEvent调用两次,是因为它需要两只手,一只手是非手的,另一只手是手的。因此,要仅处理此事件1次,您必须准确地检查您想要的手: if (e.get

所以我一直在Bukkit中构建一些事件处理程序,现在我被困在这个问题上。这可能是个愚蠢的错误,所以请原谅我

我想要的是:当我右键单击一个块时,它应该每秒都在聊天中进行:
test
。但它实际上每秒放两次。我已经调试了几乎所有的代码,但我没有让它工作。在我看来,这是注册两次

Main()类:

Events()类:


提前谢谢

之所以
PlayerInteractEvent
调用两次,是因为它需要两只手,一只手是
非手的,另一只手是
手的。因此,要仅处理此事件1次,您必须准确地检查您想要的手:

if (e.getHand() == EquipmentSlot.HAND) {
    // ... Your code with test
}
public class Events implements Listener {
   public Plugin plugin = Main.getPlugin(Main.class);

   @EventHandler
   public void onInteract(PlayerInteractEvent e) {
      Player player = e.getPlayer();
      Action action = e.getAction();

      if(action.equals(Action.RIGHT_CLICK_BLOCK)) {
         new BukkitRunnable() {

            @Override
            public void run() {
                   player.sendMessage("Test");
                }

         }.runTaskTimer(plugin, 1, 20);
      }

   }

}
if (e.getHand() == EquipmentSlot.HAND) {
    // ... Your code with test
}