diff --git a/common/src/main/java/org/saturnclient/common/minecraft/IMinecraftClient.java b/common/src/main/java/org/saturnclient/common/minecraft/IMinecraftClient.java index b60d049..c429de9 100644 --- a/common/src/main/java/org/saturnclient/common/minecraft/IMinecraftClient.java +++ b/common/src/main/java/org/saturnclient/common/minecraft/IMinecraftClient.java @@ -4,9 +4,13 @@ import java.io.File; import java.io.InputStream; import org.saturnclient.common.minecraft.bindings.SaturnIdentifier; +import org.saturnclient.common.minecraft.render.IWindow; public interface IMinecraftClient { + public File getRunDirectory(); public InputStream getResource(SaturnIdentifier identifier); + + public IWindow getWindow(); } diff --git a/common/src/main/java/org/saturnclient/common/minecraft/render/IWindow.java b/common/src/main/java/org/saturnclient/common/minecraft/render/IWindow.java new file mode 100644 index 0000000..c90b456 --- /dev/null +++ b/common/src/main/java/org/saturnclient/common/minecraft/render/IWindow.java @@ -0,0 +1,11 @@ +package org.saturnclient.common.minecraft.render; + +public interface IWindow { + public int getWidth(); + + public int getHeight(); + + public int getFramebufferWidth(); + + public int getFramebufferHeight(); +} 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 51ff78a..45b52ba 100644 --- a/common/src/main/java/org/saturnclient/ui/elements/ImageTexture.java +++ b/common/src/main/java/org/saturnclient/ui/elements/ImageTexture.java @@ -6,6 +6,7 @@ import org.saturnclient.common.minecraft.bindings.SaturnIdentifier; import org.saturnclient.ui.Element; import org.saturnclient.ui.ElementContext; import org.saturnclient.ui.RenderScope; +import org.saturnclient.ui.resources.SvgTexture; public class ImageTexture extends Element { SaturnIdentifier sprite; @@ -16,16 +17,16 @@ public class ImageTexture extends Element { @Override public void render(RenderScope renderScope, ElementContext ctx) { - // if (sprite.toString().endsWith(".svg")) { - // IMinecraftClient client = MinecraftProvider.PROVIDER.getClient(); + 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()); + // 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); - // } + sprite = SvgTexture.getSvg(client, sprite, renderWidth * 2, renderHeight * 2); + } renderScope.drawTexture(sprite, 0, 0, 0, 0, width, height); } diff --git a/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/impl/Fonts.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/Fonts.java similarity index 97% rename from versions/1.21.4/src/main/java/org/saturnclient/saturnclient/impl/Fonts.java rename to versions/1.21.4/src/main/java/org/saturnclient/impl/Fonts.java index d5baa3c..8772047 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/impl/Fonts.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/Fonts.java @@ -1,4 +1,4 @@ -package org.saturnclient.saturnclient.impl; +package org.saturnclient.impl; import org.saturnclient.saturnclient.SaturnClient; import net.minecraft.text.Style; 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/impl/SaturnClientProvider.java similarity index 96% rename from versions/1.21.4/src/main/java/org/saturnclient/saturnclient/impl/SaturnClientProvider.java rename to versions/1.21.4/src/main/java/org/saturnclient/impl/SaturnClientProvider.java index bc2956b..aba7b01 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/impl/SaturnClientProvider.java @@ -1,4 +1,4 @@ -package org.saturnclient.saturnclient.impl; +package org.saturnclient.impl; import java.awt.image.BufferedImage; diff --git a/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/mixin/MatrixStackMixin.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/mixins/MatrixStackMixin.java similarity index 97% rename from versions/1.21.4/src/main/java/org/saturnclient/saturnclient/mixin/MatrixStackMixin.java rename to versions/1.21.4/src/main/java/org/saturnclient/impl/mixins/MatrixStackMixin.java index cb0858f..b7a0539 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/mixin/MatrixStackMixin.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/mixins/MatrixStackMixin.java @@ -1,4 +1,4 @@ -package org.saturnclient.saturnclient.mixin; +package org.saturnclient.impl.mixins; import org.joml.Quaternionf; import org.saturnclient.common.minecraft.bindings.SaturnQuaternionf; diff --git a/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/mixin/MinecraftClientMixin.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/mixins/MinecraftClientMixin.java similarity index 77% rename from versions/1.21.4/src/main/java/org/saturnclient/saturnclient/mixin/MinecraftClientMixin.java rename to versions/1.21.4/src/main/java/org/saturnclient/impl/mixins/MinecraftClientMixin.java index d47f259..fa5d029 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/mixin/MinecraftClientMixin.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/mixins/MinecraftClientMixin.java @@ -1,14 +1,16 @@ -package org.saturnclient.saturnclient.mixin; +package org.saturnclient.impl.mixins; import java.io.File; import java.io.InputStream; import org.saturnclient.common.minecraft.IMinecraftClient; import org.saturnclient.common.minecraft.bindings.SaturnIdentifier; +import org.saturnclient.common.minecraft.render.IWindow; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.util.Window; import net.minecraft.resource.ReloadableResourceManagerImpl; import net.minecraft.util.Identifier; @@ -17,6 +19,9 @@ public class MinecraftClientMixin implements IMinecraftClient { @Shadow public File runDirectory; + @Shadow + private Window window; + @Shadow public ReloadableResourceManagerImpl resourceManager; @@ -33,4 +38,9 @@ public class MinecraftClientMixin implements IMinecraftClient { return null; } } + + @Override + public IWindow getWindow() { + return (IWindow) (Object) this.window; + } } diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/mixins/WindowMixin.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/mixins/WindowMixin.java new file mode 100644 index 0000000..d757b39 --- /dev/null +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/mixins/WindowMixin.java @@ -0,0 +1,22 @@ +package org.saturnclient.impl.mixins; + +import org.saturnclient.common.minecraft.render.IWindow; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +import net.minecraft.client.util.Window; + +@Mixin(Window.class) +public abstract class WindowMixin implements IWindow { + @Shadow + public abstract int getWidth(); + + @Shadow + public abstract int getHeight(); + + @Shadow + public abstract int getFramebufferWidth(); + + @Shadow + public abstract int getFramebufferHeight(); +} 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 6838bd3..52a556e 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 @@ -9,13 +9,13 @@ import net.minecraft.client.util.math.MatrixStack; import org.saturnclient.cosmetics.Emotes; import org.saturnclient.cosmetics.cloak.Cloaks; import org.saturnclient.cosmetics.hat.Hats; +import org.saturnclient.impl.SaturnClientProvider; import org.saturnclient.modules.ModManager; import org.saturnclient.saturnclient.client.ServiceClient; import org.saturnclient.common.minecraft.MinecraftProvider; import org.saturnclient.config.Config; import org.saturnclient.config.manager.ConfigManager; import org.saturnclient.saturnclient.event.KeyInputHandler; -import org.saturnclient.saturnclient.impl.SaturnClientProvider; import org.saturnclient.saturnclient.mixin.DrawContextAccessor; import org.saturnclient.ui.ElementRenderer; import org.saturnclient.ui.RenderScope; 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 48daf24..cb55f6e 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 @@ -128,7 +128,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.saturnclient.impl.Fonts.setFont(line, font), 0, + textRenderer.draw(org.saturnclient.impl.Fonts.setFont(line, font), 0, font == 0 ? 1 : 7, color, false, this.matrices.peek().getPositionMatrix(), this.vertexConsumers, TextLayerType.NORMAL, 0, 15728880); diff --git a/versions/1.21.4/src/main/resources/fabric.mod.json b/versions/1.21.4/src/main/resources/fabric.mod.json index fc7fb33..e3ad456 100644 --- a/versions/1.21.4/src/main/resources/fabric.mod.json +++ b/versions/1.21.4/src/main/resources/fabric.mod.json @@ -17,7 +17,8 @@ }, "mixins": [ "saturnclient.mixins.json", - "mods.mixins.json" + "mods.mixins.json", + "impl.mixins.json" ], "depends": { "fabricloader": ">=${loader_version}", diff --git a/versions/1.21.4/src/main/resources/impl.mixins.json b/versions/1.21.4/src/main/resources/impl.mixins.json new file mode 100644 index 0000000..1962c8d --- /dev/null +++ b/versions/1.21.4/src/main/resources/impl.mixins.json @@ -0,0 +1,14 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "org.saturnclient.impl.mixins", + "compatibilityLevel": "JAVA_21", + "client": [ + "MinecraftClientMixin", + "MatrixStackMixin", + "WindowMixin" + ], + "injectors": { + "defaultRequire": 1 + } +} diff --git a/versions/1.21.4/src/main/resources/saturnclient.mixins.json b/versions/1.21.4/src/main/resources/saturnclient.mixins.json index 2f07804..3bc9ccc 100644 --- a/versions/1.21.4/src/main/resources/saturnclient.mixins.json +++ b/versions/1.21.4/src/main/resources/saturnclient.mixins.json @@ -10,9 +10,7 @@ "WhoAmI", "DrawContextAccessor", "SplashOverlayMixin", - "SetScreenMixin", - "MinecraftClientMixin", - "MatrixStackMixin" + "SetScreenMixin" ], "injectors": { "defaultRequire": 1