KeyBinding 注册总表
实测数量:7
Angelica 一共注册 7 个 KeyBinding。两个独立方法互相印证:
| 方法 | 结果 |
|---|---|
对 "*.keybind.*" 语言键做集合去重 |
7 |
ClientRegistry.registerKeyBinding 调用点计数 |
7 |
两者一致,可以确认没有「枚举循环导致少算」的情况。
清单
| # | 语言键 | 归属 | 分类 | 创建位置 | 注册位置 |
|---|---|---|---|---|---|
| 1 | angelica.keybind.zoom |
Angelica | key.categories.angelica |
Zoom.java:33(静态字段) |
Zoom.java:38 |
| 2 | angelica.keybind.fps_reducer_force |
Angelica | key.categories.angelica |
FpsReducer.java:45(init() 内) |
FpsReducer.java:47 |
| 3 | angelica.keybind.fps_reducer_disable |
Angelica | key.categories.angelica |
FpsReducer.java:46(init() 内) |
FpsReducer.java:48 |
| 4 | angelica.keybind.tracyCapture |
Angelica | key.categories.angelica |
TracyCaptureNotifier.java:34 |
TracyCaptureNotifier.java:35 |
| 5 | iris.keybind.reload |
Iris(无 modid) | key.category.iris.keybinds |
Iris.java:982 |
Iris.java:986 |
| 6 | iris.keybind.toggleShaders |
Iris(无 modid) | key.category.iris.keybinds |
Iris.java:983 |
Iris.java:987 |
| 7 | iris.keybind.shaderPackSelection |
Iris(无 modid) | key.category.iris.keybinds |
Iris.java:984 |
Iris.java:988 |
全部 7 个的默认键码参数均为 0(未绑定)。
分类字符串不一致
两个分类常量写法不同,这是源码事实而非笔误推测:
| 分类常量 | 值 | 定义位置 |
|---|---|---|
AngelicaMod.KEY_CATEGORY |
key.categories.angelica(复数 categories) |
AngelicaMod.java:34 |
| Iris 内联字符串 | key.category.iris.keybinds(单数 category) |
Iris.java:982-984 |
Minecraft 原版的分类键约定是 key.categories.<modid>(复数)。Iris 沿用了自己 1.12+ 时代的 key.category.… 单数写法,因此 Iris 的三个按键在游戏内会落到「未分类」或沿用上一分类显示,而不是新建一个 Iris 分类。
两个分类的语言条目都写在 assets/angelica/lang/ 域下(不是 assets/iris/lang/,后者根本不存在):
| 文件 | 行 | 内容 |
|---|---|---|
assets/angelica/lang/en_US.lang |
:154 |
key.category.iris.keybinds=Iris Keybinds |
assets/angelica/lang/en_US.lang |
:158 |
key.categories.angelica=Angelica |
assets/angelica/lang/en_US.lang |
:159 |
angelica.keybind.zoom=Zoom |
其中 key.category.iris.keybinds 只在 en_US 与 uk_UA 两个语言文件里存在,其余 5 个语言缺失。
注册时机
三类注册时机不同:
| 归属 | 时机 | 触发条件 |
|---|---|---|
| Zoom | ClientProxy.init → Zoom.init() |
AngelicaConfig.enableZoom |
| FpsReducer ×2 | ClientProxy.init → FpsReducer.init() |
无条件 |
| TracyCapture ×1 | ClientProxy.init → TracyCaptureNotifier.INSTANCE.register() |
Tracy.ENABLED |
| Iris ×3 | ClientProxy.init → Iris.INSTANCE.fmlInitEvent() |
AngelicaConfig.enableIris |
即:enableZoom、enableIris、Tracy 任一关闭,对应按键就不会出现在设置界面里。
Zoom 的实际参数
| 常量 | 值 | 位置 |
|---|---|---|
ZOOM_MIN |
1.0F |
Zoom.java:18 |
ZOOM_MAX |
64.0F |
Zoom.java:19 |
ZOOM_STEP |
1.2F(滚轮一格的倍率) |
Zoom.java:20 |
zoom 初值 |
ZOOM_DEFAULT |
Zoom.java:24 |
滚轮处理(Zoom.java:46-49):eventDWheel == 0 直接返回,否则按 Math.signum(eventDWheel) 取 ±1 次幂 ZOOM_STEP,乘后用 MathHelper.clamp_float 夹到 [1.0, 64.0]。
相关条目
- AngelicaMod -
KEY_CATEGORY定义处 - Proxy - 4 个 Angelica 按键的实际注册点
- Iris(内嵌库) - 3 个 Iris 按键的注册点
- 资源域与语言文件 - 语言键的实际存放域