lyizai
|
71e78f06dc
|
fix: 按实测响应修正 SimpCore API-V2 的字段名
接入 V2 密钥后实跑发现字段名与文档描述对不上,全部按真实响应修正:
- /players 返回的是对象 {online,max,players:[...]} 而不是裸数组,
原解析会拿到空列表;且里面没有坐标与延迟,只有所在世界
- /dragon 的字段是 dragonAlive,不是 alive,也没有 health / phase
- /time 直接给算好的时刻 {world,tick,phase,time12,time24},
原实现还在用 world_time/day_time/is_day 自己换算,全部取不到
- /players/{name}/equipment 的物品是 {type,key,amount,damage,maxDurability,unbreakable}
且挂在 equipment 子对象下;damage 是已损耗值,原来会把「损耗 157」当成
「剩余 157」显示,现在换算成 remainingDurability 并显示「剩余/上限」+ 百分比
- 429 限流时服务端带 retryAfterSeconds,现在提示里直接写出还要等多少秒
(末影龙 1 次/分钟,实测提示「还需等待 16 秒」)
另外给 SimpApiV2Client 加了可注入的 fetchImpl,便于测试替换网络层。
实测(DiLiDaLaDaLa):在线 8 人、游戏时间 19:45 NIGHT、
下界合金剑 剩余 1992/2031、头盔 剩余 198/407。
测试 336 -> 343,全部通过。
|
2026-09-28 13:56:41 +08:00 |
|
lyizai
|
b9cae1aac2
|
feat: 接齐 SimpCore 开放 API 全量接口并新增 API 数据浏览弹层
以前只用了「邦国领土」这一类接口,控制台也只能看到一行「已启用/未启用」,
大量服务端公开信息拿得到却看不到。现在按官方文档 https://open.bgjq.top/api-docs.html 补齐。
新增
- SimpApiClient 从 7 个接口补到 16 个:/info/players、/info/unions/{key}/members、
/tech、/contributions、/info/buffs、/info/diplomacy、/info/bans、/info/logs、
/info/announcements
- SimpApiV2Client(新):/players、/players/{name}/equipment、/time、/dragon。
文档明确 API 与 API-V2 是两套独立、互不通用的密钥体系,因此单独实例与配置
(apiV2Enabled / apiV2Key,或环境变量 SIMP_API_V2_KEY);V2 配额很小
(末影龙 1 次/分钟),一律按需查询、不做轮询
- 控制台「查看 API 数据」弹层,五个页签:
概览(两套密钥状态/请求数/缓存/健康检查)· 邦国(27 个,点开看成员/科技/捐献/领土统计)
· 玩家(1600+ 可搜索,点开看详情与所属邦国)· 全服(加成/外交/封禁/日志/公告)
· 实时 V2(在线玩家/游戏时间/末影龙/装备)
- /api/simp/* 一整套只读代理接口,统一处理「未配 Key / 上游错误」并给出可读提示
修复(解析字段名以实测响应为准)
- 捐献:响应只有 player_uuid 没有玩家名 -> 先用成员表补全、查不到再退到全服玩家表;
时间字段是 contributed_at;补充 reason(用途)列;amount 可为负(邦国支出)
- 公告:message 是 Minecraft 聊天组件 JSON 字符串 -> 新增 componentToText() 压平为纯文本
- 封禁:实际字段 banned_player_name / banned_by_player_name / banned_at / unbanned
- 日志:实际字段 username / action / timestamp
- 玩家表:上下线时间是 last_join_time / last_quit_time
- 王城坐标:服务端可能返回 null,原来 Number(null) 会算成 0,
伪装成「王城在世界原点 (0,0)」;现在显式判空返回 null
变更
- 快捷发送去掉 /spawn 与 /list,只留 /u return、/u claimmode、/u restore confirm
测试 326 -> 336,全部通过。
|
2026-09-28 13:45:23 +08:00 |
|