场景:
监听了一些事件, 获取玩家的itemstack, 然后设置了lore
itemMeta.setLore(lore);
itemStack.setItemMeta(itemMeta);
但是玩家把这个设置有lore的物品,先放置,然后在破坏 掉落后 去拾取这个方块物品 lore 居然全部没了,有啥我不知道的原理吗
监听了一些事件, 获取玩家的itemstack, 然后设置了lore
itemMeta.setLore(lore);
itemStack.setItemMeta(itemMeta);
但是玩家把这个设置有lore的物品,先放置,然后在破坏 掉落后 去拾取这个方块物品 lore 居然全部没了,有啥我不知道的原理吗
因为 方块物品 变成 Block之后 没有绑定原ItemStack对象,从方块到物品其实是生成的一个新的 ItemStack,你可以自己实现一个绑定
试试记录这个方块被放置/破坏时的位置来还原它的itemMeta?
diexi 发表于 2022-11-1 06:47
试试记录这个方块被放置/破坏时的位置来还原它的itemMeta?
已经找到答案啦 ,你的方法也可以 好像mojang为了性能考虑, Block 没有产生对象, 在方块掉落变成物品时候会产生对象, 这个对象好像是从游戏本身,加载出来的 如果是动态的的话 就需要考虑记录位置了 如果只是一个模版,考虑在启动的时候加载到内存中, 然后调用方块掉落事件 替换掉原来的物品信息就行了