正在向库存中添加物料,但仍很清晰Bukkit / Spigot

问题描述

我正在为朋友编写插件,但遇到了问题。当我将物品添加到清单时,当玩家运行/ kits命令时它们不会出现。这是我的代码

public void createInv() {
        inv = Bukkit.createInventory(null,this.getConfig().getInt("slots"),ChatColor.translatealternateColorCodes('&',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('&',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;
    }

我已经参加了很多论坛,但是还没有找到解决方法,因此非常感谢您的帮助!

另外,这是Spigot 1.16.1

解决方法

public Inventory getInventory() {
                Inventory inv = Bukkit.createInventory(null,this.getConfig().getInt("slots"),ChatColor.translateAlternateColorCodes('&',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('&',this.getConfig().getString("kits."+key+".name")));
                        item.setItemMeta(meta);
                        inv.setItem(this.getConfig().getInt("kits."+key+".slot"),item);
                        
                }
                return inv;
        }

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