问题描述
我正在为朋友编写插件,但遇到了问题。当我将物品添加到清单时,当玩家运行/ 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