This question already has answers here:
What is a NullPointerException, and how do I fix it?

(12个答案)


3年前关闭。




我遇到了这个错误,老实说我不知道​​该如何解决,我已经尽力了。

代码是检查玩家的行李箱插槽,看是否有钻石靴子,如果有,将其设置为空气,因为这是被禁止的项目。

错误:

太大,无法粘贴到这里,因此是:http://pastebin.com/zhzc3Hut

编码:

    @EventHandler
public void onInventoryClickBoots(InventoryClickEvent event) {
    Player player = (Player) event.getWhoClicked();

    if(player.getInventory().getBoots().getType().equals(Material.DIAMOND_BOOTS)){
        player.getInventory().setBoots(new ItemStack(Material.AIR));
    }
    else {
    }
}


我在头盔,胸甲和绑腿插槽上也遇到了同样的错误。

预先感谢任何能够帮助我的人!对发生的事情的解释也将不胜感激!

最佳答案

您可能面临的问题是getBoots ItemStack实际上为空。

要解决该问题,我们应该先检查引导程序是否为空,然后再检查其类型。

ItemStack boots = player.getInventory().getBoots();
if (boots != null) {
    if (boots.getType().equals(Material.DIAMOND_BOOTS) {
       player.getInventory().setBoots(null);
    }
}


@编辑

如The_Lone_Devil所提醒:


(...)这是因为库存中的空插槽是空的ItemStack,因此,如果引导插槽中没有空插槽,则返回的ItemStack为空。

10-04 21:47