1

我花了几个小时研究有这个问题的人,但他们的解决方案似乎都不起作用!

我正在尝试设置 ItemStacks ItemMeta 的知识和显示名称。

这是代码:

  ItemStack is = new ItemStack(Material.DIAMOND_SWORD, 1);
    ItemMeta meta = is.getItemMeta();

通过运行它(JUnit 测试),会发生 1 个错误。它是 is.getItemMeta(),它始终为空。如果我刚刚成功,它怎么可能是空的?

感谢您的阅读,我已经被难住了大约一个小时了:)

4

2 回答 2

2

Kezz101 的回答大部分是正确的,但它已经可以有一个 ItemMeta。我会推荐:

Material mat = Material.DIAMOND_SWORD;
ItemStack is = new ItemStack(mat, 1);
ItemMeta  im = is.hasItemMeta() ?
    is.getItemMeta() : Bukkit.getItemFactory().getItemMeta(mat);
/* ...Do something with im... */
is.setItemMeta(im);
于 2013-11-30T12:20:48.377 回答
0

null如果没有要获取的元数据, 'getItemMeta()' 将返回。您需要先创建元数据:

ItemMeta meta = Bukkit.getItemFactory().getItemMeta(Material.DIAMOND_SWORD);

然后您可以操作元数据。完成后,只需将其设置为 itemstack,如下所示:

is.setItemMeta(meta);
于 2013-09-27T15:37:09.837 回答