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 将失去作用对象。

相关条目