結論
kotlin
@EventHandler
fun onPlayerInteract(event: PlayerInteractEvent) {
if (event.action != Action.RIGHT_CLICK_AIR && event.action != Action.RIGHT_CLICK_BLOCK) return
val block: Block? = player.getTargetBlockExact(5, FluidCollisionMode.SOURCE_ONLY)
if (block != null && block.type == Material.WATER) {
//ここに処理
}
}
詳細
ガラス瓶で水を汲んだことを検知しようとした際に発生。
PlayerInteractEvent.clickedBlock()
では水が検知できない。
代替手段として、getTargetBlockExact()
を使用。
用意された関数通りの使い方をしているので詳細はJavaDocに任せる
最大距離は4だと検知漏れがあった。
CauldronLevelChangeEvent
とかPlayerBucketEvent
とかはあるのにがPlayerGrassBottleFillEvent(仮称)
がないのはなんで...