2 个不稳定版本
0.2.0 | 2024 年 1 月 15 日 |
---|---|
0.1.0 | 2024 年 1 月 2 日 |
#274 in 游戏
用于 mc173-server
700KB
14K SLoC
Minecraft Beta 1.7.3
一个使用 Rust 制作的 Minecraft beta 1.7.3 服务器,该项目将服务器 crate 从数据结构和逻辑 crate 中分离出来,后者是为开发者准备的。
逻辑 crate
逻辑 crate mc173 提供了核心数据结构,如世界、区块和实体,以及块、物品和实体的行为。它还提供许多与 Minecraft 相关的实用工具。
服务器 crate
服务器 crate mc173-server 是 Notchian 服务器协议的实现,它建立在逻辑 crate 之上,具有线程化网络,并定义了协议结构。
贡献
如果您愿意为此代码贡献或分叉,本节介绍了用于理解 Minecraft beta 1.7.3 的 Notchian 实现以及如何将其实现为 Rust 的不同工具。
最重要的工具是 RetroMCP,它是 Minecraft 模组历史中最重要的软件之一 MCP 的现代重制版。它可以用于自动反编译和反混淆 Minecraft beta 1.7.3 的原始存档。它还可以用于重新编译和混淆游戏然后运行,这可以用于添加调试代码,但幸运的是这种情况很少发生。您可以阅读项目的 README 文件,它设计得很好,其 CLI 直观,只需为客户端和服务器选择 b1.7.3 版本即可。
选择客户端和服务器非常重要,因为这两个的源代码略有不同。例如,您必须根据您想理解的网络协议的哪一侧选择客户端或服务器源代码。
下一步就是探索源代码,并尝试理解它是如何工作的!由于它是面向对象的,所以有时候可能会比较具有挑战性,因此您还应该使用支持Java语言以及一些重要功能(如跳转到定义和类层次结构)的IDE或文本编辑器(如VSCode、IDEA、Eclipse等)。
可以使用以下路线图来了解已完成组件如何从Java转换为Rust,或者如果您想贡献并添加功能。Rust代码也被尽可能地进行了文档化,因此请阅读文档注释,以真正了解如何为文档化的代码做出贡献。如果您认为路线图不完整,可以根据需要添加项目。
另一个可能有用的工具是我(Théo Rozier)制作的Minecraft CLI启动器,它被称为PortableMC,它对b1.7.3提供了非常好的支持,与Mojang启动器相比,游戏启动速度非常快。它还解决了游戏中的皮肤和一些其他与旧版本相关的问题。
路线图
为了提供与Notchian服务器功能相匹配的完整服务器,还有很多工作要做。为了正确完成这项工作,以下路线图总结了已实现和缺失的组件以及我们应该按照何种顺序进行工作。每个功能的优先级由其在列表中的顺序定义。
- 世界和区块数据结构
- 世界序列化
- 区块数据
- 方块实体数据
- 实体数据
- 等级数据
- 方块
- 定义
- 物品掉落
- 心跳调度
- 放置
- 破坏
- 红石(部分)
- 点击(部分)
- 物品
- 定义
- 存货数据结构
- 合成
- 定义
- 追踪器
- 使用/放置行为
- 破坏行为
- 实体
- 实体数据结构
- 实体行为(80%)
- 服务器
- 协议
- 网络多线程
- 方块破坏
- 长方块破坏
- 瞬间方块破坏
- 方块破坏持续时间检查
- 玩家存货存储在服务器端
- 玩家可以链接到任何实体类型
- 世界序列化
- 非持久玩家实体
- 玩家实体独立保存
- 玩家窗口
- 左右点击支持
- 玩家存货合成网格
- 合成台
- 箱子
- 熔炉
- 分发器
- 物品的Shift-Click
- 实体追踪
- 客户端生成
- 光影引擎
- 世界生成
依赖项
~5.5MB
~139K SLoC