cnYeqi
我在使用ItemMeta的getlore和setlore方法的时候出了问题
getLore的列表该怎么接收,每次我用一个list接收后试图用add或set方法增加或修改一个元素后
都会报错Cannot invoke "java.util.List.set/add(int, Object)" because "list" is null
能不能给一个实例我参考下嘞

桃源村服主
比如item.setLore(Arrays.asList("展示剑..", "第二行Lore"));

cnYeqi
桃源村服主 发表于 2022-5-2 23:08
比如item.setLore(Arrays.asList("展示剑..", "第二行Lore"));

我想要的不是设置,而是修改
我的思路是提取物品当前的lore,然后对其进行列表操作之后再setLore。

桃源村服主
本帖最后由 桃源村服主 于 2022-5-2 23:43 编辑
cnYeqi 发表于 2022-5-2 23:10
我想要的不是设置,而是修改
我的思路是提取物品当前的lore,然后对其进行列表操作之后再setLore。 ...

就像这样
  1.     public static void setItemLore(ItemStack item,List<String> lore) {
  2.         if(item==null)return;
  3.         ItemMeta itemMeta=item.getItemMeta();
  4.         if(itemMeta==null)return;
  5.         ArrayList<String> list = new ArrayList<>(lore);          //把lore放进list
  6.         list.add("我要再加一条lore");                              //在末尾加一条lore
  7.         list.remove(0);                                    //移除第一条lore
  8.         itemMeta.setLore(list);                                  //更新itemMeta
  9.         item.setItemMeta(itemMeta);                              //更新物品

  10.     }
复制代码



cnYeqi

ArraryList<>(lore)中lore是什么意思。

桃源村服主
cnYeqi 发表于 2022-5-3 09:21
ArraryList(lore)中lore是什么意思。


lore就是方框里的这个


其实你没必要这么麻烦,你修改setlore失败的原因是你试图把List里的东西放到lore里,只要把List换成ArrayList就行了。
因为List里的东西是无序的,而ArrayList里的内容有序,lore本身就是有顺序的,所以不能用List