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]。

相关条目