mirror of
https://github.com/GTNewHorizons/Angelica.git
synced 2026-10-25 20:22:22 +00:00
use mixin to change the f3 text background instead of canceling the event (#1537)
This commit is contained in:
1 parent
a3f0efd629
commit
465e36148c
3 files changed
+42
-31
No files matched your search
@@ -41,6 +41,7 @@ public enum Mixins implements IMixins {
|
||||
, "angelica.gui.MixinGuiOptions"
|
||||
, "angelica.optimizations.MixinRendererLivingEntity"
|
||||
, "angelica.rendering.MixinRenderGlobal_SelectionBox"
|
||||
, "angelica.gui.MixinGuiIngameForge_ModernF3"
|
||||
)
|
||||
),
|
||||
|
||||
|
||||
@@ -46,12 +46,9 @@ import net.coderbot.iris.Iris;
|
||||
import net.coderbot.iris.client.IrisDebugScreenHandler;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.FontRenderer;
|
||||
import net.minecraft.client.gui.Gui;
|
||||
import net.minecraft.client.gui.GuiMainMenu;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.client.gui.GuiVideoSettings;
|
||||
import net.minecraft.client.gui.ScaledResolution;
|
||||
import net.minecraft.client.network.NetHandlerPlayClient;
|
||||
import net.minecraft.client.settings.GameSettings;
|
||||
import net.minecraft.client.settings.KeyBinding;
|
||||
@@ -204,7 +201,7 @@ public class ClientProxy extends CommonProxy {
|
||||
|
||||
@SubscribeEvent(priority = EventPriority.LOWEST)
|
||||
public void onRenderOverlay(RenderGameOverlayEvent.Pre event) {
|
||||
if (event.isCanceled() || !mc.gameSettings.showDebugInfo) return;
|
||||
if (!mc.gameSettings.showDebugInfo) return;
|
||||
if (AngelicaConfig.modernizeF3Screen && event.type == RenderGameOverlayEvent.ElementType.CROSSHAIRS) {
|
||||
F3Direction.renderWorldDirectionsEvent(mc, event);
|
||||
event.setCanceled(true);
|
||||
@@ -214,7 +211,7 @@ public class ClientProxy extends CommonProxy {
|
||||
@SubscribeEvent(priority = EventPriority.LOWEST)
|
||||
public void onRenderOverlay(RenderGameOverlayEvent.Text event) {
|
||||
Minecraft mc = Minecraft.getMinecraft();
|
||||
if (event.isCanceled() || !mc.gameSettings.showDebugInfo || event.left.isEmpty()) return;
|
||||
if (!mc.gameSettings.showDebugInfo || event.left.isEmpty()) return;
|
||||
|
||||
NetHandlerPlayClient cl = mc.getNetHandler();
|
||||
if (cl != null) {
|
||||
@@ -281,32 +278,6 @@ public class ClientProxy extends CommonProxy {
|
||||
chunk.getBlockLightValue(bX & 15, MathHelper.clamp_int(bY, 0, 255), bZ & 15, 0)));
|
||||
}
|
||||
}
|
||||
event.setCanceled(true);
|
||||
// TODO don't cancel the event and render here,
|
||||
// instead mixin into the vanilla code and add a background to it
|
||||
/* render ourselves for modern background */
|
||||
FontRenderer fontrenderer = mc.fontRenderer;
|
||||
int fontColor = 0xe0e0e0;
|
||||
int rectColor = 0x90505050;
|
||||
for (int x = 0; x < event.left.size(); x++) {
|
||||
String msg = event.left.get(x);
|
||||
if (msg == null) continue;
|
||||
int strX = 2;
|
||||
int strY = 2 + x * fontrenderer.FONT_HEIGHT;
|
||||
Gui.drawRect(1, strY - 1, strX + fontrenderer.getStringWidth(msg) + 1, strY + fontrenderer.FONT_HEIGHT - 1, rectColor);
|
||||
fontrenderer.drawString(msg, strX, strY, fontColor);
|
||||
}
|
||||
int width = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight).getScaledWidth();
|
||||
for (int x = 0; x < event.right.size(); x++) {
|
||||
String msg = event.right.get(x);
|
||||
if (msg == null) continue;
|
||||
int w = fontrenderer.getStringWidth(msg);
|
||||
int strX = width - w - 2;
|
||||
int strY = 2 + x * fontrenderer.FONT_HEIGHT;
|
||||
Gui.drawRect(strX - 1, strY - 1, strX + w + 1, strY + fontrenderer.FONT_HEIGHT - 1, rectColor);
|
||||
fontrenderer.drawString(msg, strX, strY, fontColor);
|
||||
}
|
||||
|
||||
// Draw a frametime graph
|
||||
if (((IGameSettingsExt)mc.gameSettings).angelica$showFpsGraph()) {
|
||||
frametimeGraph.render();
|
||||
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
package com.gtnewhorizons.angelica.mixins.early.angelica.gui;
|
||||
|
||||
import net.minecraft.client.gui.FontRenderer;
|
||||
import net.minecraft.client.gui.Gui;
|
||||
import net.minecraftforge.client.GuiIngameForge;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
||||
@Mixin(GuiIngameForge.class)
|
||||
public class MixinGuiIngameForge_ModernF3 {
|
||||
|
||||
@Redirect(
|
||||
method = "renderHUDText",
|
||||
remap = false,
|
||||
at = @At(
|
||||
value = "INVOKE",
|
||||
target = "Lnet/minecraft/client/gui/FontRenderer;drawStringWithShadow(Ljava/lang/String;III)I",
|
||||
ordinal = 0,
|
||||
remap = true))
|
||||
private int renderBackgroundLeft(FontRenderer fontRenderer, String text, int x, int y, int color) {
|
||||
Gui.drawRect(x - 1, y - 1, x + fontRenderer.getStringWidth(text) + 1, y + fontRenderer.FONT_HEIGHT, 0x90505050);
|
||||
return fontRenderer.drawString(text, x, y, 0xe0e0e0);
|
||||
}
|
||||
|
||||
@Redirect(
|
||||
method = "renderHUDText",
|
||||
remap = false,
|
||||
at = @At(
|
||||
value = "INVOKE",
|
||||
target = "Lnet/minecraft/client/gui/FontRenderer;drawStringWithShadow(Ljava/lang/String;III)I",
|
||||
ordinal = 1,
|
||||
remap = true))
|
||||
private int renderBackgroundRight(FontRenderer fontRenderer, String text, int x, int y, int color) {
|
||||
x += 8;
|
||||
Gui.drawRect(x - 1, y - 1, x + fontRenderer.getStringWidth(text) + 1, y + fontRenderer.FONT_HEIGHT, 0x90505050);
|
||||
return fontRenderer.drawString(text, x, y, 0xe0e0e0);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user