GET -> 陶瓦联机

简单的陶瓦联机网络控制方案

⭐ 引言

陶瓦联机作为一款针对 Minecraft 优化的联机核心,被众多启动器使用。
然而,目前网上并没有许多针对陶瓦联机的文档,导致部分用户只能去查阅现有源代码。
本文将介绍利用网络请求控制陶瓦联机的方法。
我们开始吧!

🚀 准备工作

开始之前,你需要:

  • 启动陶瓦联机;
  • 准备一个可以发起 HTTP GET 请求的工具(浏览器就行)。

🔍 获取状态

你可以通过 HTTP 请求:

GET /state

获取当前状态
以下是一些常见的 state

状态 含义 备注
waiting 等待中(空闲)
host-scanning 主机扫描中(正在扫描局域网世界)
host-starting 主机启动中 room 即为邀请码
host-ok 主机就绪(房间已开启) room 即为邀请码,profiles 即为房间内玩家
guest-connecting 房客连接中(正在进入房间) room 即为邀请码
guest-starting 房客启动中 room 即为邀请码,difficulty 即为连接难度
guest-ok 房客就绪(房间已加入) url 即为服务器地址(端口若为 25565 会自动隐藏),profiles 即为房间内玩家
exception 发生错误 强烈建议处理该 statetype 即为异常类型

详解 *-ok.profiles 内容

属性 含义 备注
kind 类型 HOST 即为房主,GUEST 即为房客
machine_id 机器 ID
name 名称
vendor 核心提供商 例如 Terracotta XXX, EasyTier XXX

详解 exception.type

数字 文字 解释
0 PingHostFail 无法连接到主机
1 PingHostRst 主机连接被重置
2 GuestEasytierCrash 房客端 Easytier 崩溃
3 HostEasytierCrash 房主端 Easytier 崩溃
4 PingServerRst 服务器连接被重置(三次均无法连接到 Minecraft)
5 ScaffoldingInvalidResponse 脚手架返回了无效响应

🚗 作为房主

作为房主,你可以通过 HTTP 请求:

GET /state/scanning?player=<名称,可选>

开始扫描
这会让核心开始扫描局域网世界
此时,房主需要在 Minecraft 中将自己的世界对局域网开放
后续就可以轮询状态了,若状态为 host-ok 即为成功。
接下来就该对你的用户显示 room 啦!

🔑 作为房客

作为房客,你可以通过 HTTP 请求:

GET /state/guesting?room=<邀请码>&player=<名称,可选>

加入房间
后续就可以轮询状态了,若状态为 guest-ok 即为成功。
与房主不同,此时的 state 并不提供邀请码(需要使用传到 Query 中的)。
接下来就该对你的用户显示 url 啦!
实际上,Minecraft 一般能够自动扫描到大厅,并不需要手动输入 URL。

🚫 终止联机

你可以通过 HTTP 请求:

GET /state/ide

终止联机
这会退出或关闭房间。
顺带一提,应当在房间就绪后持续轮询状态,以免出现连接断开而未处理的情况。

🚩 结语

本篇文章到此结束,希望能够给你提供帮助。
这里是 awa_Eric233,以后会继续在这里更新内容。

📕 参考来源

  • GitHub 陶瓦联机仓库 burningtnt/Terracotta