Minecraft协议实现

一个用Go语言从头实现的Minecraft服务器协议,支持多个版本的服务器状态包和1.14版本的玩家加入、移动和区块发送功能。

  • by davidcallanan
  • Go
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 davidcallanan/go-mcp

使用说明

Go Minecraft协议

该项目旨在对Minecraft服务器协议进行逆向工程,并从头开始在Go中创建该协议的最低实现,使用 wiki.vg 作为过程中的重要参考。

这只是一个爱好项目,到目前为止,实施的很少。

到目前为止,我已经为每个Minecraft版本实现了“服务器状态”数据包,从2011年首次引入多人服务器状态开始,一直到撰写本文时的最新版本(2024年发布的1.21.3)。这需要大量的工作来考虑自开始以来的每一个协议更改,特别是考虑到原始协议中缺乏版本检测。

此外,仅在1.14版本中,我实现了玩家加入、玩家移动和向客户端发送块。不幸的是,游戏中的服务器协议在不同版本之间差异很大,我不得不先专注于一个Minecraft版本。

运行测试服务器

  • 安装Go版本 ^1.23.2.
  • 克隆此存储库。
  • cd testserver.
  • go run main.go.
  • 启动Minecraft 1.14并连接到 localhost.
  • 看 DEVELOPMENT.md 了解更多信息。

发展

  • 看 DEVELOPMENT.md.

截图

服务器列表Ping

Minecraft测试版1.8(2011)

《我的世界》1.7.5(2014)

我的世界1.23.2(2024)

加入世界

《我的世界》1.14.4

服务器日志