MixinEntityRenderer_Xaeros
基本信息
| 属性 | 值 |
|---|---|
| 类名 | com.gtnewhorizons.angelicacompat.mixins.early.client.xaeros.MixinEntityRenderer_Xaeros |
| 目标类 | net.minecraft.client.renderer.EntityRenderer |
| Mixin 阶段 | EARLY(mixins.angelicacompat.early.json) |
| Mixin 启用条件 | PatchesConfig.patchXaerosMinimap == true && AngelicaConfig.enableHudCaching == true |
| Mixin 注入方法 | updateCameraAndRender |
| Mixin 注入点 | INVOKE GuiIngame.renderGameOverlay(FZII)V |
| 启用版本 | Minecraft 1.7.10(仅客户端) |
功能
Xaeros Minimap 在原版 Forge 中通过 xaero.common.core.transformer.GuiIngameForgeTransformer 把 XaeroMinimapCore.beforeIngameGuiRender(partialTicks) 直接插入 GuiIngame.renderGameOverlay(...) 调用之前。但当 Angelica 的 HUDCaching 启用时,renderGameOverlay 整体被早退跳过,Xaeros 的钩子也不再被调用——导致 minimap 在 HUD 缓存命中时不更新玩家位置标记。
MixinCompatHackTweaker 在启动期反射移除 Xaeros GuiIngameForgeTransformer,但移除了就没法补回 Xaeros 的钩子。本 Mixin 即"补回"步骤:
- 直接在
EntityRenderer.updateCameraAndRender中注入XaeroMinimapCore.beforeIngameGuiRender(partialTicks)调用,与原 Xaeros 钩子位置完全相同; - 仅当
mc.ingameGUI instanceof GuiIngameForge(即 Forge 包装过的 HUD)时才执行; - 仅当
ModStatus.isXaerosMinimapLoaded为 true(即Loader.isModLoaded("XaeroMinimap"))时才执行。
注入代码
@Inject(
method = "updateCameraAndRender",
at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/GuiIngame;renderGameOverlay(FZII)V"))
public void angelicacompat$callXaeros(CallbackInfo ci, @Local(ordinal = 0) float partialTicks) {
if (ModStatus.isXaerosMinimapLoaded && mc.ingameGUI instanceof GuiIngameForge) {
XaeroMinimapCore.beforeIngameGuiRender(partialTicks);
}
}
@Local(ordinal = 0) float partialTicks:通过 MixinExtras 注入 partialTicks 局部变量,等价于原 Xaeros transformer 把它从方法参数捕获出来。
第三方 mod 集成
| 依赖 | 包 | 是否必需 |
|---|---|---|
xaeros.common.core.XaeroMinimapCore |
xaero.common.core |
是(注入时直接调用其静态方法) |
net.minecraftforge.client.GuiIngameForge |
Forge | 是(instanceof 检查) |
相关条目
- MixinCompatHackTweaker - 移除 Xaeros transformer 的反射代码
- ModStatus -
isXaerosMinimapLoaded字段来源 - PatchesConfig -
patchXaerosMinimap开关 - MixinRenderBlockCampfire - 同样需要
@ThreadSafeISBRH配合的另一个 Mixin - EarlyMixins/Mixins 枚举 - Mixin 注册入口