From c22a9ff5ae5fa167beac9df3ac06546cffce68f8 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Sun, 8 Mar 2026 02:30:47 +0100 Subject: [PATCH] Implemented text interface --- common | 2 +- .../java/org/saturnclient/impl/Fonts.java | 57 ------------------- .../saturnclient/impl/mixins/TextMixin.java | 24 ++++++++ .../{ => provider}/FabricModuleProvider.java | 2 +- .../impl/provider/RefConstructorImpl.java | 7 +++ .../impl/provider/SaturnProviderImpl.java | 6 -- .../saturnclient/SaturnClient.java | 2 +- .../org/saturnclient/ui/EntityDrawerImpl.java | 13 +++-- .../org/saturnclient/ui/RenderScopeImpl.java | 3 +- 9 files changed, 43 insertions(+), 73 deletions(-) delete mode 100644 versions/1.21.4/src/main/java/org/saturnclient/impl/Fonts.java create mode 100644 versions/1.21.4/src/main/java/org/saturnclient/impl/mixins/TextMixin.java rename versions/1.21.4/src/main/java/org/saturnclient/impl/{ => provider}/FabricModuleProvider.java (96%) diff --git a/common b/common index 7eb705d..48494cd 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 7eb705d80206a286152f21404462ff33f5bb371c +Subproject commit 48494cd8574ce7f20213254e6660a7f48540c899 diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/Fonts.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/Fonts.java deleted file mode 100644 index 4b7c388..0000000 --- a/versions/1.21.4/src/main/java/org/saturnclient/impl/Fonts.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.saturnclient.impl; - -import org.saturnclient.saturnclient.SaturnClient; -import net.minecraft.text.Style; -import net.minecraft.text.Text; -import net.minecraft.util.Identifier; - -public class Fonts { - public static final Identifier INTER = Identifier.of("saturnclient", "inter"); - public static final Identifier INTER_BOLD = Identifier.of("saturnclient", "inter_bold"); - public static final Identifier DEFAULT = Identifier.ofVanilla("default"); - - public static Identifier getFont(int font) { - switch (font) { - case 0: - return DEFAULT; - case 1: - return INTER; - default: - return INTER_BOLD; - } - } - - public static Text setFont(String text, Identifier font) { - return Text.literal(text).setStyle( - Style.EMPTY.withFont(font)); - } - - public static Text setFont(String text, int font) { - return Text.literal(text).setStyle( - Style.EMPTY.withFont(getFont(font))); - } - - public static int getWidth(String text, int font) { - int w = 0; - for (String line : text.split("\n")) { - w = Math.max(w, getWidth(line, getFont(font))); - } - return w; - } - - private static int getWidth(String text, Identifier font) { - return SaturnClient.client.textRenderer.getWidth(setFont(text, font)); - } - - 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/impl/mixins/TextMixin.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/mixins/TextMixin.java new file mode 100644 index 0000000..855f623 --- /dev/null +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/mixins/TextMixin.java @@ -0,0 +1,24 @@ +package org.saturnclient.impl.mixins; + +import org.saturnclient.common.ref.asset.IdentifierRef; +import org.saturnclient.common.ref.render.TextRef; +import org.saturnclient.saturnclient.SaturnClient; +import org.spongepowered.asm.mixin.Mixin; + +import net.minecraft.text.Style; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; + +@Mixin(Text.class) +public abstract class TextMixin implements TextRef { + + @Override + public TextRef withFont(IdentifierRef font) { + return (TextRef) (((Text) this).copy().setStyle(Style.EMPTY.withFont((Identifier) (Object) font))); + } + + @Override + public int getWidth() { + return SaturnClient.client.textRenderer.getWidth((Text) this); + } +} diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/FabricModuleProvider.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/provider/FabricModuleProvider.java similarity index 96% rename from versions/1.21.4/src/main/java/org/saturnclient/impl/FabricModuleProvider.java rename to versions/1.21.4/src/main/java/org/saturnclient/impl/provider/FabricModuleProvider.java index cce02b0..6639513 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/impl/FabricModuleProvider.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/provider/FabricModuleProvider.java @@ -1,4 +1,4 @@ -package org.saturnclient.impl; +package org.saturnclient.impl.provider; import org.saturnclient.modules.Module; import org.saturnclient.modules.ModManager.ModuleProvider; diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/provider/RefConstructorImpl.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/provider/RefConstructorImpl.java index 6f4e7dd..cf59bd7 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/impl/provider/RefConstructorImpl.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/provider/RefConstructorImpl.java @@ -2,7 +2,9 @@ package org.saturnclient.impl.provider; import org.saturnclient.common.provider.RefConstructorProvider; import org.saturnclient.common.ref.asset.IdentifierRef; +import org.saturnclient.common.ref.render.TextRef; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; public class RefConstructorImpl implements RefConstructorProvider { @@ -15,4 +17,9 @@ public class RefConstructorImpl implements RefConstructorProvider { public IdentifierRef identifier(String namespace, String path) { return (IdentifierRef) (Object) Identifier.of(namespace, path); } + + @Override + public TextRef text(String text) { + return (TextRef) Text.literal(text); + } } diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/provider/SaturnProviderImpl.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/provider/SaturnProviderImpl.java index ead7467..3a89220 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/impl/provider/SaturnProviderImpl.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/provider/SaturnProviderImpl.java @@ -7,7 +7,6 @@ import org.saturnclient.common.provider.SaturnProvider; import org.saturnclient.common.ref.asset.IdentifierRef; import org.saturnclient.common.ref.game.MinecraftClientRef; import org.saturnclient.cosmetics.cloak.utils.IdentifierUtils; -import org.saturnclient.impl.Fonts; import org.saturnclient.saturnclient.SaturnClient; import net.minecraft.util.Identifier; @@ -24,11 +23,6 @@ public class SaturnProviderImpl implements SaturnProvider { && SaturnClient.client.currentScreen == null; } - @Override - public int getWidth(String text, int font) { - return Fonts.getWidth(text, font); - } - @Override public void registerBufferedImageTexture(IdentifierRef i, BufferedImage bi) { IdentifierUtils.registerBufferedImageTextureFast((Identifier) (Object) i, bi); diff --git a/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/SaturnClient.java b/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/SaturnClient.java index bfde58f..b6b9fd9 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/SaturnClient.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/SaturnClient.java @@ -11,7 +11,7 @@ import org.saturnclient.cosmetics.Hats; import org.saturnclient.cosmetics.cloak.Cloaks; import org.saturnclient.common.bindings.SaturnClientBindings; import org.saturnclient.common.provider.Providers; -import org.saturnclient.impl.FabricModuleProvider; +import org.saturnclient.impl.provider.FabricModuleProvider; import org.saturnclient.impl.provider.RefConstructorImpl; import org.saturnclient.impl.provider.SaturnProviderImpl; import org.saturnclient.modules.ModManager; diff --git a/versions/1.21.4/src/main/java/org/saturnclient/ui/EntityDrawerImpl.java b/versions/1.21.4/src/main/java/org/saturnclient/ui/EntityDrawerImpl.java index b57eb22..1204db2 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/ui/EntityDrawerImpl.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/ui/EntityDrawerImpl.java @@ -59,12 +59,13 @@ public class EntityDrawerImpl implements EntityDrawer { EntityRenderDispatcher entityRenderDispatcher = SaturnClient.client.getEntityRenderDispatcher(); entityRenderDispatcher.setRenderShadows(false); - // TODO add the method draw with vertex consumers - // renderScope.draw((vertexConsumers) -> { - // entityRenderDispatcher.render(entity, 0.0, 0.0, 0.0, 1.0F, - // renderScope.getMatrixStack(), vertexConsumers, - // 15728880); - // }); + if (renderScope instanceof RenderScopeImpl r) { + r.draw((vertexConsumers) -> { + entityRenderDispatcher.render(entity, 0.0, 0.0, 0.0, 1.0F, + r.matrices, vertexConsumers, + 15728880); + }); + } renderScope.draw(); entityRenderDispatcher.setRenderShadows(true); renderScope.getMatrixStack().pop(); diff --git a/versions/1.21.4/src/main/java/org/saturnclient/ui/RenderScopeImpl.java b/versions/1.21.4/src/main/java/org/saturnclient/ui/RenderScopeImpl.java index 361bbfe..1955070 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/ui/RenderScopeImpl.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/ui/RenderScopeImpl.java @@ -36,6 +36,7 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.LivingEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ModelTransformationMode; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.minecraft.util.crash.CrashException; import net.minecraft.util.crash.CrashReport; @@ -130,7 +131,7 @@ public class RenderScopeImpl implements RenderScope { matrices.translate(x, y + (i * Fonts.getHeight()), 0); matrices.scale(scale, scale, 1.0f); TextRenderer textRenderer = SaturnClient.client.textRenderer; - textRenderer.draw(org.saturnclient.impl.Fonts.setFont(line, font), 0, + textRenderer.draw((Text) Fonts.setFont(line, font), 0, font == 0 ? 1 : 7, color, false, this.matrices.peek().getPositionMatrix(), this.vertexConsumers, TextLayerType.NORMAL, 0, 15728880);