From 196dd0894359558435491602f7e671ad21e47374 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Sat, 7 Mar 2026 17:19:10 +0100 Subject: [PATCH] Title menu stuff --- .../common/minecraft/MinecraftProvider.java | 10 +++++++ .../saturnclient/ui/screens/TitleMenu.java | 11 ++++---- .../impl/SaturnClientProvider.java | 28 +++++++++++++++++++ 3 files changed, 43 insertions(+), 6 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 928f604..8d65972 100644 --- a/common/src/main/java/org/saturnclient/common/minecraft/MinecraftProvider.java +++ b/common/src/main/java/org/saturnclient/common/minecraft/MinecraftProvider.java @@ -8,10 +8,18 @@ import java.awt.image.BufferedImage; public abstract class MinecraftProvider { public static MinecraftProvider PROVIDER; + public static enum MinecraftScreen { + SelectWorld, + Multiplayer, + Options + } + public abstract IMinecraftClient getClient(); public abstract void setScreen(SaturnScreen screen); + public abstract void setScreen(MinecraftScreen screen); + public abstract Object createIdentifier(String namespace, String path); public abstract boolean isKeyPressed(int key); @@ -21,4 +29,6 @@ public abstract class MinecraftProvider { public abstract void registerBufferedImageTexture(SaturnIdentifier i, BufferedImage bi); public abstract String getKeyName(int key); + + public abstract void stop(); } diff --git a/common/src/main/java/org/saturnclient/ui/screens/TitleMenu.java b/common/src/main/java/org/saturnclient/ui/screens/TitleMenu.java index 9c224d6..1da39b5 100644 --- a/common/src/main/java/org/saturnclient/ui/screens/TitleMenu.java +++ b/common/src/main/java/org/saturnclient/ui/screens/TitleMenu.java @@ -1,6 +1,7 @@ package org.saturnclient.ui.screens; import org.saturnclient.common.minecraft.MinecraftProvider; +import org.saturnclient.common.minecraft.MinecraftProvider.MinecraftScreen; import org.saturnclient.config.AnimationConfig; import org.saturnclient.config.Config; import org.saturnclient.ui.SaturnScreen; @@ -31,25 +32,23 @@ public class TitleMenu extends SaturnScreen { AnimationStagger mainButtonStagger = new AnimationStagger(AnimationConfig.mainMenu); - // TODO implement all of these - mainButtonStagger.draw(new Button("SINGLEPLAYER", () -> { - // MinecraftProvider.PROVIDER.setScreen(new SelectWorldScreen(new TitleMenu())); + MinecraftProvider.PROVIDER.setScreen(MinecraftScreen.SelectWorld); }).scale(0.69f).dimensions(420, 52).position(0, 0) .animation(new SlideFade(AnimationConfig.mainMenu, -10))); mainButtonStagger.draw(new Button("MULTIPLAYER", () -> { - // MinecraftProvider.PROVIDER.setScreen(new MultiplayerScreen(new TitleMenu())); + MinecraftProvider.PROVIDER.setScreen(MinecraftScreen.Multiplayer); }).scale(0.69f).dimensions(420, 52).position(0, 40) .animation(new SlideFade(AnimationConfig.mainMenu, -10))); mainButtonStagger.draw(new Button("OPTIONS", () -> { - // MinecraftProvider.PROVIDER.setScreen(new OptionsScreen(new TitleMenu(), SaturnClient.client.options)); + MinecraftProvider.PROVIDER.setScreen(MinecraftScreen.Options); }).scale(0.69f).dimensions(206, 52).position(0, 80) .animation(new SlideFade(AnimationConfig.mainMenu, -10))); mainButtonStagger.draw(new Button("QUIT", () -> { - // client.scheduleStop(); + MinecraftProvider.PROVIDER.stop(); }).scale(0.69f).dimensions(206, 52).position(146, 80) .animation(new SlideFade(AnimationConfig.mainMenu, -10))); 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 26bd0e7..f85cd78 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 @@ -10,7 +10,11 @@ import org.saturnclient.cosmetics.cloak.utils.IdentifierUtils; import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.ui.SaturnScreen; import org.saturnclient.ui.SaturnScreenFabric; +import org.saturnclient.ui.screens.TitleMenu; +import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen; +import net.minecraft.client.gui.screen.option.OptionsScreen; +import net.minecraft.client.gui.screen.world.SelectWorldScreen; import net.minecraft.util.Identifier; public class SaturnClientProvider extends MinecraftProvider { @@ -49,4 +53,28 @@ public class SaturnClientProvider extends MinecraftProvider { public void setScreen(SaturnScreen screen) { SaturnClient.client.setScreen(new SaturnScreenFabric(screen)); } + + @Override + public void setScreen(MinecraftScreen screen) { + SaturnScreenFabric exitTarget = new SaturnScreenFabric(new TitleMenu()); + + switch (screen) { + case SelectWorld: + SaturnClient.client.setScreen(new SelectWorldScreen(exitTarget)); + break; + + case Multiplayer: + SaturnClient.client.setScreen(new MultiplayerScreen(exitTarget)); + break; + + case Options: + SaturnClient.client.setScreen(new OptionsScreen(exitTarget, SaturnClient.client.options)); + break; + } + } + + @Override + public void stop() { + SaturnClient.client.scheduleStop(); + } }