From a02653c5abab8a3de6edbd5e492edd52a6f5b3c9 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Fri, 6 Mar 2026 12:39:49 +0100 Subject: [PATCH] Working UI --- .../common/minecraft/bindings/SaturnIdentifier.java | 9 +++++++++ .../org/saturnclient/ui/elements/ImageTexture.java | 11 ++++++++--- .../java/org/saturnclient/ui/RenderScopeImpl.java | 7 +++++-- 3 files changed, 22 insertions(+), 5 deletions(-) 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 45971ef..efcc765 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 @@ -8,6 +8,10 @@ public class SaturnIdentifier extends MinecraftBinding { super(MinecraftProvider.PROVIDER.createIdentifier(namespace, path)); } + public SaturnIdentifier(Object o) { + super(o); + } + public static SaturnIdentifier of(String namespace, String path) { return new SaturnIdentifier(namespace, path); } @@ -21,4 +25,9 @@ public class SaturnIdentifier extends MinecraftBinding { public static SaturnIdentifier ofVanilla(String path) { return new SaturnIdentifier("minecraft", path); } + + @Override + public String toString() { + return this.inner.toString(); + } } diff --git a/common/src/main/java/org/saturnclient/ui/elements/ImageTexture.java b/common/src/main/java/org/saturnclient/ui/elements/ImageTexture.java index 45b52ba..f10447f 100644 --- a/common/src/main/java/org/saturnclient/ui/elements/ImageTexture.java +++ b/common/src/main/java/org/saturnclient/ui/elements/ImageTexture.java @@ -20,14 +20,19 @@ public class ImageTexture extends Element { if (sprite.toString().endsWith(".svg")) { IMinecraftClient client = MinecraftProvider.PROVIDER.getClient(); - // Get the actual window pixel dimensions for the image int renderWidth = (int) (width * client.getWindow().getFramebufferWidth() / client.getWindow().getWidth()); int renderHeight = (int) (height * client.getWindow().getFramebufferHeight() / client.getWindow().getHeight()); - sprite = SvgTexture.getSvg(client, sprite, renderWidth * 2, renderHeight * 2); + SaturnIdentifier pngId = SvgTexture.getSvg(client, sprite, renderWidth * 2, renderHeight * 2); + + this.sprite = pngId; + if (pngId == null) { + System.err.println("Failed to render SVG: " + sprite); + return; + } } - renderScope.drawTexture(sprite, 0, 0, 0, 0, width, height); + renderScope.drawTexture(this.sprite, 0, 0, 0, 0, width, height); } } 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 cb55f6e..b73d2c5 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 @@ -10,6 +10,7 @@ import org.joml.Matrix4f; import com.mojang.blaze3d.systems.RenderSystem; +import org.saturnclient.common.minecraft.MinecraftProvider; import org.saturnclient.common.minecraft.bindings.SaturnIdentifier; import org.saturnclient.common.minecraft.bindings.SaturnItemStack; import org.saturnclient.common.minecraft.bindings.SaturnSprite; @@ -17,6 +18,7 @@ import org.saturnclient.common.minecraft.render.IMatrixStack; import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.saturnclient.mixin.DrawContextAccessor; import org.saturnclient.ui.resources.Fonts; +import org.saturnclient.ui.resources.SvgTexture; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.font.TextRenderer.TextLayerType; @@ -267,8 +269,9 @@ public class RenderScopeImpl implements RenderScope { float v2, int color) { if (sprite.toString().endsWith(".svg")) { - // sprite = SvgTexture.getSvg(MinecraftClient.getInstance(), sprite, (x2 - x1) * - // 2, (y2 - y1) * 2); + sprite = (Identifier) SvgTexture.getSvg(MinecraftProvider.PROVIDER.getClient(), + new SaturnIdentifier(sprite), + (x2 - x1) * 2, (y2 - y1) * 2).inner; } if (color == 0)