所以我在Bukkit中构建了一些EventHandler,现在我被困在了这个上面。这可能是一个非常愚蠢的错误,所以请原谅我。
我想要的是以下内容:当我右键单击某个块时,它应该只是将每一秒:test
放在聊天中。但它实际上每秒放两次。我几乎一直在调试整个代码,但我没有让它工作。在我的想法中,它注册了两次。
Main()类:
public class Main extends JavaPlugin {
@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(new Events(), this);
}
@Override
public void onDisable() {
}
}
Events()类:
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);
}
}
}
提前致谢!
答案 0 :(得分:2)
PlayerInteractEvent
两次调用的原因是它需要两只手 - 一次用于OFF_HAND
,一次用于HAND
。因此,要处理此事件只需要一次,您必须检查您想要的手:
if (e.getHand() == EquipmentSlot.HAND) {
// ... Your code with test
}