Theseus 模组文档
开发指南

兼容性与版本


12.1 Seecmd-Api-Version 的协商规则

模组在 jar 的 manifest 里声明自己期望的 API 主版本:

声明情况宿主行为
键缺失 / 为空白按宿主当前版本处理(不拒绝),老 jar 不因缺键被一刀切
版本串无法解析拒绝加载,文案为「无法解析模组声明的 API 版本 "X"(期望形如 "3.2")」
major 不同拒绝加载(状态 LOAD_FAILED),文案为「此模组要求 API X,宿主支持 Y(major 版本不匹配,宿主不保证兼容)」
minor 更高(major 相同)告警放行:宿主保证 minor 向后兼容,但模组可能引用了宿主没有的新接口
patch 不同不参与判定

两点补充:

12.2 3.x 内「只增不破」的承诺

com.seecmd.mod.api.* 的公共签名在 2.x / 3.x 内只增不破(1.x 的冻结承诺已在 2.0 兑现过一次破坏性变更:NoteTypeDefinition 的四个布尔旗标改为语义标记子接口;3.0 又删除了每轨旋转圆心参数与常量):

12.3 破坏性变更策略

破坏性变更只在 major 版本发生(已发生 2.0、3.0 两次),且必须同时满足:

换言之,你会先在大版本内看到弃用告警,下一个 major 版本才真正移除;major 变化时旧模组会被宿主按 12.1 的规则明确拒绝加载并给出提示,而不是在中途抛 NoSuchMethodError。

12.4 从 0.7.x 迁移

0.7.x 的模组在 1.0 宿主下不会被兼容加载(旧的裸字符串 id、裸路径资源、registerXxx 钩子、双总线等机制都已下线或归一)。逐项对照表、迁移顺序与常见报错见单独的迁移指南:

迁移前的三条速记:注册统一收敛到 onPreInit + ctx.registries();资源与语言统一走 assets/<模组id>/...;能力与事件分别改走 ctx.capabilities() / ctx.eventBus()。