无法将商品添加到库存(Bukkit / Spigot)

时间:2016-05-24 10:48:29

标签: java plugins bukkit inventory

我的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循环中添加所有项目到库存,但这不应该有所作为。

3 个答案:

答案 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);