diff --git a/common/src/main/java/org/saturnclient/common/minecraft/MinecraftProvider.java b/common/src/main/java/org/saturnclient/common/minecraft/MinecraftProvider.java index fa4bd7e..367acf1 100644 --- a/common/src/main/java/org/saturnclient/common/minecraft/MinecraftProvider.java +++ b/common/src/main/java/org/saturnclient/common/minecraft/MinecraftProvider.java @@ -10,4 +10,6 @@ public abstract class MinecraftProvider { public abstract boolean isKeyPressed(int key); public abstract File getRunDirectory(); + + public abstract int getWidth(String text, int font); } diff --git a/common/src/main/java/org/saturnclient/common/minecraft/bindings/SaturnIdentifier.java b/common/src/main/java/org/saturnclient/common/minecraft/bindings/SaturnIdentifier.java index 7bd08de..bd7a77e 100644 --- a/common/src/main/java/org/saturnclient/common/minecraft/bindings/SaturnIdentifier.java +++ b/common/src/main/java/org/saturnclient/common/minecraft/bindings/SaturnIdentifier.java @@ -7,4 +7,12 @@ public class SaturnIdentifier extends MinecraftBinding { public SaturnIdentifier(String namespace, String path) { super(MinecraftProvider.PROVIDER.createIdentifier(namespace, path)); } + + public static SaturnIdentifier of(String namespace, String path) { + return new SaturnIdentifier(namespace, path); + } + + public static SaturnIdentifier ofVanilla(String path) { + return new SaturnIdentifier("minecraft", path); + } } diff --git a/common/src/main/java/org/saturnclient/ui/resources/Fonts.java b/common/src/main/java/org/saturnclient/ui/resources/Fonts.java new file mode 100644 index 0000000..3e935b6 --- /dev/null +++ b/common/src/main/java/org/saturnclient/ui/resources/Fonts.java @@ -0,0 +1,45 @@ +package org.saturnclient.ui.resources; + +import org.saturnclient.common.minecraft.MinecraftProvider; +import org.saturnclient.common.minecraft.bindings.SaturnIdentifier; + +public class Fonts { + public static final SaturnIdentifier INTER = SaturnIdentifier.of("saturnclient", "inter"); + public static final SaturnIdentifier INTER_BOLD = SaturnIdentifier.of("saturnclient", "inter_bold"); + public static final SaturnIdentifier DEFAULT = SaturnIdentifier.ofVanilla("default"); + + public static SaturnIdentifier getFont(int font) { + switch (font) { + case 0: + return DEFAULT; + case 1: + return INTER; + default: + return INTER_BOLD; + } + } + + public static int getWidth(String text, int font) { + int w = 0; + for (String line : text.split("\n")) { + w = Math.max(w, MinecraftProvider.PROVIDER.getWidth(line, font)); + } + if (font == 0) { + return w * 2; + } else { + return w; + } + } + + public static int getHeight() { + return 18; + } + + public static int centerX(int w, String text, int font) { + return (w - Fonts.getWidth(text, font)) / 2; + } + + public static int centerY(int h) { + return (h - 18) / 2; + } +} diff --git a/versions/1.21.4/src/main/java/org/saturnclient/ui/resources/Fonts.java b/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/impl/Fonts.java similarity index 94% rename from versions/1.21.4/src/main/java/org/saturnclient/ui/resources/Fonts.java rename to versions/1.21.4/src/main/java/org/saturnclient/saturnclient/impl/Fonts.java index 55c2593..7d2b0fa 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/ui/resources/Fonts.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/impl/Fonts.java @@ -1,4 +1,4 @@ -package org.saturnclient.ui.resources; +package org.saturnclient.saturnclient.impl; import org.saturnclient.saturnclient.SaturnClient; import net.minecraft.text.Style; @@ -20,10 +20,10 @@ public class Fonts { return INTER_BOLD; } } - + public static Text setFont(String text, Identifier font) { return Text.literal(text).setStyle( - Style.EMPTY.withFont(font)); + Style.EMPTY.withFont(font)); } public static int getWidth(String text, int font) { diff --git a/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/impl/SaturnClientProvider.java b/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/impl/SaturnClientProvider.java index 8933b23..579a3b8 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/impl/SaturnClientProvider.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/impl/SaturnClientProvider.java @@ -24,4 +24,9 @@ public class SaturnClientProvider extends MinecraftProvider { return GLFW.glfwGetKey(SaturnClient.client.getWindow().getHandle(), key) == GLFW.GLFW_PRESS && SaturnClient.client.currentScreen == null; } + + @Override + public int getWidth(String text, int font) { + return Fonts.getWidth(text, font); + } }