CFXControl Flex Wiki
English中文

谁在用这套 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

本体与配置源:两个容易混淆的角色

同一个模组,可能同时吃两条路

桥接和 JSON 不是二选一:epicfight 既写 Java 也装 JSON,create / emi 的社区配置反过来用 dependencies 要求桥接已安装。所以一个模组最终能不能用好手柄,取决于「桥接有没有装 + JSON 有没有覆盖到」两件事。

模组的样子 谁来覆盖
标准 KeyMapping,键位能在「按键映射」里看到 自动发现就够;要微调就加一份 compat JSON
自己造输入系统,但社区已经写了桥接 装桥接 + 按需覆盖它装的 JSON
自己造输入系统,且没人写过桥接 用手动修改配置先兜底,长期要自己写桥接

继续读