【问题标题】:Cannot add item to inventory (Bukkit/Spigot)无法将项目添加到库存(Bukkit/Spigot)
【发布时间】:2016-05-24 10:48:29
【问题描述】:

我的 Bukkit 和 Spigot 套件插件存在一些问题。 当我使用命令 /kits 时,只会打开一个空库存。 这是我的代码:

        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 循环中将所有项目添加到库存中,但这应该没有什么区别。

【问题讨论】:

    标签: java plugins bukkit inventory


    【解决方案1】:

    我找到了解决这个问题的方法。这是因为我根据有多少套件来计算库存的大小。今天我想知道为什么我的库存中有 3 条生产线而只有 1 个套件。那应该只做1行。然后我将它设置为 54 个项目,因此 6 行作为库存大小并且它起作用了! 解决方案:确保您在库存中至少创建 3 行,然后它应该可以工作。

    【讨论】:

      【解决方案2】:

      唯一想到的可能是“main.cfg.getConfigurationSection("kits").getKeys(false).size()”返回0,导致for循环中的代码永远不会执行。也许你可以添加 "sender.sendMessage("The for loop is running");"在 for 循环中只是为了验证它实际上正在运行。

      【讨论】:

      • 我确定它正在运行,因为我将一个 sysout 放入循环中以打印 itemStack 的数据。它已经把数据放出来了。
      • “嗯,这很棘手...... – Bill Ray 13 小时前” 是的,没错,使用我的所有其他插件,库存上的 GUI 工作得很好,但我所做的一切都和这个完全一样一。
      【解决方案3】:

      不是add,是addItem :)

      cont.addItem(is);
      

      【讨论】:

      • cont 不是库存它是一个列表(阅读我的编辑)
      • 哦,我的错。这真的很奇怪。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多