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 配置 的裁定。
关联
- mixin 配置 - 3 个配置文件与
required裁定 - TooltipHandler - 被这些注入点调用的渲染入口
- TooltipRenderer - 实际渲染器
- ChromaticTooltips - mod 入口