Closed i493052739 closed 7 months ago
尝试写插件将bug前的未丢失的 translationKey 备份出来单独存一个 NBT 字段然后等出 BUG 后通过 listener 和 NBT API 回写到 NBT 里去修正,结果发现无论是同步添加回NBT还是异步添加回NBT都会被重置为 null,而且仅限于这一个字段会有这个问题,其他NBT字段均正常读写
如上图,备份出数据存成 backupData1 字段,然后尝试回写到 ShareTag 的 TranslationKey 中,失败,但 TranslationKey1 成功。
尝试了同步调用: itemStack.setItemMeta(nbtItem.getItem().getItemMeta()); 尝试了异步调用: Bukkit.getScheduler().runTaskLater(this.plugin, () -> updateItemStackMeta(itemStack, nbtItem), 60);
ShareTag 的 TranslationKey 均会被重置成null
测试发现一个规律,玩家在第一次获取某个物品时(造成的点击事件)不会丢失shareTag,但第二次之后就会在点击物品时立即丢失
运行环境
Minecraft版本(1.12.2/1.16.5/1.18.2): 1.18.2 构建版本(从/version指令获取): 6c3f596 相关模组/插件: SlashBlade-1.18.2-0.0.9.jar,Mar 16, 2023 最新版 https://www.curseforge.com/minecraft/mc-mods/slashblade/files/4440150
描述这个BUG 无 log 无报错,只是 NBT 会丢失![K_3EJP@CJL5GBL7Z JW7M}H](https://github.com/Luohuayu/CatServer/assets/36336351/c9dcb4ac-36db-48d3-9704-7d7ab3527883)
如上图↑,在背包中鼠标左键点击拔刀剑后,红框内的 NBT 信息会变空(如图的下半部分)
此时玩家的拔刀剑就会直接变为初始的白装
经测试,在原版单机中模组正常,服务端中删除其余mod及插件后依然会丢失NBT
导致的问题
玩家的拔刀剑就会直接变为初始的白装
复现方法
左键反复点击背包内的拔刀剑,3次以内就会丢失NBT