From 16125a567e77d1934217bf6da08132ca69758950 Mon Sep 17 00:00:00 2001 From: Brady Date: Fri, 3 May 2024 07:56:20 -0230 Subject: Fix chroma not applying alpha correctly (#1660) --- .../skyhanni/mixins/hooks/FontRendererHook.kt | 50 ++++++++-------------- .../mixins/transformers/MixinFontRenderer.java | 2 +- 2 files changed, 18 insertions(+), 34 deletions(-) (limited to 'src/main/java/at/hannibal2/skyhanni/mixins') diff --git a/src/main/java/at/hannibal2/skyhanni/mixins/hooks/FontRendererHook.kt b/src/main/java/at/hannibal2/skyhanni/mixins/hooks/FontRendererHook.kt index 881a1c42a..ccdb69cdb 100644 --- a/src/main/java/at/hannibal2/skyhanni/mixins/hooks/FontRendererHook.kt +++ b/src/main/java/at/hannibal2/skyhanni/mixins/hooks/FontRendererHook.kt @@ -2,11 +2,9 @@ package at.hannibal2.skyhanni.mixins.hooks import at.hannibal2.skyhanni.features.chroma.ChromaFontRenderer import at.hannibal2.skyhanni.features.chroma.ChromaManager -import at.hannibal2.skyhanni.mixins.transformers.AccessorFontRenderer import at.hannibal2.skyhanni.utils.LorenzUtils -import net.minecraft.client.Minecraft +import at.hannibal2.skyhanni.utils.RenderUtils import net.minecraft.client.renderer.GlStateManager -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo /** * Object to handle chroma font states from handler methods from MixinFontRenderer @@ -17,6 +15,9 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo */ object FontRendererHook { + private const val CHROMA_FORMAT_INDEX = 22 + private const val WHITE_FORMAT_INDEX = 15 + private var CHROMA_COLOR: Int = -0x1 private val DRAW_CHROMA = ChromaFontRenderer(CHROMA_COLOR) private var CHROMA_COLOR_SHADOW: Int = -0xAAAAAB @@ -74,22 +75,15 @@ object FontRendererHook { setupChromaFont() } - val alpha = (Minecraft.getMinecraft().fontRendererObj as AccessorFontRenderer).alpha - if (shadow) { - currentDrawState = DRAW_CHROMA_SHADOW - CHROMA_COLOR_SHADOW = ((255 * alpha).toInt() shl 24 or 0x555555) - } else { - currentDrawState = DRAW_CHROMA - CHROMA_COLOR = ((255 * alpha).toInt() shl 24 or 0xFFFFFF) - } + currentDrawState = if (shadow) DRAW_CHROMA_SHADOW else DRAW_CHROMA // Best feature ngl if (ChromaManager.config.allChroma) { // Handles setting the base color of text when they don't use color codes i.e. MoulConfig if (shadow) { - GlStateManager.color(0.33f, 0.33f, 0.33f, 1f) + GlStateManager.color(0.33f, 0.33f, 0.33f, RenderUtils.getAlpha()) } else { - GlStateManager.color(1f, 1f, 1f, 1f) + GlStateManager.color(1f, 1f, 1f, RenderUtils.getAlpha()) } setupChromaFont() } @@ -101,23 +95,21 @@ object FontRendererHook { fun toggleChromaOn() { if (!LorenzUtils.inSkyBlock) return - currentDrawState?.newChromaEnv()?.bindActualColor() + currentDrawState?.newChromaEnv()?.bindActualColor(RenderUtils.getAlpha()) } @JvmStatic - fun forceWhiteColorCode(i1: Int): Int { - if (!LorenzUtils.inSkyBlock) return i1 + fun forceWhiteColorCode(formatIndex: Int): Int { + if (!LorenzUtils.inSkyBlock) return formatIndex - if (!ChromaManager.config.enabled) return i1 + if (!ChromaManager.config.enabled) return formatIndex - val drawState = currentDrawState ?: return i1 - if (drawState.getChromaState()) { - if (i1 < 16) { - return 15 - } + val drawState = currentDrawState ?: return formatIndex + if (drawState.getChromaState() && formatIndex <= WHITE_FORMAT_INDEX) { // If it's a color code + return WHITE_FORMAT_INDEX } - return i1 + return formatIndex } @JvmStatic @@ -148,19 +140,11 @@ object FontRendererHook { return if (LorenzUtils.inSkyBlock && !ChromaManager.config.enabled) constant else "0123456789abcdefklmnorz" } - // TODO add better parameter names @JvmStatic - fun toggleChromaCondition_shouldResetStyles( - text: String, - shadow: Boolean, - ci: CallbackInfo, - i: Int, - c0: Char, - i1: Int, - ): Boolean { + fun toggleChromaAndResetStyle(formatIndex: Int): Boolean { if (!LorenzUtils.inSkyBlock) return false if (!ChromaManager.config.enabled) return false - if (i1 == 22) { + if (formatIndex == CHROMA_FORMAT_INDEX) { toggleChromaOn() return true } diff --git a/src/main/java/at/hannibal2/skyhanni/mixins/transformers/MixinFontRenderer.java b/src/main/java/at/hannibal2/skyhanni/mixins/transformers/MixinFontRenderer.java index b8a759ed0..3e6d049ca 100644 --- a/src/main/java/at/hannibal2/skyhanni/mixins/transformers/MixinFontRenderer.java +++ b/src/main/java/at/hannibal2/skyhanni/mixins/transformers/MixinFontRenderer.java @@ -52,7 +52,7 @@ public abstract class MixinFontRenderer { */ @Inject(method = "renderStringAtPos", at = @At(value = "INVOKE", target = "Ljava/lang/String;indexOf(I)I", ordinal = 0, shift = At.Shift.BY, by = 2), locals = LocalCapture.CAPTURE_FAILHARD) public void toggleChromaCondition(String text, boolean shadow, CallbackInfo ci, int i, char c0, int i1) { - if (FontRendererHook.toggleChromaCondition_shouldResetStyles(text, shadow, ci, i, c0, i1)) { + if (FontRendererHook.toggleChromaAndResetStyle(i1)) { this.resetStyles(); } } -- cgit