5 个版本
0.2.2 | 2024年7月29日 |
---|---|
0.2.1 | 2024年7月15日 |
0.2.0 | 2024年7月15日 |
0.1.1 | 2024年7月15日 |
0.1.0 | 2024年7月14日 |
#327 in 数据结构
每月 177 次下载
375KB
7.5K SLoC
Sculk
[!重要]
支持的Minecraft版本:1.21
Minecraft数据处理的Rust crate。
使用Rust中速度最快的NBT解析器simdnbt
,以便您获得最佳性能。
轻松反序列化方块实体、整个区块、物品组件等。
并获得所有这些的完全类型化的数据结构。
Cargo功能
stats
启用Statistics
数据结构及其反序列化。
这使serde
成为依赖项。因此,它是一个功能。
性能抱怨
目前有一个大瓶颈,那就是我对生命周期的问题处理不当。
所有字符串都是 Cow<'a, Mutf8str
,这是拥有字符串,它首先从借用字符串转换而来。
这主要是一个临时解决方案,直到我能想出如何正确处理这些字符串的生命周期。
目前,由于我的生命周期问题,在反序列化区块时,每个方块实体都会复制内存。
由于许多字段是字符串,并且区块中有很多方块实体,
在我机器上,每32x32个区块(一个区域)会减慢30-100毫秒。
目前区块使用 BlockEntity
而不是它的 LazyBlockEntity
,因为从nbt复合标签中获取懒方块实体
目前需要复制它作为一个 Vec<u8>
,这非常慢且效率低下。
但如果你直接从字节中反序列化LazyBlockEntity,对于相对基本的数据,它的速度大约快83%。
因此,我想使用LazyBlockEntity来反序列化,尤其是因为它有一个to_owned
方法。
但再次遇到生命周期问题。
依赖项
~1–1.6MB
~35K SLoC