我花了几个小时看着有这个问题的人,但他们的解决方案似乎都没有用!
我正在尝试设置知识并显示ItemStacks ItemMeta的名称。
以下是代码:
ItemStack is = new ItemStack(Material.DIAMOND_SWORD, 1); ItemMeta meta = is.getItemMeta();
通过运行它(JUnit测试),发生1个错误。它是.getItemMeta(),它始终为null。如果我做的话,它怎么能为空呢?
感谢您的阅读,我已经被困了大约一个小时了:)
答案 0 :(得分:1)
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);
答案 1 :(得分:0)
' getItemMeta()'如果没有要获取的元数据,则会返回null
。您需要先创建元:
ItemMeta meta = Bukkit.getItemFactory().getItemMeta(Material.DIAMOND_SWORD);
然后你可以操纵元数据。完成后,只需将其设置为itemstack:
is.setItemMeta(meta);