java - 获取玩家库存,然后广播元素显示名称

标签 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());
            }
        }
    }
}

这只是导致错误。

错误日志:

Caused by: java.lang.NullPointerException
    at me.BlueJelly.MPSKitPvP.Listeners.PlayerListener.onPlayerJoin(PlayerListener.jav
a:31) ~[?:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_09]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_09]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_09]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_09]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425) ~[
   craftbukkit.jar:git-Bukkit-1.6.4-R2.0-9-g68d0e57-b2930jnks]

我知道这是一个 NullPointerException,但我不知道它是如何表达的。 希望你能明白我写的东西...

最佳答案

基于the documentation ,我相信而不是 p.getInventory().getItem(i).getType() != null 它应该是 p.getInventory().getItem(i)!= null code> 就好像该插槽中没有 Item 堆栈一样,尝试获取其类型将抛出 npe

关于java - 获取玩家库存,然后广播元素显示名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20828845/

相关文章:

java - 在java中将字符串转换为BigDecimal

java - 当我有 split 功能时,为什么要使用 StringTokenizer?

javascript - 当伪 javascript 类已经初始化时,我在尝试修改 "this"对象时遇到了很多麻烦

module - 如何从私有(private)模块中的公共(public)函数引用私有(private)类型?

java - 如何在 Spring MVC 中使用绝对路径加载图像?

java - 如何删除依赖项 : maven sub-modules creates implicit dependency on parent module

java - 包装 java 程序的标准输入/标准输出

java - 从另一个类导入命令参数

java - 从插件重新编译反编译的类

java - Servlet 直接映射 JSP 文件,而不是使用 Servlet 来管理 URL 请求