12 个版本 (重大变更)

0.10.2 2024 年 6 月 14 日
0.9.1 2024 年 4 月 19 日
0.9.0 2023 年 12 月 5 日
0.8.0 2023 年 9 月 15 日
0.4.0 2022 年 11 月 19 日

#1652 in 网络编程

每月下载量:29
用于 2 crate

MITGPL-3.0-or-later

2MB
48K SLoC

杜鹃花协议

一个用于发送和接收 Minecraft 数据包的低级 crate。你可能需要使用 azaleaazalea-client

目标是仅支持最新的 Minecraft 版本,以简化开发。

这还不是完整的,请在代码中搜索 TODO 以查找需要完成的事情。

遗憾的是,使用 azalea-protocol 需要 Rust nightly,因为 专业化 还不稳定。使用 rustup default nightly 启用它。

添加新的数据包

添加新的数据包通常相当简单,但你将需要 Minecraft 的反编译源代码,你可以使用例如 DecompilerMC 等工具来获取。

  1. 首先,你需要数据包 ID。你可以从 azalea-protocol 错误信息或从 wiki.vg 获取。
  2. 运行 python codegen/newpacket.py [packet id] [clientbound or serverbound] \[game/handshake/login/status\]\
  3. 转到它告诉你的数据包生成的目录。如果没有注释,你就完成了。否则,继续。
  4. 在 Minecraft 源代码中找到数据包。Minecraft 的数据包位于 net/minecraft/network/protocol/<state> 目录。你的数据包状态通常是 game
  5. 从Minecraft源代码的读取或写入方法中添加字段。如果您不确定数据包的结构,可以查看wiki.vg,但请注意,wiki.vg对大多数事物使用不同的名称。
  6. 格式化代码,提交拉取请求,并等待审查。

实现数据包

您可以通过实现McBufReadable和McBufWritable手动实现数据包的读取和写入功能,但也可以通过从struct或enum派生McBuf来自动生成这些功能。

参考其他数据包作为示例。

依赖项

~23–36MB
~568K SLoC