From b42a15f291bae15a9dd30287c5a8b591caf3bafd Mon Sep 17 00:00:00 2001 From: UnlikePaladin <36827970+UnlikePaladin@users.noreply.github.com> Date: Sun, 10 Dec 2023 00:20:51 -0600 Subject: [PATCH] Fix incorrect background colors on text tasks --- .../figuramc/figura/model/rendertasks/TextTask.java | 2 +- .../java/org/figuramc/figura/utils/ColorUtils.java | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/org/figuramc/figura/model/rendertasks/TextTask.java b/common/src/main/java/org/figuramc/figura/model/rendertasks/TextTask.java index 4303ba60a..82f929581 100644 --- a/common/src/main/java/org/figuramc/figura/model/rendertasks/TextTask.java +++ b/common/src/main/java/org/figuramc/figura/model/rendertasks/TextTask.java @@ -61,7 +61,7 @@ public void render(PoseStack poseStack, MultiBufferSource buffer, int light, int // prepare variables Font font = Minecraft.getInstance().font; int l = this.customization.light != null ? this.customization.light : light; - int bg = backgroundColor != null ? backgroundColor : background ? (int) (Minecraft.getInstance().options.getBackgroundOpacity(0.25f) * 0xFF) << 24 : 0; + int bg = backgroundColor != null ? ColorUtils.intRGBAToIntARGB(backgroundColor) : background ? (int) (Minecraft.getInstance().options.getBackgroundOpacity(0.25f) * 0xFF) << 24 : 0; int out = outlineColor != null ? outlineColor : 0x202020; int op = opacity << 24 | 0xFFFFFF; Font.DisplayMode displayMode = seeThrough ? Font.DisplayMode.SEE_THROUGH : Font.DisplayMode.POLYGON_OFFSET; diff --git a/common/src/main/java/org/figuramc/figura/utils/ColorUtils.java b/common/src/main/java/org/figuramc/figura/utils/ColorUtils.java index a1fcde646..ca6f9df79 100644 --- a/common/src/main/java/org/figuramc/figura/utils/ColorUtils.java +++ b/common/src/main/java/org/figuramc/figura/utils/ColorUtils.java @@ -207,6 +207,16 @@ public static int rgbaToIntARGB(FiguraVec4 rgba) { return hex; } + // This actually seems to storing BGAR this whole file is a lie, but i will just play along... + public static int intRGBAToIntARGB(int hexRGBA) { + int green = (hexRGBA >> 16) & 0xFF; + int blue = (hexRGBA >> 8) & 0xFF; + int alpha = hexRGBA & 0xFF; + int red = (hexRGBA >> 24) & 0xFF; + + return ((alpha << 24) | (red << 16) | (green << 8) | blue); + } + public static int rgbaToInt(FiguraVec4 rgba) { int hex = (int) (rgba.x * 0xFF); hex = (hex << 8) + (int) (rgba.y * 0xFF);