diff options
author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2024-04-07 03:10:33 -0400 |
---|---|---|
committer | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2024-04-07 03:10:33 -0400 |
commit | 200ad222960b8322495a2e4c29e46432ccc49cdf (patch) | |
tree | f6144b0d016c3452f12f129da34704c61d156843 /src/main | |
parent | dd9aa31e71c82b7804d62dd5a1bb1cd2de93f6ba (diff) | |
download | Skyblocker-200ad222960b8322495a2e4c29e46432ccc49cdf.tar.gz Skyblocker-200ad222960b8322495a2e4c29e46432ccc49cdf.tar.bz2 Skyblocker-200ad222960b8322495a2e4c29e46432ccc49cdf.zip |
Show mod icon beside name and version text
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/InfoScreen.java | 43 |
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)); + } + } } |