#minecraft #mc #core #data-structures

mc-core

MinecraftRS - Minecraft后端的最小核心实现

2个版本

0.1.1 2021年12月28日
0.1.0 2021年12月28日

#925 in 游戏

每月21次下载
用于 mc-vanilla

Apache-2.0

220KB
5K SLoC

Minecraft RS

用于Minecraft数据操作的纯Rust包。这个Cargo工作区旨在将数据结构从实际实现中分离出来。这个仓库中的两个主要包是 corevanilla,目前它们是crates.io上唯一可用的。

其他包如 worldgenruntimeserver 由于保持最新版本的更新工作量太大,目前没有积极维护。worldgen包的维护稍好一些,但仍然是一个玩具包,目前只实现了1.2.5版本(不包含生成结构)。

核心包

Crates.io  Crates.io

核心crate定义了Minecraft使用的最重要和强制性的数据结构,这包括块、生物群系、高度图、实体的优化结构定义。这些小型结构的主要目标是静态定义,以便在运行时不占用时间,这也允许使用它们的指针进行简单的等价性测试。它们还具有文本标识符,格式为Minecraft的常规格式命名空间:。一旦静态定义,它们需要添加一个运行时注册表,将它们的静态指针关联到一个线性正整数ID,该ID可以用于在运行时内部高效地序列化和反序列化这些结构 运行时内部,对于静态文件的序列化,整数ID映射到文本标识符,这是必要的,因为整数ID可能在crate的不同运行之间发生变化。

这些全局注册表被包装在一个“级别环境”结构中,该结构用于存储在级别内的块。这个crate还提供了一种为级别获取块的方法,并预定义了一个 anvils 块源,用于加载以 anvils 格式保存的Minecraft世界。

Vanilla crate

Crates.io  Crates.io

vanilla提供用于与全局注册表一起使用的静态实例定义,它还提供了一个WithVanilla特质,该特质在每个支持vanilla变体的结构上实现,例如块、生物群系和级别环境。

依赖项

~3.5MB
~61K SLoC