aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2024-04-07 03:10:33 -0400
committerAaron <51387595+AzureAaron@users.noreply.github.com>2024-04-07 03:10:33 -0400
commit200ad222960b8322495a2e4c29e46432ccc49cdf (patch)
treef6144b0d016c3452f12f129da34704c61d156843
parentdd9aa31e71c82b7804d62dd5a1bb1cd2de93f6ba (diff)
downloadSkyblocker-200ad222960b8322495a2e4c29e46432ccc49cdf.tar.gz
Skyblocker-200ad222960b8322495a2e4c29e46432ccc49cdf.tar.bz2
Skyblocker-200ad222960b8322495a2e4c29e46432ccc49cdf.zip
Show mod icon beside name and version text
-rw-r--r--src/main/java/de/hysky/skyblocker/InfoScreen.java43
1 files changed, 42 insertions, 1 deletions
diff --git a/src/main/java/de/hysky/skyblocker/InfoScreen.java b/src/main/java/de/hysky/skyblocker/InfoScreen.java
index fd2baca9..cbbe7ab0 100644
--- a/src/main/java/de/hysky/skyblocker/InfoScreen.java
+++ b/src/main/java/de/hysky/skyblocker/InfoScreen.java
@@ -4,6 +4,7 @@ import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.utils.scheduler.Scheduler;
import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
+import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.ConfirmLinkScreen;
import net.minecraft.client.gui.screen.Screen;
@@ -12,13 +13,18 @@ import net.minecraft.client.gui.widget.GridWidget;
import net.minecraft.client.gui.widget.TextWidget;
import net.minecraft.client.gui.widget.ThreePartsLayoutWidget;
import net.minecraft.screen.ScreenTexts;
+import net.minecraft.text.OrderedText;
+import net.minecraft.text.StringVisitable;
import net.minecraft.text.Text;
+import net.minecraft.util.Identifier;
+import net.minecraft.util.Language;
public class InfoScreen extends Screen {
private static final int SPACING = 8;
private static final int BUTTON_WIDTH = 210;
private static final int HALF_BUTTON_WIDTH = 101; //Same as (210 - 8) / 2
private static final Text TITLE = Text.literal("Skyblocker " + SkyblockerMod.VERSION);
+ private static final Identifier ICON = new Identifier(SkyblockerMod.NAMESPACE, "icon.png");
private static final Text CONFIGURATION_TEXT = Text.translatable("text.skyblocker.config");
private static final Text SOURCE_TEXT = Text.translatable("text.skyblocker.source");
private static final Text REPORT_BUGS_TEXT = Text.translatable("menu.reportBugs");
@@ -41,7 +47,7 @@ public class InfoScreen extends Screen {
@Override
protected void init() {
- this.layout.addHeader(new TextWidget(this.getTitle(), this.textRenderer));
+ this.layout.addHeader(new IconTextWidget(this.getTitle(), this.textRenderer, ICON));
GridWidget gridWidget = this.layout.addBody(new GridWidget()).setSpacing(SPACING);
gridWidget.getMainPositioner().alignHorizontalCenter();
@@ -74,4 +80,39 @@ public class InfoScreen extends Screen {
this.renderBackground(context, mouseX, mouseY, delta);
super.render(context, mouseX, mouseY, delta);
}
+
+ private static class IconTextWidget extends TextWidget {
+ private final Identifier icon;
+
+ IconTextWidget(Text message, TextRenderer textRenderer, Identifier icon) {
+ super(message, textRenderer);
+ this.icon = icon;
+ }
+
+ @Override
+ public void renderWidget(DrawContext context, int mouseX, int mouseY, float delta) {
+ Text text = this.getMessage();
+ TextRenderer textRenderer = this.getTextRenderer();
+
+ int width = this.getWidth();
+ int textWidth = textRenderer.getWidth(text);
+ float horizontalAlignment = 0.5f; // default
+ //17 = (32 + 2) / 2 • 32 + 2 is the width of the icon + spacing between icon and text
+ int x = this.getX() + 17 + Math.round(horizontalAlignment * (float) (width - textWidth));
+ int y = this.getY() + (this.getHeight() - textRenderer.fontHeight) / 2;
+ OrderedText orderedText = textWidth > width ? this.trim(text, width) : text.asOrderedText();
+
+ int iconX = x - 34;
+ int iconY = y - 13;
+
+ context.drawTextWithShadow(textRenderer, orderedText, x, y, this.getTextColor());
+ context.drawTexture(this.icon, iconX, iconY, 0, 0, 32, 32, 32, 32);
+ }
+
+ private OrderedText trim(Text text, int width) {
+ TextRenderer textRenderer = this.getTextRenderer();
+ StringVisitable stringVisitable = textRenderer.trimToWidth(text, width - textRenderer.getWidth(ScreenTexts.ELLIPSIS));
+ return Language.getInstance().reorder(StringVisitable.concat(stringVisitable, ScreenTexts.ELLIPSIS));
+ }
+ }
}