0コメント

【Bukkit plugin】PlayerInteractEventで所持アイテムに応じて実行する時にエラーが発生する問題

よく「プレイヤーが〇〇というアイテムを所持して殴ったor使った時、実行する」という構文を記述する時

スクリーンショット 2021-10-23 192812.png

こういう記述をするだろう(特定のアイテム以外の場合はreturnする、というもの)

(この場合try-catch使ってるのは本を開いたとき2重で実行されてしまうのを防いでいるだけなので気にしないで)

だが、まあこれで動作はするが、「素手で殴ったとき」実はエラーが出ているのである。

[Server thread/ERROR]: Could not pass event PlayerInteractEvent to (プラグイン名)
org.bukkit.event.EventException: null
中略
Caused by: java.lang.NullPointerException: Cannot invoke "org.bukkit.inventory.ItemStack.getType()" because the return value of "org.bukkit.event.player.PlayerInteractEvent.getItem()" is null

これが素手で殴るたび毎回出力されていた。

一応、これによってプラグインが動作しなくなるみたいなこともないが、一応回避しておいた方がいいだろう。

ちなみにe.getItemしているときに素手だと取得できずにエラーとなってしまうので、取得する部分をtry-catchでreturnしてしまえばおそらく大丈夫だろう。
0

この記事へのコメント