mixin 类清单

基本信息

属性 值
@Mixin 类 4(early 3 + late 1)
注入点总数 5
全部 cancellable true
启用版本 Minecraft 1.7.10

4 个类的注入点(逐条核对)

配置 类 行数 目标 注入方法 at remap
early MixinGuiContainerCreative 76 GuiContainerCreative renderToolTip HEAD 默认
early MixinGuiScreen 45 GuiScreen renderToolTip HEAD 默认
early MixinGuiScreen 45 GuiScreen drawHoveringText false false
early ItemEnchantedBookMixin 24 ItemEnchantedBook addInformation HEAD 默认
late MixinGuiContainerCreative 76 GuiContainerCreative renderToolTip HEAD 默认

⚠️ MixinGuiScreen 有 2 个 @Inject —— 所以 4 个 @Mixin 类共 5 个注入点。

全部 @Inject 都是 cancellable = true

@Inject(method = "renderToolTip", at = @At("HEAD"), cancellable = true)

⚠️ 5 个注入点全部为 cancellable = true 且全部在 HEAD —— 即在原方法执行前注入,并通过 CallbackInfo.cancel() 完全取代原版 tooltip 渲染。

这是「视觉完全接管」而非「增量增强」: 原版的 renderToolTip / drawHoveringText 在命中时不会执行。

⚠️ 因为全部在 HEAD 且 cancellable,注入逻辑内部必须自己完成全部渲染, 否则 tooltip 会完全不显示。

drawHoveringText 的 remap = false

@Inject(method = "drawHoveringText", remap = false, at = @At("HEAD"), cancellable = true)

⚠️ 唯一一个 remap = false。 1.7.10 中 GuiScreen.drawHoveringText 在混淆环境下成员名会变, 此处的 remap = false 表示按字面名匹配。

⚠️ 这是一处易错写法:若生产环境该方法被混淆, remap = false 会导致方法找不到 → 因 required: true 直接启动失败。 其余 4 个注入点用默认 remap = true(走混淆映射表 + refmap)。

@Shadow

early/MixinGuiContainerCreative 与 late/MixinGuiContainerCreative 都有 @Shadow(各 1 处,:28),两文件行数相同(均 76 行)。

⚠️ 两个同名同长度的类分属 early / late 两个配置, 但实现不同(阶段不同),不是复制粘贴的重复文件。 按类名去重会漏计。

ItemEnchantedBookMixin

最小的一个(24 行),目标 ItemEnchantedBook, 注入 addInformation —— 即在附魔书 tooltip 的物品描述生成阶段注入, 而不是在渲染阶段。这是本 mod 唯一非 GUI 层的 mixin。

目标类归属(关键安全结论)

4 个目标全部是 Minecraft 1.7.10 原版类:

目标 全名
GuiContainerCreative net.minecraft.client.gui.inventory.GuiContainerCreative
GuiScreen net.minecraft.client.gui.GuiScreen
ItemEnchantedBook net.minecraft.item.ItemEnchantedBook

⚠️ 全部为原版类 → 无需 addRequiredMod, 不存在「缺第三方 mod 启动即崩」的问题。详见 mixin 配置 的裁定。

关联