美味的曲奇
本帖最后由 美味的曲奇 于 2022-5-17 15:24 编辑

曾经在
https://www.mcbbs.net/thread-1301401-1-1.html

有过实体序列化的尝试
但在1.16+之后的高版本没找到序列化的方法
在1.18-1.17的NMS
- World.getCurrentDifficultyAt 也需要一个参数 BlockPosition
* 这个好像一直有,鬼知道我之前怎么跑的* 解决,构建一个就是了
- 且没有 Entity.getBukkitEntity 方法
* 好像是有的(?)
看起来是我眼瞎

有没有高版本序列化实体的方案



‮tcejorPoiK
UnsafeValues#serializeEntity(Entity entity)

UnsafeValues#deserializeEntity(byte[] data, World world)
UnsafeValues#deserializeEntity(byte[] data, World world, boolean preserveUUID)

今天逛doc无意中发现的
https://papermc.io/javadocs/pape ... t/UnsafeValues.html

美味的曲奇
‮tcejorPoiK 发表于 2022-5-20 19:23
UnsafeValues#serializeEntity(Entity entity)

UnsafeValues#deserializeEntity(byte[] data, World world ...

这些方法被标记为了Deprecated.
怕行为上会有异常

‮tcejorPoiK
美味的曲奇 发表于 2022-5-20 20:12
这些方法被标记为了Deprecated.
怕行为上会有异常

因为它是Unsafe类,所以是可能会有兼容性问题。

看了下源码它就是粗暴的直接序列化和反序列化生物NBT,如果跨版本生物NBT有大改是会导致保存的生物无法反序列化,其他情况都安全。