【归档】Minecraft协议分析(一):参考资料汇总

说明

此篇文章从旧版博客系统中迁移,正文排版及外链资源可能失效,同时请注意内容时效性。

正文

(原外部图片)

参考资料列表

以下是我研究Minecraft网络协议库的时候参考的一些资料和文档,希望对大家有所帮助!

Minecraft服务器协议其一 HandShake与获取服务器信息 - Glous的文章 - 知乎 - https://zhuanlan.zhihu.com/p/441543953

维基百科 - https://wiki.vg/Protocol

维基百科 - https://wiki.vg/Server_List_Ping

MineCraft协议——握手篇(讲解+实现) - Bilibili - https://www.bilibili.com/read/cv4243015/

协议版本 - Minecraft Wiki

Protocol - Minecraft 插件百科 - https://mineplugin.org/Protocol#Status

Minecraft 睡前杂谈(二)—— 服务器与客户端:网络模型与数据同步 - WarmthDawn的文章 - 知乎 https://zhuanlan.zhihu.com/p/461323949

https://github.com/PrismarineJS/node-minecraft-protocol

prismarinejs wiki - https://prismarinejs.github.io/node-minecraft-protocol/#/

data documentation - prismarinejs wiki - http://prismarinejs.github.io/minecraft-data/?d=protocol

参考资料错误指正

MineCraft协议——握手篇(讲解+实现) - Bilibili - https://www.bilibili.com/read/cv4243015/

在上述的这篇文章中,在“客户端发送Handshake包”的“例子”中提到:

端口号UnsignedSort:默认25565,对应第四行 27 66。

这其实是错误的,0x2766并不是25565的十六进制表示

我参考了其他资料,并抓包分析了Minecraft的通信过程,确认了25565应该对应的是0x63DD

这里也需要注意,经过我的抓包分析,Minecraft应该使用的是小端排序,即25565 = 0x63DD,而不是25565 = 0xDD63(大端排序)。

还有一点,在握手包中,25565这个端口号的数据类型是UShort,占2字节,不是VarInt,不要搞错哦。

参考资料推荐

data documentation - prismarinejs wiki - http://prismarinejs.github.io/minecraft-data/?d=protocol

PrismarineJS的Minecraft数据文档,包含了绝大部分Minecraft Java版和基岩版的通信协议资料,同时也包含了其他有用的信息(生物群系,物品,方块,配方等),不仅对研究Minecraft网络协议有很大帮助,对模组和服务端插件的开发者来说也有不小的作用。

维基百科 - https://wiki.vg/Protocol

维基百科上的关于Minecraft网络协议的介绍。其中仍然有不少值得研究的有用内容,比如数据包结构等等。参考PrismarineJS的Minecraft数据文档一起研究会更方便,更容易理解。

补充说明

以上参考资料均来自互联网,其内容与本站无关。