2个版本
0.1.1 | 2021年12月28日 |
---|---|
0.1.0 | 2021年12月28日 |
#951 in 数学
350KB
8K SLoC
Minecraft RS
用于Minecraft数据操作的纯Rust Crates。这个Cargo工作区旨在将数据结构从实际实现中分离出来。这个仓库中的两个主要Crates是 core 和 vanilla,目前它们是唯一可在 crates.io 上找到的。
其他如 worldgen、runtime 和 server 的Crates没有积极维护,因为保持这些与最新版本同步的工作量太大。worldgen Crates的维护稍微好一些,但它仍然是一个玩具Crates,目前只实现了1.2.5(不包含生成结构)。
核心Crates
core Crates定义了Minecraft使用的重要且必需的数据结构,这包括块、生物群系、高度图、实体等优化结构的定义。这些小型结构的主要目标是静态定义,这样它们在运行时不会花费时间加载,这也允许使用它们的指针进行简单的相等性测试。它们还具有文本标识符,格式与Minecraft的常规格式相同 namespace:key
。一旦静态定义,它们需要添加一个运行时注册表,将它们的静态指针关联到一个线性正整数id,该id可用于在运行时高效地序列化和反序列化这些结构 内部,对于静态文件的序列化,整数id映射到文本标识符,这是必需的,因为整数id可能在Crate的不同运行之间发生变化。
这些全局注册表打包在一个名为“层环境”的结构中,该结构由层内存储的块使用。这个Crates还提供了一种为层获取块的方法,并预先定义了一个用于加载Minecraft以 anvils格式保存的世界的 anvils 块源。
vanilla Crates
“vanilla”提供了用于与全局注册表一起使用的静态实例定义,它还提供了一个名为 WithVanilla
的特质,该特质在每个支持“vanilla”变体的结构体上实现,例如方块、生物群落和等级环境。
依赖项
约3.5MB
约61K SLoC