右键单击时不打开库存

来源:爱站网时间:2021-09-23编辑:网友分享
我一直在尝试创建自定义库存,并且一切正常,但在游戏中,当我尝试右键单击打开库存的项目时,库存没有打开。库存...

问题描述


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

        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 pSkullLore = new ArrayList();
        pSkullLore.add(ChatColor.WHITE + "Show Player Stats");
        pMeta.setLore(pSkullLore);
        pMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
        pSkull.setItemMeta(pMeta);
        p.getInventory().setItem(0, pSkull);

思路:


首先:e.getItem()可以为null。因此,也许您可​​以获得NullPointer。

第二个:ItemStack#getType()返回Material。并且您正在检查的是SKULL_ITEM而不是Material.SKULL_ITEM(初始化变量pSkull时犯了同样的错误)。

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

上一篇:在Ubuntu 18.04上安装DR Java

下一篇:如何在Java中有效地计算此计算?

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载