获取玩家库存,然后广播物品显示名称

0 java module minecraft bukkit

好的,我试图在玩家登录时检查他们的库存,它说显示名称

public void onPlayerJoin(PlayerJoinEvent event) {
    Player p = event.getPlayer();

    for (int i = 0; i < p.getInventory().getSize(); i++) {
        if (p.getInventory().getItem(i).getType() != null) {
            if (!p.getInventory().getItem(i).getItemMeta().getDisplayName().equals("KITS")){
                Bukkit.broadcastMessage(i.getItemMeta().getDisplayName());
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它只是导致错误。

错误日志:

public void onPlayerJoin(PlayerJoinEvent event) {
    Player p = event.getPlayer();

    for (int i = 0; i < p.getInventory().getSize(); i++) {
        if (p.getInventory().getItem(i).getType() != null) {
            if (!p.getInventory().getItem(i).getItemMeta().getDisplayName().equals("KITS")){
                Bukkit.broadcastMessage(i.getItemMeta().getDisplayName());
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道这是一个 NullPointerException 但我不知道它怎么能这么说。我希望你明白我写的...

van*_*ale 5

根据文档,我相信而不是p.getInventory().getItem(i).getType() != null它应该是p.getInventory().getItem(i)!= null在该插槽中没有 Item 堆栈试图获取其类型时会抛出一个 npe