Theseus 模组文档
API 参考 / 能力对账提示

能力对账提示


  1. capabilities().get(X.class) 可能返回 null:宿主只在对应时机注册对应能力——ModServiceRegistry、SceneHost、StoryAccess 为进程级;GameStateAccess / InputAccess / AudioAccess 只在游玩中存在;GameplayHud / LaneInputMapper 只在游玩场景被消费。取用前一律判空,不要长期缓存到静态字段。
  2. 能力不是配置:GameplayHud 的可见性 getter 是「模组主动声明」的开关,不是真实渲染状态;ModService 只透传布尔 / 整数 / 浮点 / 字符串四种原语。业务状态请自行持久化(ModContext.config())或经 ModService 协商键语义。
  3. 别在游戏线程做阻塞 IO:网络一律走 ctx.network().executor();onHotkey、SettingsItem.onEnter / onAdjust、GlobalHotkey.onHotkey、UiCustomization 的点击与渲染回调都在游戏线程或渲染线程,必须轻量;onUnload 中自行关闭自己打开的 socket / 连接。
  4. 停用即回收:模组注册的快捷键、设置项、状态栏块、结算渲染器、轨道样式提供器、跨模组服务、游玩实体都由宿主在停用 / 退出时自动清理,onUnload 中逐个 remove 是多余的。唯一例外是需要外部资源的对象(socket、文件句柄),必须自行关闭。
  5. 注册顺序即优先级:GameplayHud 可见性取「任一隐藏即隐藏」而渲染依次叠加;HudElementOverride 颜色取启用顺序最后者、偏移求和、透明度连乘;LaneInputMapper 为「声明管辖键的第一个模组负责该键,无声明时按启用顺序回退询问第一个映射非空者」。若你的模组依赖另一个模组的服务或映射,应在 Mod.loadOrder() 中声明 loadAfter。