#minecraft-server #minecraft #server #game-server #behavior #game

app mc173-server

兼容Notchian客户端的Minecraft beta 1.7.3协议和服务器实现

2个不稳定版本

0.2.0 2024年1月15日
0.1.0 2024年1月2日

#403游戏

Apache-2.0

1MB
18K SLoC

Minecraft Beta 1.7.3

一个使用Rust制作的Minecraft beta 1.7.3服务器,处于开发状态。该项目将服务器crate从数据结构和逻辑crate中分离出来,后者是为了开发者使用而制作的。

  1. 逻辑crate
  2. 服务器crate
  3. 贡献
  4. 路线图

逻辑crate

Crates.io Total Downloads

逻辑crate mc173 提供了核心数据结构,如世界、块和实体,以及块、物品和实体的行为。它还提供许多与Minecraft相关的实用工具。

服务器crate

Crates.io Total Downloads

服务器crate mc173-server 是Notchian服务器协议的实现,它基于逻辑crate构建,具有多线程网络功能,并定义了协议结构。

贡献

如果你愿意为此代码贡献或分叉,本节将介绍可用于理解Minecraft beta 1.7.3的Notchian实现并如何在Rust中实现它的不同工具。

最重要的工具是 RetroMCP,它是MCP(Minecraft模组历史中最重要的软件之一)的现代重制版。它可以用于自动反编译和去混淆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点击
    • 实体追踪
      • 客户端生成
  • 光照引擎
  • 世界生成

依赖项

~11–24MB
~326K SLoC