我的Bukkit和Spigot的套件插件存在一些问题。 当我使用命令/工具包时,只打开一个空库存。 这是我的代码:
for (int i = 0; i<main.cfg.getConfigurationSection("kits").getKeys(false).size();i++) {
String s = (String) main.cfg.getConfigurationSection("kits").getKeys(false).toArray()[i];
ItemStack is = new ItemStack(Material.valueOf(main.cfg.getString("kits." + s + ".mat")));
ItemMeta im = is.getItemMeta();
im.setDisplayName(s);
is.setItemMeta(im);
cont.add(is);
}
项目堆栈有效,但是当我执行kits.add(is)时,该项目不会被添加到库存中。
Bukkit.createInventory(null,size,"Kits");
创建了库存工具包,并且显示正确((Player)sender).openInventory(kits);
你在代码中看到cont.add(is)
,因为我试图制作一个ItemStack(续)列表,然后在另一个for循环中添加所有项目到库存,但这不应该有所作为。
答案 0 :(得分:1)
我找到了解决这个问题的方法。这是因为我根据有多少套件计算了库存的大小。今天我想知道为什么我在库存中只有3行而只有1个套件。应该只生一行。然后我把它设置为54项,所以6行作为库存大小,它工作! 解决方案:确保您在广告资源中至少创建了3行,然后才能生效。
答案 1 :(得分:0)
唯一想到的可能是&#34; main.cfg.getConfigurationSection(&#34; kits&#34;)。getKeys(false).size()&#34;返回0,导致for循环中的代码永远不会执行。也许你可以添加&#34; sender.sendMessage(&#34; for循环正在运行&#34;);&#34;在for循环中只是为了验证它实际上正在运行。
答案 2 :(得分:-1)
它没有添加,它是addItem:)
cont.addItem(is);