官方状态码有 0..10(含 9 = TRANSFERRING),但 `ServerStatus` 枚举漏了 9。
后果不是"显示错一个值",而是:
- WebSocket 的 `status` 消息 `data` 解码成 `Server` 时,枚举初始化失败 →
整条消息抛错 → 上层收不到这次状态更新(服务器启动/停止时的迁移阶段会卡住)。
实测(真实账号,HTTP 轮询与 WS 推送对照)确认服务器会依次经过
10 PREPARING → 6 LOADING → 2 STARTING → 1 ONLINE → 3 STOPPING → 5 SAVING → 0 OFFLINE,
其中迁移阶段的状态码就是 9。
改动:
- `ServerStatus` 补 `case TRANSFERRING = 9`;
- 新增 `case UNKNOWN = -1` 与宽容的 `init(from:)`:将来新增状态码时退化成 `.UNKNOWN`,
不再让整条 `Server` 解码失败;
- 新增 `ServerStatusDecodingTests`:11 个官方取值逐一断言 + 未知码退化用例。
上层(OrzMCApp)需要相应把 `.UNKNOWN` 当成过渡态展示。