From ba71a5b8384c5a359401687f7de01db89ba3bdc8 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Tue, 29 Sep 2026 18:34:24 +0200 Subject: [PATCH 1/3] Draw no cloak for "None" instead of the missing texture "None" is the empty cloak id, but getCurrentCloakTexture still built textures/cloaks/.png from it, so the renderer drew Minecraft's missing texture. It now returns null for an empty id and for any id this version has no texture for, and the renderer already skips a null texture. Co-Authored-By: Claude Opus 5.5 --- src/main/java/org/saturnclient/cosmetics/Cloaks.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/org/saturnclient/cosmetics/Cloaks.java b/src/main/java/org/saturnclient/cosmetics/Cloaks.java index df17902..8e50a7b 100644 --- a/src/main/java/org/saturnclient/cosmetics/Cloaks.java +++ b/src/main/java/org/saturnclient/cosmetics/Cloaks.java @@ -38,7 +38,14 @@ public class Cloaks { availableCloaks.add(0, ""); } + /** + * The cloak's texture, or null for no cloak ("", the "None" choice) and for a cloak this version + * has no texture for, which would otherwise draw as the missing texture. + */ public static IdentifierRef getCurrentCloakTexture(String cloakName) { + if (cloakName == null || !Arrays.asList(ALL_CLOAKS).contains(cloakName)) { + return null; + } if (Arrays.asList(ANIMATED_CLOAKS).contains(cloakName)) { return IdentifierRef.ofSaturn("textures/cloaks/" + cloakName + ".gif"); } else { From bbf6b88ed3c1ebf49a8fa69d6ca02e09c321be95 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Tue, 29 Sep 2026 18:34:24 +0200 Subject: [PATCH 2/3] Put settings second and the HUD editor last in the sidebar The order is now mods, settings, cosmetics, HUD editor. Co-Authored-By: Claude Opus 5.5 --- .../java/org/saturnclient/ui/components/Sidebar.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/saturnclient/ui/components/Sidebar.java b/src/main/java/org/saturnclient/ui/components/Sidebar.java index 1aabfae..cedfc18 100644 --- a/src/main/java/org/saturnclient/ui/components/Sidebar.java +++ b/src/main/java/org/saturnclient/ui/components/Sidebar.java @@ -22,9 +22,9 @@ public class Sidebar extends Element { // Values for the constructor's `active` public static final int MODS = 0; - public static final int COSMETICS = 1; - public static final int HUD_EDITOR = 2; - public static final int SETTINGS = 3; + public static final int SETTINGS = 1; + public static final int COSMETICS = 2; + public static final int HUD_EDITOR = 3; private static final int LOGO = 32; private static final int BUTTON = 44; @@ -35,11 +35,12 @@ public class Sidebar extends Element { private record Item(IdentifierRef icon, Runnable onClick) { } + // In the order of the constants above private final Item[] items = { new Item(Textures.ICON_MODS, () -> Providers.saturn.getClient().setScreen(new ModMenu())), + new Item(Textures.ICON_SETTINGS, () -> Providers.saturn.getClient().setScreen(new ClientSettings())), new Item(Textures.ICON_COSMETICS, () -> Providers.saturn.getClient().setScreen(new CosmeticsMenu())), new Item(Textures.ICON_HUD_EDITOR, () -> Providers.saturn.getClient().setScreen(new HudEditor())), - new Item(Textures.ICON_SETTINGS, () -> Providers.saturn.getClient().setScreen(new ClientSettings())), }; private final int active; From c973e053aa2fd5fc197a8501b099134ce4ef522f Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Tue, 29 Sep 2026 18:34:24 +0200 Subject: [PATCH 3/3] Open Saturn's settings from the title dock and put Saturn first The Saturn logo in the title screen's dock now opens Saturn's settings instead of the shift menu, and it comes first: Saturn, mods, cosmetics, then Minecraft's options last. The shift menu is still on its key in game. Co-Authored-By: Claude Opus 5.5 --- src/main/java/org/saturnclient/ui/screens/TitleMenu.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/saturnclient/ui/screens/TitleMenu.java b/src/main/java/org/saturnclient/ui/screens/TitleMenu.java index 7143339..9b3b66b 100644 --- a/src/main/java/org/saturnclient/ui/screens/TitleMenu.java +++ b/src/main/java/org/saturnclient/ui/screens/TitleMenu.java @@ -26,8 +26,8 @@ import org.saturnclient.ui.resources.Textures; /** * Saturn's title screen: the logo over the game's menus in the middle, the - * player and a quit button in the top corners, and along the bottom a dock of - * Saturn's screens, the shift menu and Minecraft's options, and the version. + * player and a quit button in the top corners, and along the bottom a dock + * (Saturn's settings, its mods and cosmetics, then Minecraft's options) and the version. */ public class TitleMenu extends SaturnScreen { // The logo and wordmark as the shift menu has them: the wordmark over the logo's foot @@ -106,12 +106,12 @@ public class TitleMenu extends SaturnScreen { .position(width - TOP_EDGE - QUIT_SIZE, TOP_EDGE) .animation(step(new SlideFade(AnimationConfig.mainMenu, 8), STEP_QUIT))); - // Along the bottom: the dock of Saturn's screens, the shift menu and Minecraft's options, and the version + // Along the bottom: the dock, Saturn first (its settings) and Minecraft's options last, and the version Dock dock = new Dock(List.of( + new Dock.Item(Textures.LOGO, () -> Providers.saturn.getClient().setScreen(new ClientSettings())), new Dock.Item(Textures.ICON_MODS, () -> Providers.saturn.getClient().setScreen(new ModMenu())), new Dock.Item(Textures.ICON_COSMETICS, () -> Providers.saturn.getClient().setScreen(new CosmeticsMenu())), - new Dock.Item(Textures.LOGO, () -> Providers.saturn.getClient().setScreen(new ShiftMenu())), new Dock.Item(Textures.ICON_SETTINGS, () -> Providers.saturn.getClient().setScreen(MinecraftScreen.Options)))); draw(dock.position((width - dock.width) / 2, height - EDGE - Dock.HEIGHT)