Java 右键单击时未打开库存

Java 右键单击时未打开库存,java,minecraft,bukkit,Java,Minecraft,Bukkit,我一直在尝试创建一个自定义库存,一切似乎都很好,但在游戏中,当我尝试右键单击打开库存的项目时,库存不会打开 Inventory playerInfoInv = plugin.getServer().createInventory(null, 27, ChatColor.GOLD + "Player Info"); p.openInventory(playerInfoInv); } @EventHandler public void on

我一直在尝试创建一个自定义库存,一切似乎都很好,但在游戏中,当我尝试右键单击打开库存的项目时,库存不会打开

        Inventory playerInfoInv = plugin.getServer().createInventory(null, 27, ChatColor.GOLD + "Player Info");
        p.openInventory(playerInfoInv);
    }


    @EventHandler
    public void onInteract(PlayerInteractEvent e) {
        Player p = e.getPlayer();
        Material getItemInHand = e.getItem().getType();
        Action a = e.getAction();


        if (getItemInHand.equals(SKULL_ITEM)) {
            if (a.equals(Action.LEFT_CLICK_AIR))
            playerInfoInventory(p);
        }
    }
这是头骨项目元,如果它可能会影响:

        //Player skull
        ItemStack pSkull = new ItemStack(SKULL_ITEM,1,(short) SkullType.PLAYER.ordinal());
        SkullMeta pMeta = (SkullMeta) pSkull.getItemMeta();
        pMeta.setOwner(p.getName());
        pMeta.setDisplayName(ChatColor.BLUE + "Player Info");
        ArrayList<String> pSkullLore = new ArrayList<String>();
        pSkullLore.add(ChatColor.WHITE + "Show Player Stats");
        pMeta.setLore(pSkullLore);
        pMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
        pSkull.setItemMeta(pMeta);
        p.getInventory().setItem(0, pSkull);
//玩家头骨
ItemStack pSkull=新的ItemStack(SKULL_ITEM,1,(短)SkullType.PLAYER.ordinal());
SkullMeta pMeta=(SkullMeta)pSkull.getItemMeta();
setOwner(p.getName());
pMeta.setDisplayName(ChatColor.BLUE+“玩家信息”);
ArrayList pSkullLore=新的ArrayList();
pSkullLore.add(ChatColor.WHITE+“显示玩家统计数据”);
pMeta.setLore(pSkullLore);
pMeta.addItemFlags(ItemFlag.HIDE_属性);
pSkull.setItemMeta(pMeta);
p、 getInventory().setItem(0,pSkull);
首先:e.getItem()可以为null。所以也许你可以得到一个空指针

第二个:ItemStack#getType()返回材质。您正在检查SKULL\u ITEM而不是Material.SKULL\u ITEM(与初始化变量pSkull时犯的错误相同)


第三:检查您的侦听器是否已注册。

您正在检查播放机是否在代码中左键单击,我也不建议对枚举使用
.equals
。@DaCurse Ohhh lol。那么您建议使用什么?只需
=
,更改操作是否解决了您的问题?没有。我尝试将清单创建方法更改为:
public static inventory Player foinventory=Bukkit.createInventory(null,18,ChatColor.GOLD+“Player Info”);静态{playerinfinoventory.setItem(4,新的ItemStack(SKULL_ITEM));}
并且它工作了