Java 获取玩家清单,然后广播物品displayname

Java 获取玩家清单,然后广播物品displayname,java,module,minecraft,bukkit,Java,Module,Minecraft,Bukkit,好的,我试着在玩家登录时检查他们的清单,上面写着displayname 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) {

好的,我试着在玩家登录时检查他们的清单,上面写着displayname

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());
            }
        }
    }
}
我知道这是一个NullPointerException,但我不知道它怎么能这么说。
我希望您理解我写的…

在您的代码中有许多可能出现NullPointerException的地方

例如:

p.getInventory().getItem(i).getType() 
使用报告的行号(31)查找准确的行。
如果无法调试代码,请使用日志(或简单souts)查找空引用。

代码中有许多可能出现NullPointerException的地方

例如:

p.getInventory().getItem(i).getType() 
使用报告的行号(31)查找准确的行。
如果无法调试代码,请使用日志(或简单的souts)查找空引用。

基于,我相信,而不是
p.getInventory().getItem(I).getType()!=null
它应该是
p.getInventory().getItem(i)!=null
如果在该插槽中没有项目堆栈,尝试获取其类型将抛出一个npe

基于,而不是
p.getInventory().getItem(I).getType()!=null
它应该是
p.getInventory().getItem(i)!=null
就好像该插槽中没有项目堆栈,试图获取其类型将抛出npe

你说的“我不知道它怎么会这样说”是什么意思?其中一个引用必须为null-您需要找出是哪个引用。在执行这段代码时,你能使用调试器吗?但是我有一个i==null,如果我有,它不应该说什么,或者?嗯
i
不能为null-它是一个
int
。而且你写的代码也不包括这些。。。但是
p
可以为null,或者
p.getInventory()
可以为null。。。(等)你说“我不知道它怎么会这么说”是什么意思?其中一个引用必须为null-您需要找出是哪个引用。在执行这段代码时,你能使用调试器吗?但是我有一个i==null,如果我有,它不应该说什么,或者?嗯
i
不能为null-它是一个
int
。而且你写的代码也不包括这些。。。但是
p
可以为null,或者
p.getInventory()
可以为null。。。(etc)此外,我认为ItemStack可能有空ItemMeta另外,我认为ItemStack可能有空ItemMeta