From 8d528387db553c564a62653c7814b305531d93db Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Sat, 7 Mar 2026 16:13:11 +0100 Subject: [PATCH] Screens --- .../common/minecraft/MinecraftProvider.java | 2 +- .../saturnclient/impl/SaturnClientProvider.java | 10 ++++++++-- .../saturnclient/modules/mixins/RenderMixin.java | 5 +++-- .../org/saturnclient/ui/SaturnScreenFabric.java | 2 +- .../org/saturnclient/ui/screens/ShiftMenu.java | 9 ++++----- .../org/saturnclient/ui/screens/TitleMenu.java | 16 ++++++++-------- .../ui/screens/cosmetics/CloakMenu.java | 4 ++-- .../ui/screens/cosmetics/HatMenu.java | 4 ++-- .../ui/screens/store/CloakStore.java | 8 +++----- .../saturnclient/ui/screens/store/HatStore.java | 8 +++----- 10 files changed, 35 insertions(+), 33 deletions(-) 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 942c9a0..928f604 100644 --- a/common/src/main/java/org/saturnclient/common/minecraft/MinecraftProvider.java +++ b/common/src/main/java/org/saturnclient/common/minecraft/MinecraftProvider.java @@ -10,7 +10,7 @@ public abstract class MinecraftProvider { public abstract IMinecraftClient getClient(); - public abstract IMinecraftClient setScreen(SaturnScreen screen); + public abstract void setScreen(SaturnScreen screen); public abstract Object createIdentifier(String namespace, String path); diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/SaturnClientProvider.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/SaturnClientProvider.java index cca2f19..26bd0e7 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/impl/SaturnClientProvider.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/SaturnClientProvider.java @@ -8,14 +8,15 @@ import org.saturnclient.common.minecraft.MinecraftProvider; import org.saturnclient.common.minecraft.bindings.SaturnIdentifier; import org.saturnclient.cosmetics.cloak.utils.IdentifierUtils; import org.saturnclient.saturnclient.SaturnClient; +import org.saturnclient.ui.SaturnScreen; +import org.saturnclient.ui.SaturnScreenFabric; -import net.minecraft.client.MinecraftClient; import net.minecraft.util.Identifier; public class SaturnClientProvider extends MinecraftProvider { @Override public IMinecraftClient getClient() { - return (IMinecraftClient) MinecraftClient.getInstance(); + return (IMinecraftClient) SaturnClient.client; } @Override @@ -43,4 +44,9 @@ public class SaturnClientProvider extends MinecraftProvider { public String getKeyName(int key) { return GLFW.glfwGetKeyName(key, GLFW.glfwGetKeyScancode(key)); } + + @Override + public void setScreen(SaturnScreen screen) { + SaturnClient.client.setScreen(new SaturnScreenFabric(screen)); + } } diff --git a/versions/1.21.4/src/main/java/org/saturnclient/modules/mixins/RenderMixin.java b/versions/1.21.4/src/main/java/org/saturnclient/modules/mixins/RenderMixin.java index a06f9ea..bc4835c 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/modules/mixins/RenderMixin.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/modules/mixins/RenderMixin.java @@ -4,10 +4,11 @@ import org.saturnclient.modules.HudMod; import org.saturnclient.modules.ModDimensions; import org.saturnclient.modules.ModManager; import org.saturnclient.saturnclient.SaturnClient; -import org.saturnclient.saturnclient.menus.HudEditor; import org.saturnclient.saturnclient.mixin.DrawContextAccessor; import org.saturnclient.ui.RenderScope; import org.saturnclient.ui.RenderScopeImpl; +import org.saturnclient.ui.SaturnScreenFabric; +import org.saturnclient.ui.screens.HudEditor; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -25,7 +26,7 @@ public class RenderMixin { TextRenderer textRenderer = SaturnClient.client.textRenderer; if (textRenderer != null && - !(SaturnClient.client.currentScreen instanceof HudEditor)) { + !(SaturnClient.client.currentScreen instanceof SaturnScreenFabric f && f.screen instanceof HudEditor)) { RenderScope renderScope = new RenderScopeImpl(context.getMatrices(), ((DrawContextAccessor) context).getVertexConsumers()); diff --git a/versions/1.21.4/src/main/java/org/saturnclient/ui/SaturnScreenFabric.java b/versions/1.21.4/src/main/java/org/saturnclient/ui/SaturnScreenFabric.java index 47d128d..229dfde 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/ui/SaturnScreenFabric.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/ui/SaturnScreenFabric.java @@ -31,7 +31,7 @@ public class SaturnScreenFabric extends Screen implements ScreenProvider { } private final Pool pool = new Pool(3); - private final SaturnScreen screen; + public final SaturnScreen screen; public static void preload(MinecraftClient client) { TextureManager textureManager = client.getTextureManager(); diff --git a/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/ShiftMenu.java b/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/ShiftMenu.java index ed65453..fc2c062 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/ShiftMenu.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/ShiftMenu.java @@ -1,9 +1,8 @@ package org.saturnclient.ui.screens; -import org.saturnclient.saturnclient.SaturnClient; +import org.saturnclient.common.minecraft.MinecraftProvider; import org.saturnclient.config.AnimationConfig; import org.saturnclient.config.Config; -import org.saturnclient.saturnclient.menus.HudEditor; import org.saturnclient.ui.SaturnScreen; import org.saturnclient.ui.anim.Fade; import org.saturnclient.ui.anim.SlideY; @@ -42,17 +41,17 @@ public class ShiftMenu extends SaturnScreen { AnimationStagger stagger = new AnimationStagger(AnimationConfig.shiftMenu.stagger.value); stagger.draw(new TextureButton(Textures.HUD_ICON, () -> { - client.setScreen(new HudEditor()); + MinecraftProvider.PROVIDER.setScreen(new HudEditor()); }).dimensions(btnHeight, btnHeight).position(0, 0) .animation(new Fade(AnimationConfig.shiftMenu))); stagger.draw(new Button("Settings", () -> { - SaturnClient.client.setScreen(new ModMenu()); + MinecraftProvider.PROVIDER.setScreen(new ModMenu()); }).dimensions(btnWidth, btnHeight).position(btnHeight + spacing, 0) .animation(new Fade(AnimationConfig.shiftMenu))); stagger.draw(new TextureButton(Textures.COSMETICS, () -> { - client.setScreen(new CloakMenu()); + MinecraftProvider.PROVIDER.setScreen(new CloakMenu()); }).dimensions(btnHeight, btnHeight).position(btnWidth + btnHeight + (spacing * 2), 0) .animation(new Fade(AnimationConfig.shiftMenu))); diff --git a/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/TitleMenu.java b/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/TitleMenu.java index a79d1e2..c3a5443 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/TitleMenu.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/TitleMenu.java @@ -1,9 +1,9 @@ package org.saturnclient.ui.screens; import org.saturnclient.saturnclient.SaturnClient; +import org.saturnclient.common.minecraft.MinecraftProvider; import org.saturnclient.config.AnimationConfig; import org.saturnclient.config.Config; -import org.saturnclient.saturnclient.menus.HudEditor; import org.saturnclient.ui.SaturnScreen; import org.saturnclient.ui.anim.Fade; import org.saturnclient.ui.anim.SlideFade; @@ -37,22 +37,22 @@ public class TitleMenu extends SaturnScreen { AnimationStagger mainButtonStagger = new AnimationStagger(AnimationConfig.mainMenu); mainButtonStagger.draw(new Button("SINGLEPLAYER", () -> { - client.setScreen(new SelectWorldScreen(new TitleMenu())); + // MinecraftProvider.PROVIDER.setScreen(new SelectWorldScreen(new TitleMenu())); }).scale(0.69f).dimensions(420, 52).position(0, 0) .animation(new SlideFade(AnimationConfig.mainMenu, -10))); mainButtonStagger.draw(new Button("MULTIPLAYER", () -> { - client.setScreen(new MultiplayerScreen(new TitleMenu())); + // MinecraftProvider.PROVIDER.setScreen(new MultiplayerScreen(new TitleMenu())); }).scale(0.69f).dimensions(420, 52).position(0, 40) .animation(new SlideFade(AnimationConfig.mainMenu, -10))); mainButtonStagger.draw(new Button("OPTIONS", () -> { - client.setScreen(new OptionsScreen(new TitleMenu(), SaturnClient.client.options)); + // MinecraftProvider.PROVIDER.setScreen(new OptionsScreen(new TitleMenu(), SaturnClient.client.options)); }).scale(0.69f).dimensions(206, 52).position(0, 80) .animation(new SlideFade(AnimationConfig.mainMenu, -10))); mainButtonStagger.draw(new Button("QUIT", () -> { - client.scheduleStop(); + // client.scheduleStop(); }).scale(0.69f).dimensions(206, 52).position(146, 80) .animation(new SlideFade(AnimationConfig.mainMenu, -10))); @@ -63,16 +63,16 @@ public class TitleMenu extends SaturnScreen { AnimationStagger saturnStagger = new AnimationStagger(AnimationConfig.mainMenu.stagger.value); saturnStagger.draw(new TextureButton(Textures.HUD_ICON, () -> { - client.setScreen(new HudEditor()); + MinecraftProvider.PROVIDER.setScreen(new HudEditor()); }).dimensions(s, s).position(0, 0).animation(new SlideFade(AnimationConfig.mainMenu, s + 8))); saturnStagger.draw(new TextureButton(Textures.SETTINGS, () -> { - SaturnClient.client.setScreen(new ModMenu()); + MinecraftProvider.PROVIDER.setScreen(new ModMenu()); }).dimensions(s, s).position(s + 2, 0) .animation(new SlideFade(AnimationConfig.mainMenu, s + 8))); saturnStagger.draw(new TextureButton(Textures.CLOAK, () -> { - client.setScreen(new CloakMenu()); + MinecraftProvider.PROVIDER.setScreen(new CloakMenu()); }).dimensions(s, s).position((s + 2) * 2, 0) .animation(new SlideFade(AnimationConfig.mainMenu, s + 8))); diff --git a/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/cosmetics/CloakMenu.java b/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/cosmetics/CloakMenu.java index 55901a0..841f2b6 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/cosmetics/CloakMenu.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/cosmetics/CloakMenu.java @@ -1,8 +1,8 @@ package org.saturnclient.ui.screens.cosmetics; import org.saturnclient.cosmetics.cloak.Cloaks; -import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.saturnclient.client.player.SaturnPlayer; +import org.saturnclient.common.minecraft.MinecraftProvider; import org.saturnclient.config.AnimationConfig; import org.saturnclient.ui.SaturnScreen; import org.saturnclient.ui.anim.Fade; @@ -76,7 +76,7 @@ public class CloakMenu extends SaturnScreen { new TabMenuComponent(Textures.CLOAK, () -> { }), new TabMenuComponent(Textures.HAT, () -> { - SaturnClient.client.setScreen(new HatMenu()); + MinecraftProvider.PROVIDER.setScreen(new HatMenu()); })) .centerOffset(width, height, 0, -195)); } diff --git a/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/cosmetics/HatMenu.java b/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/cosmetics/HatMenu.java index c1e9922..2185dbf 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/cosmetics/HatMenu.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/cosmetics/HatMenu.java @@ -1,8 +1,8 @@ package org.saturnclient.ui.screens.cosmetics; import org.saturnclient.cosmetics.hat.Hats; -import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.saturnclient.client.player.SaturnPlayer; +import org.saturnclient.common.minecraft.MinecraftProvider; import org.saturnclient.config.AnimationConfig; import org.saturnclient.ui.SaturnScreen; import org.saturnclient.ui.anim.Fade; @@ -75,7 +75,7 @@ public class HatMenu extends SaturnScreen { draw(new TabMenu(1, new TabMenuComponent(Textures.CLOAK, () -> { - SaturnClient.client.setScreen(new CloakMenu()); + MinecraftProvider.PROVIDER.setScreen(new CloakMenu()); }), new TabMenuComponent(Textures.HAT, () -> { })) diff --git a/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/store/CloakStore.java b/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/store/CloakStore.java index 58a8ebf..7695bc7 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/store/CloakStore.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/store/CloakStore.java @@ -1,13 +1,12 @@ package org.saturnclient.ui.screens.store; import org.saturnclient.cosmetics.cloak.Cloaks; -import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.saturnclient.client.ServiceClient; import org.saturnclient.saturnclient.client.player.SaturnPlayer; +import org.saturnclient.common.minecraft.MinecraftProvider; import org.saturnclient.config.AnimationConfig; import org.saturnclient.config.Theme; import org.saturnclient.ui.SaturnScreen; -import org.saturnclient.ui.Utils; import org.saturnclient.ui.anim.Fade; import org.saturnclient.ui.anim.SlideY; import org.saturnclient.ui.components.CosmeticPreview; @@ -17,7 +16,6 @@ import org.saturnclient.ui.elements.ImageTexture; import org.saturnclient.ui.elements.Scroll; import org.saturnclient.ui.elements.TabMenu; import org.saturnclient.ui.elements.Text; -import org.saturnclient.ui.elements.Notification.NotificationKind; import org.saturnclient.ui.elements.TabMenu.TabMenuComponent; import org.saturnclient.ui.resources.Fonts; import org.saturnclient.ui.resources.Textures; @@ -107,7 +105,7 @@ public class CloakStore extends SaturnScreen { new TabMenuComponent(Textures.CLOAK, () -> { }), new TabMenuComponent(Textures.HAT, () -> { - SaturnClient.client.setScreen(new HatStore()); + MinecraftProvider.PROVIDER.setScreen(new HatStore()); })) .centerOffset(width, height, 0, -195)); } @@ -128,7 +126,7 @@ public class CloakStore extends SaturnScreen { } RenderSystem.recordRenderCall(() -> { - SaturnClient.client.setScreen(new CloakStore(now)); + MinecraftProvider.PROVIDER.setScreen(new CloakStore(now)); // Utils.notify(NotificationKind.Success, // "Purchase complete", // "Congrats, enjoy your new cloak!"); diff --git a/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/store/HatStore.java b/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/store/HatStore.java index 38a6a88..36227fe 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/store/HatStore.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/store/HatStore.java @@ -1,13 +1,12 @@ package org.saturnclient.ui.screens.store; import org.saturnclient.cosmetics.hat.Hats; -import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.saturnclient.client.ServiceClient; import org.saturnclient.saturnclient.client.player.SaturnPlayer; +import org.saturnclient.common.minecraft.MinecraftProvider; import org.saturnclient.config.AnimationConfig; import org.saturnclient.config.Theme; import org.saturnclient.ui.SaturnScreen; -import org.saturnclient.ui.Utils; import org.saturnclient.ui.anim.Fade; import org.saturnclient.ui.anim.SlideY; import org.saturnclient.ui.components.CosmeticPreview; @@ -17,7 +16,6 @@ import org.saturnclient.ui.elements.ImageTexture; import org.saturnclient.ui.elements.Scroll; import org.saturnclient.ui.elements.TabMenu; import org.saturnclient.ui.elements.Text; -import org.saturnclient.ui.elements.Notification.NotificationKind; import org.saturnclient.ui.elements.TabMenu.TabMenuComponent; import org.saturnclient.ui.resources.Fonts; import org.saturnclient.ui.resources.Textures; @@ -106,7 +104,7 @@ public class HatStore extends SaturnScreen { draw(new TabMenu(1, new TabMenuComponent(Textures.CLOAK, () -> { - SaturnClient.client.setScreen(new CloakStore()); + MinecraftProvider.PROVIDER.setScreen(new CloakStore()); }), new TabMenuComponent(Textures.HAT, () -> { })) @@ -129,7 +127,7 @@ public class HatStore extends SaturnScreen { } RenderSystem.recordRenderCall(() -> { - SaturnClient.client.setScreen(new HatStore(now)); + MinecraftProvider.PROVIDER.setScreen(new HatStore(now)); // Utils.notify(NotificationKind.Success, // "Purchase complete", // "Congrats, enjoy your new hat!");