よく「プレイヤーが〇〇というアイテムを所持して殴ったor使った時、実行する」という構文を記述する時
こういう記述をするだろう(特定のアイテム以外の場合はreturnする、というもの)
(この場合try-catch使ってるのは本を開いたとき2重で実行されてしまうのを防いでいるだけなので気にしないで)
だが、まあこれで動作はするが、「素手で殴ったとき」実はエラーが出ているのである。
[Server thread/ERROR]: Could not pass event PlayerInteractEvent to (プラグイン名)
org.bukkit.event.EventException: null
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
この記事へのコメント