Добавление элемента в инвентарь, но все еще ясно (Буккит / патрубок)

#java #bukkit

#java #буккит

Вопрос:

Я кодирую плагин для друга и сталкиваюсь с проблемой. Когда я добавляю предметы в инвентарь, они не отображаются, когда игрок запускает команду /kits. Вот мой код:

 public void createInv() {
        inv = Bukkit.createInventory(null, this.getConfig().getInt("slots"), ChatColor.translateAlternateColorCodes('amp;', this.getConfig().getString("header")));
        ItemStack item = new ItemStack(Material.matchMaterial(this.getConfig().getString("kits.1.icon")));
        ItemMeta meta = item.getItemMeta();
        List<String> lore = new ArrayList<String>();

        for (String key : this.getConfig().getStringList("kits")) {
            lore.clear();
            item.setType(Material.matchMaterial(this.getConfig().getString("kits." key ".icon")));
            lore.add(this.getConfig().getString("kits." key ".lore"));
            meta.setLore(lore);
            meta.setDisplayName(ChatColor.translateAlternateColorCodes('amp;', this.getConfig().getString("kits." key ".name")));
            item.setItemMeta(meta);
            inv.setItem(this.getConfig().getInt("kits." key ".slot"), item);
            
        }
    }
  

Вот моя OnCommand:

     @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (label.equalsIgnoreCase("kits")) {
            if (!(sender instanceof Player)) {
                sender.sendMessage("You cannot use this command!");
                return true;
            }
            Player player = (Player) sender;
            player.openInventory(inv);
        }
        return false;
    }
  

Я просмотрел так много форумов и еще не нашел исправления, поэтому любая помощь очень ценится!

Кроме того, это патрубок 1.16.1

Комментарии:

1. Вы получаете сообщение об ошибке? Если это так, пожалуйста, обновите вопрос с помощью трассировки стека. createInv Находится в том же классе, что и ваша OnCommand? Если да, то где createInv вызывается?

Ответ №1:

 public Inventory getInventory() {
                Inventory inv = Bukkit.createInventory(null, this.getConfig().getInt("slots"), ChatColor.translateAlternateColorCodes('amp;', this.getConfig().getString("header")));

                for (String key : this.getConfig().getStringList("kits")) { //maybe this returns nothing?
                        ItemStack item = new ItemStack(Material.matchMaterial(this.getConfig().getString("kits.1.icon")));
                        ItemMeta meta = item.getItemMeta();
                        List<String> lore = new ArrayList<String>();
                        
                        lore.clear(); //??? it´s a empty list
                        item.setType(Material.matchMaterial(this.getConfig().getString("kits." key ".icon")));
                        lore.add(this.getConfig().getString("kits." key ".lore"));
                        meta.setLore(lore);
                        meta.setDisplayName(ChatColor.translateAlternateColorCodes('amp;', this.getConfig().getString("kits." key ".name")));
                        item.setItemMeta(meta);
                        inv.setItem(this.getConfig().getInt("kits." key ".slot"), item);
                        
                }
                return inv;
        }

         p.openInventory(getInventory()); //later