Access Transformer

基本信息

属性 值
类型 构建 / 加载期设定
文件 src/main/resources/META-INF/aspectrecipeindex_at.cfg
gradle 声明 gradle.properties 中 accessTransformersFile = aspectrecipeindex_at.cfg
条目数 4(全部作用于同一个类)

目标:把 GuiContainer 的四个布局字段改为 public

四个 SRG 名称是反混淆后的 MCP 字段名,运行时实际映射到混淆名。源码与本 wiki 一律保留 SRG 原文。

SRG 名称 人类可读名 声明
field_146999_f xSize public
field_147000_g ySize public
field_147003_i guiLeft public
field_147009_r guiTop public

目标类全部为 net.minecraft.client.gui.inventory.GuiContainer。

用途

这四个字段是 1.7.10 GuiContainer 的 protected 字段。ARI 的 ClientTickEventsFMLMixin 需要在鼠标位于 NEI 配方页区域内时跳过 Thaumcraft 自己的元素图标渲染,从而接管渲染:

判断条件读的是 gui.xSize、gui.ySize(外层 GuiContainer)、guiRecipe.guiLeft、guiRecipe.guiTop(NEI 的 GuiRecipe)。这四个值全部是 protected,mixin 类又不是它们的子类,因此必须靠 AT 提升可见性。

跳过逻辑的目的是:当鼠标停在 “Items Containing Aspect” 的 NEI 配方页里时,不要再在 tooltip 上重复画一遍元素——该 handler 自己会画。

判读要点

  • AT 只提升可见性,不改变字段名、不新增成员、不修改方法体。
  • 只影响客户端 GUI 类,因此无服务端副作用。
  • 文件末尾的 #xSize 等是 GTNH AT 格式里的可读性注释,运行时被忽略。

相关条目