有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java正在将项目添加到库存中,但仍处于清除状态(Bukkit/spiget)

我正在为一个朋友编写一个插件,我遇到了一个问题。当我向库存添加物品时,当玩家运行/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;
    }

我已经通过了这么多的论坛,还没有找到一个解决方案,所以任何帮助都非常感谢

此外,这是插口1.16.1


共 (1) 个答案

  1. # 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