From a55c09b103330f9d098592434f7dd88692a7112c Mon Sep 17 00:00:00 2001 From: Shiewk Date: Tue, 16 Dec 2025 17:13:01 +0100 Subject: [PATCH] (2.1.1) Fix the text offset on BasicTextWidget (#5) --- gradle.properties | 2 +- .../widgets/widgets/BasicTextWidget.java | 22 ++++++++++++++----- .../widgets/widgets/ResizableWidget.java | 2 +- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/gradle.properties b/gradle.properties index 9903569..7b04aae 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ minecraft_version=1.21.9 yarn_mappings=1.21.9+build.1 loader_version=0.17.2 # Mod Properties -mod_version=2.1.0 +mod_version=2.1.1 maven_group=de.shiewk archives_base_name=Widgets # Dependencies diff --git a/src/main/java/de/shiewk/widgets/widgets/BasicTextWidget.java b/src/main/java/de/shiewk/widgets/widgets/BasicTextWidget.java index 4290215..8bd8c6b 100644 --- a/src/main/java/de/shiewk/widgets/widgets/BasicTextWidget.java +++ b/src/main/java/de/shiewk/widgets/widgets/BasicTextWidget.java @@ -11,6 +11,7 @@ import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.text.Text; import net.minecraft.util.Identifier; +import org.joml.Matrix3x2fStack; import java.awt.*; import java.util.List; @@ -60,8 +61,8 @@ public abstract class BasicTextWidget extends ResizableWidget { protected Text renderText = empty(); protected boolean shouldRender = true; - private int textX = 0; - private int textY = 0; + private float textX = 0; + private float textY = 0; private int padding = 0; private TextRenderer renderer = null; private boolean textShadow = true; @@ -114,7 +115,11 @@ public abstract class BasicTextWidget extends ResizableWidget { if (!shouldRender) return; renderer = textRenderer; context.fill(posX, posY, posX + width(), posY + height(), this.backgroundColor); - context.drawText(textRenderer, renderText, posX + textX, posY + (textShadow ? textY : textY + 1), rainbow ? rainbowColor(n, rainbowSpeed) : this.textColor, textShadow); + Matrix3x2fStack matrices = context.getMatrices() + .pushMatrix(); + matrices.translate(posX + textX, posY + textY, matrices); + context.drawText(textRenderer, renderText, 0, 0, rainbow ? rainbowColor(n, rainbowSpeed) : this.textColor, textShadow); + matrices.popMatrix(); } public static int rainbowColor(long n, float speed) { @@ -128,11 +133,18 @@ public abstract class BasicTextWidget extends ResizableWidget { int textWidth = renderer.getWidth(renderText); switch (textAlignment){ case LEFT -> textX = padding; - case CENTER -> textX = width() / 2 - textWidth / 2; + case CENTER -> { + if (textShadow){ + textX = (width() - textWidth) / 2f; + } else { + textX = (width() - textWidth + 1) / 2f; + } + } case RIGHT -> textX = width() - padding - textWidth; } + float textHeight = textShadow ? 8 : 7; + textY = (height() - textHeight) / 2f; } - textY = (height-9) / 2; } protected void formatAndSetRenderText(Text renderText) { diff --git a/src/main/java/de/shiewk/widgets/widgets/ResizableWidget.java b/src/main/java/de/shiewk/widgets/widgets/ResizableWidget.java index de79888..2eab8e2 100644 --- a/src/main/java/de/shiewk/widgets/widgets/ResizableWidget.java +++ b/src/main/java/de/shiewk/widgets/widgets/ResizableWidget.java @@ -25,7 +25,7 @@ public abstract class ResizableWidget extends ModWidget { return settings; } - private float size = 1f; + protected float size = 1f; @Override public final void render(DrawContext context, long measuringTimeNano, TextRenderer textRenderer, int posX, int posY) {