Access Transformer
基本信息
| 属性 | 值 |
|---|---|
| 文件 | src/main/resources/META-INF/defaultkeys_at.cfg |
| Gradle 声明 | accessTransformersFile = defaultkeys_at.cfg |
| 应用机制 | FML 的 META-INF/ AT 声明(不是 core mod 钩子) |
| 目标条目数 | 1 |
全部内容
public-f net.minecraft.client.settings.KeyBinding field_151472_e #keyCodeDefault
即把 net.minecraft.client.settings.KeyBinding 的 field_151472_e(MCP 名 keyCodeDefault)从 protected 提升为 public。
唯一使用点
EventHandler.reloadDefaultMappings()(EventHandler.java:363):
keyBinding.keyCodeDefault = defaultKeys.get(keyBinding.getKeyDescription());
没有这行 AT,keyCodeDefault 在 1.7.10 中是 protected,本模组无法从外部包写入默认值,整套「模组包下发默认键位」功能失效。
字段作用
KeyBinding.keyCodeDefault 是该键位的出厂默认键码。本模组把它改成来自 config/defaultkeys.txt 的值,再配合 knownkeys.txt 记录"哪些键位已经被本模组接管过",实现:
- 玩家首次遇到某个键位 → 用模组包下发的默认值填入;
- 之后玩家自己改键 → 不再覆盖。
详见 默认键位下发。
限制
- 目标字段名用的是 SRG 名
field_151472_e,不是 MCP 名。在混淆环境下由 FML 的 AT 处理机制完成映射。 - 该条目只提升可见性,不改任何行为;
KeyBinding本身逻辑完全未被修改。 - 本模组不使用
getAccessTransformerClass()(返回null),若只把coreModClass去掉而保留 AT 文件,AT 依然会由 FML 生效——但类转换器会消失,preStartGame也就不会被调用,AT 将失去作用对象。
相关条目
- Core Mod 类转换器 - 同一 jar 内的另一处低层改写
- 默认键位下发 -
keyCodeDefault的唯一写入点