在PlayerInteractEvent期间Bukkit NPE

时间:2013-04-29 03:33:43

标签: minecraft bukkit

在放置除我定义的项目之外的任何其他项目或从牛奶桶中饮用时,我得到NPE(空指针异常)。我尝试将isCanceled()== false添加到我的EventHandler中,但它会破坏我的RIGHT_CLICK_AIR操作。对不起,这听起来有点复杂,可以提供任何更多的信息,提前谢谢!

@EventHandler(priority = EventPriority.HIGHEST)
public void onPlayerInteract(PlayerInteractEvent event) {
    Player p = event.getPlayer();
    Location location = p.getLocation();
    ItemStack item = event.getItem();
if(event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK && event.hasItem() != false || event.isCancelled() == true) {

1 个答案:

答案 0 :(得分:0)

我认为这是因为这一行:

ItemStack item = event.getItem();

当玩家没有持有物品时,它会返回null。尝试空检查,看看手中是否有物品。

if (event.getItem() != null)){
   //do stuff
}
else{
   //don't do it
}