谁在用这套 API
control-flex-api 目前有 5 个公开使用方,全部是 ControlFlexMC 组织下的官方桥接模组。被它们适配的模组(Epic Fight、Create、Exposure、EMI、沉浸车辆)自己并不依赖这套 API,也不需要任何改动 —— 这一页把「谁依赖 API、谁只是被适配」分开列清楚。
本节: 概览 · 接入与生命周期 · 接口速查 · 官方实现 · 谁在用这套 API
判断一个模组属于哪一类,看它的构建脚本就够了:出现 compileOnly "com.github.ControlFlexMC:control-flex-api:<版本>" 说明它是桥接(依赖 API);只在 dependencies 里声明 Control Flex 说明它只是要求本体存在;两者都没有,就是纯被适配的对象。
依赖 API 的桥接模组
五个仓库都在 ControlFlexMC 下,按 MC 版本分分支(默认分支是 1.20.1)。「用到的 API 面」一列是从各自源码里直接统计的调用点。
| 仓库 | 适配对象 | 分支 | 用到的 API 面 | 随包资源 |
|---|---|---|---|---|
| cfx-compat-epicfight | Epic Fight | 1.20.1 · 1.21.1 | 整套 SPI(ready / compat / guide)+ 动作状态 + 状态推送 + 相机接管 + 输入视图 | compat JSON + guide JSON + 中英文案 |
| cfx-compat-create | Create 列车控制台 | 1.20.1 · 1.21.1 | 插件 ready 回调 + 动作状态 + 手柄状态 | 无 |
| cfx-compat-exposure | Exposure 取景器 | 1.20.1 · 1.21.1 | 只调 getInteractiveContextRegistrar(),不注册 SPI |
无 |
| cfx-compat-emi | EMI | 1.18.2 · 1.19.2 · 1.20.1 · 1.21.1 | 插件 compat 回调 + 资源安装器(22 个伪键位由 JSON 描述) | compat JSON + 中英文案 |
| cfx-compat-vehicles | 沉浸车辆 Immersive Vehicles(MTS) | 1.12.2 · 1.16.5 · 1.18.2 · 1.19.2 · 1.20.1 · 1.21.1 · 26.1.2 | 插件 ready 回调 + 动作状态 + 手柄状态 | 无(不随包发 JSON) |
被适配的模组(不依赖 API)
这些是上游模组。它们不知道自己正在被手柄驱动 —— 桥接站在这边,替它们把输入翻译成它们认识的信号,所以升级上游模组时只需要桥接跟进,上游一个字段都不用改。
| 模组 | 最低版本 | 适配方 |
|---|---|---|
| Epic Fight | ≥ 20.14(1.20.1 Forge)· ≥ 21.15(1.21.1 NeoForge) | cfx-compat-epicfight |
| Create | ≥ 6.0.7 | cfx-compat-create |
| Exposure | ≥ 1.9.20 | cfx-compat-exposure |
| EMI | 1.1.x | cfx-compat-emi |
| 沉浸车辆 Immersive Vehicles(MTS) | 对应 MC 版本线头部的发布版 | cfx-compat-vehicles |
本体与配置源:两个容易混淆的角色
- control-flex 本体是这套 API 的实现方,不是使用方:它通过
ControlFlexApiAdapter把自己的控制器、动作、状态、相机管线暴露出去,自己并不依赖 JitPack 上的 API 包。 - cfx-compat-configs 是纯 JSON 的配置源,一行 Java 都没有,所以也不出现在上面的表里 —— 它覆盖的那批模组见兼容配置字段。
- 第三方桥接目前还没有。如果你写了一个,欢迎在 control-flex 仓库的 issue 里告知仓库地址与适配的模组版本,这一页会补上。
同一个模组,可能同时吃两条路
桥接和 JSON 不是二选一:epicfight 既写 Java 也装 JSON,create / emi 的社区配置反过来用 dependencies 要求桥接已安装。所以一个模组最终能不能用好手柄,取决于「桥接有没有装 + JSON 有没有覆盖到」两件事。
| 模组的样子 | 谁来覆盖 |
|---|---|
标准 KeyMapping,键位能在「按键映射」里看到 |
自动发现就够;要微调就加一份 compat JSON |
| 自己造输入系统,但社区已经写了桥接 | 装桥接 + 按需覆盖它装的 JSON |
| 自己造输入系统,且没人写过桥接 | 用手动修改配置先兜底,长期要自己写桥接 |