16時12分]bukkitでPlayerInteractEventが飛んでこない先日から、bukkitのプラグインを作る勉強をしている。これまでにいくつか参加したサーバーは、鯖主が3ヶ月くらいで飽きてサーバーが閉鎖してしまうからだ。多くのサーバーで導入されている資源ワールドという概念がどうにもなじまない。自前でサーバーを立ててしまえばいいんじゃね?ってわけだ。プラグイン作るに当たりいろいろ疑問が出たり解決することが多々あった。誰かの役に立つよう解決方法を記録すべく、ブログを立ち上げた。PlayerInteractEventは、プレイヤーが殴る操作をしたときに良く飛んでくる。以下のようなプログラムを書いてみた。e.getPlayer().sendMessage(e.getAction().toString());}ブロックを殴れば、LEFT_CLICK_BLOCKやRIGHT_CLICK_BLOCKといった文字列がプレイヤーの画面に表示される。空気を殴れば、同RIGHT_CLICK_AIRやRIGHT_CLICK_BLOCKのはずである。空気を殴ったときはイベントがこないことに気づいた。なんでだ?どうも、1行目の(ignoreCancelled=true)がついていると、空気を殴ったときはイベントがこないらしい。削ったらうまくいった。e.getPlayer().sendMessage(e.getAction().toString());}ちなみに、絵画とか額縁とかエンティティを殴った場合は、*_CLICK_BLOCKではなく*_CLICK_AIRである。e.getClickedBlock()では殴った絵画のオブジェクトは得られない。その必要がある場合はHangingBreakByEntityEventを使ったほうがいいようだ。このとき、絵画を壊した犯人(Player)は、e.getRemover()で得られる。RSS2.0最近のコメントおー、お役に立てたようでなによりです。再起...[9/11]この記事が非常の役立ちました。おかげさまで...[9/9]1.14.2のAPIで試しましたが、MapInitializeEv...[9/9]天晴れ!押したらポーションのモヤモヤでまし...[5/26]習うより慣れろって感じで。記事へのリンクは大歓迎です。連絡不要でご自由に貼ってください。画像や添付ファイルへの直リンクはご遠慮願います。