Не открывать инвентарь при щелчке правой кнопкой мыши - PullRequest
0 голосов
/ 22 февраля 2020

Я пытался создать пользовательский инвентарь, и все выглядит нормально, но в игре, когда я пытаюсь щелкнуть правой кнопкой мыши на предмете, который открывает инвентарь, инвентарь не открывается.

        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);

1 Ответ

1 голос
/ 25 февраля 2020

Сначала: e.getItem () может быть нулевым. Поэтому, возможно, вы могли бы получить NullPointer.

Второе: ItemStack # getType () возвращает Material. И вы проверяете SKULL_ITEM, а не Material.SKULL_ITEM (та же ошибка, которую вы допустили при инициализации вашей переменной pSkull).

Третий: проверьте, зарегистрирован ли ваш слушатель.

...