アイテムを持って右クリックした時、
onInteract の関数が、3回呼ばれることがあった。
@EventHandler
public void onInteract(PlayerInteractEvent e) {
その時のログがこちら。
System.out.println(e.getAction());
System.out.println(e.getHand());
System.out.println(e.getPlayer());
System.out.println(e.getBlockFace());
System.out.println(e.getClickedBlock());
System.out.println(e.getHandlers());
System.out.println(e.getItem());
System.out.println(e.getMaterial());
System.out.println(e.hasBlock());
System.out.println(e.hasItem());
System.out.println(e.isBlockInHand());
System.out.println(e.useInteractedBlock());
System.out.println(e.useItemInHand());
[13:46:41 INFO]: RIGHT_CLICK_BLOCK
[13:46:41 INFO]: HAND
[13:46:41 INFO]: CraftPlayer{name=**********}
[13:46:41 INFO]: UP
[13:46:41 INFO]: CraftBlock{pos=BlockPosition{x=-229, y=79, z=1050},type=GRASS_BLOCK,data=Block{minecraft:grass_block}[snowy=false],fluid=net.minecraft.server.v1_16_R3.FluidTypeEmpty@7c29adc8}
[13:46:41 INFO]: org.bukkit.event.HandlerList@4ceb29c8
[13:46:41 INFO]: ItemStack{GOLDEN_PICKAXE x 1}
[13:46:41 INFO]: GOLDEN_PICKAXE
[13:46:41 INFO]: true
[13:46:41 INFO]: true
[13:46:41 INFO]: false
[13:46:41 INFO]: ALLOW
[13:46:41 INFO]: DEFAULT
[13:46:41 INFO]: AirBlock!
[13:46:41 INFO]: cmd =fill -229 79 1050 -229 79 1050 air destroy
[13:46:41 INFO]: RIGHT_CLICK_BLOCK
[13:46:41 INFO]: HAND
[13:46:41 INFO]: CraftPlayer{name=**********}
[13:46:41 INFO]: NORTH
[13:46:41 INFO]: CraftBlock{pos=BlockPosition{x=-229, y=79, z=1051},type=GRASS_BLOCK,data=Block{minecraft:grass_block}[snowy=false],fluid=net.minecraft.server.v1_16_R3.FluidTypeEmpty@7c29adc8}
[13:46:41 INFO]: org.bukkit.event.HandlerList@4ceb29c8
[13:46:41 INFO]: ItemStack{GOLDEN_PICKAXE x 1}
[13:46:41 INFO]: GOLDEN_PICKAXE
[13:46:41 INFO]: true
[13:46:41 INFO]: true
[13:46:41 INFO]: false
[13:46:41 INFO]: DENY
[13:46:41 INFO]: DEFAULT
[13:46:41 INFO]: AirBlock!
[13:46:41 INFO]: cmd =fill -229 79 1051 -229 79 1051 air destroy
[13:46:41 INFO]: RIGHT_CLICK_BLOCK
[13:46:41 INFO]: OFF_HAND
[13:46:41 INFO]: CraftPlayer{name=**********}
[13:46:41 INFO]: UP
[13:46:41 INFO]: CraftBlock{pos=BlockPosition{x=-229, y=79, z=1050},type=AIR,data=Block{minecraft:air},fluid=net.minecraft.server.v1_16_R3.FluidTypeEmpty@7c29adc8}
[13:46:41 INFO]: org.bukkit.event.HandlerList@4ceb29c8
[13:46:41 INFO]: null
[13:46:41 INFO]: AIR
[13:46:41 INFO]: true
[13:46:41 INFO]: false
[13:46:41 INFO]: false
[13:46:41 INFO]: ALLOW
[13:46:41 INFO]: DEFAULT
[13:46:41 INFO]: AirBlock!
[13:46:41 INFO]: cmd =fill -228 79 1051 -228 79 1051 air destroy
OFF_HAND と HAND の違いがあったのは、わかった。
しかし、それでも HAND でイベントが2回呼ばれる。
違いといえば、「useInteractedBlock」の ALLOW と DENY くらい?