Skip to content
This repository was archived by the owner on Nov 28, 2025. It is now read-only.

Commit 33d000a

Browse files
authored
Preserve the current screen on style change (#179)
Depends on AxolotlClient/AxolotlClient-config#11
2 parents 3ab53cb + c455409 commit 33d000a

File tree

5 files changed

+28
-5
lines changed

5 files changed

+28
-5
lines changed

1.16_combat-6/src/main/java/io/github/axolotlclient/config/AxolotlClientConfig.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import io.github.axolotlclient.AxolotlClientConfig.api.ui.ConfigUI;
3434
import io.github.axolotlclient.AxolotlClientConfig.api.util.Color;
3535
import io.github.axolotlclient.AxolotlClientConfig.impl.options.*;
36+
import io.github.axolotlclient.AxolotlClientConfig.impl.ui.RecreatableScreen;
3637
import io.github.axolotlclient.AxolotlClientConfigCommon;
3738
import io.github.axolotlclient.config.screen.CreditsScreen;
3839
import io.github.axolotlclient.config.screen.ProfilesScreen;
@@ -43,6 +44,7 @@
4344
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
4445
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
4546
import net.minecraft.client.MinecraftClient;
47+
import net.minecraft.client.gui.screen.Screen;
4648
import net.minecraft.client.options.KeyBinding;
4749
import net.minecraft.client.texture.NativeImage;
4850
import net.minecraft.client.texture.NativeImageBackedTexture;
@@ -155,7 +157,9 @@ public AxolotlClientConfig() {
155157
general.add(configStyle = new StringArrayOption("configStyle", themes,
156158
"configStyle." + ConfigUI.getInstance().getCurrentStyle().getName(), s -> {
157159
ConfigUI.getInstance().setStyle(s.split("\\.")[1]);
158-
MinecraftClient.getInstance().openScreen(null);
160+
161+
Screen newScreen = RecreatableScreen.tryRecreate(MinecraftClient.getInstance().currentScreen);
162+
MinecraftClient.getInstance().openScreen(newScreen);
159163
}));
160164
AxolotlClient.getInstance().getConfigManager().load();
161165
ConfigUI.getInstance().setStyle(configStyle.get().split("\\.")[1]);

1.20/src/main/java/io/github/axolotlclient/config/AxolotlClientConfig.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import io.github.axolotlclient.AxolotlClientConfig.api.ui.ConfigUI;
3535
import io.github.axolotlclient.AxolotlClientConfig.api.util.Color;
3636
import io.github.axolotlclient.AxolotlClientConfig.impl.options.*;
37+
import io.github.axolotlclient.AxolotlClientConfig.impl.ui.RecreatableScreen;
3738
import io.github.axolotlclient.AxolotlClientConfigCommon;
3839
import io.github.axolotlclient.config.screen.CreditsScreen;
3940
import io.github.axolotlclient.config.screen.ProfilesScreen;
@@ -43,6 +44,7 @@
4344
import io.github.axolotlclient.util.options.GenericOption;
4445
import lombok.Getter;
4546
import net.minecraft.client.MinecraftClient;
47+
import net.minecraft.client.gui.screen.Screen;
4648
import net.minecraft.client.option.KeyBind;
4749
import net.minecraft.client.texture.NativeImageBackedTexture;
4850

@@ -152,7 +154,9 @@ public AxolotlClientConfig() {
152154
general.add(configStyle = new StringArrayOption("configStyle", themes,
153155
"configStyle." + ConfigUI.getInstance().getCurrentStyle().getName(), s -> {
154156
ConfigUI.getInstance().setStyle(s.split("\\.")[1]);
155-
MinecraftClient.getInstance().setScreen(null);
157+
158+
Screen newScreen = RecreatableScreen.tryRecreate(MinecraftClient.getInstance().currentScreen);
159+
MinecraftClient.getInstance().setScreen(newScreen);
156160
}));
157161
AxolotlClient.getInstance().getConfigManager().load();
158162
ConfigUI.getInstance().setStyle(configStyle.get().split("\\.")[1]);

1.21/src/main/java/io/github/axolotlclient/config/AxolotlClientConfig.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import io.github.axolotlclient.AxolotlClientConfig.api.ui.ConfigUI;
3535
import io.github.axolotlclient.AxolotlClientConfig.api.util.Color;
3636
import io.github.axolotlclient.AxolotlClientConfig.impl.options.*;
37+
import io.github.axolotlclient.AxolotlClientConfig.impl.ui.RecreatableScreen;
3738
import io.github.axolotlclient.AxolotlClientConfigCommon;
3839
import io.github.axolotlclient.config.screen.CreditsScreen;
3940
import io.github.axolotlclient.config.screen.ProfilesScreen;
@@ -43,6 +44,7 @@
4344
import io.github.axolotlclient.util.options.GenericOption;
4445
import lombok.Getter;
4546
import net.minecraft.client.MinecraftClient;
47+
import net.minecraft.client.gui.screen.Screen;
4648
import net.minecraft.client.option.KeyBind;
4749
import net.minecraft.client.texture.NativeImageBackedTexture;
4850

@@ -151,7 +153,9 @@ public AxolotlClientConfig() {
151153
general.add(configStyle = new StringArrayOption("configStyle", themes,
152154
"configStyle." + ConfigUI.getInstance().getCurrentStyle().getName(), s -> {
153155
ConfigUI.getInstance().setStyle(s.split("\\.")[1]);
154-
MinecraftClient.getInstance().setScreen(null);
156+
157+
Screen newScreen = RecreatableScreen.tryRecreate(MinecraftClient.getInstance().currentScreen);
158+
MinecraftClient.getInstance().setScreen(newScreen);
155159
}));
156160
AxolotlClient.getInstance().getConfigManager().load();
157161
ConfigUI.getInstance().setStyle(configStyle.get().split("\\.")[1]);

1.8.9/src/main/java/io/github/axolotlclient/config/AxolotlClientConfig.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,11 @@
3030
import io.github.axolotlclient.AxolotlClientConfig.api.options.Option;
3131
import io.github.axolotlclient.AxolotlClientConfig.api.options.OptionCategory;
3232
import io.github.axolotlclient.AxolotlClientConfig.api.ui.ConfigUI;
33+
import io.github.axolotlclient.AxolotlClientConfig.api.ui.screen.ConfigScreen;
3334
import io.github.axolotlclient.AxolotlClientConfig.api.util.Color;
3435
import io.github.axolotlclient.AxolotlClientConfig.impl.options.*;
36+
import io.github.axolotlclient.AxolotlClientConfig.impl.ui.RecreatableScreen;
37+
import io.github.axolotlclient.AxolotlClientConfig.impl.util.ConfigStyles;
3538
import io.github.axolotlclient.AxolotlClientConfigCommon;
3639
import io.github.axolotlclient.config.screen.CreditsScreen;
3740
import io.github.axolotlclient.config.screen.ProfilesScreen;
@@ -41,6 +44,7 @@
4144
import io.github.axolotlclient.util.options.GenericOption;
4245
import lombok.Getter;
4346
import net.minecraft.client.Minecraft;
47+
import net.minecraft.client.gui.screen.Screen;
4448
import net.minecraft.client.options.KeyBinding;
4549
import net.ornithemc.osl.keybinds.api.KeyBindingEvents;
4650
import net.ornithemc.osl.lifecycle.api.client.MinecraftClientEvents;
@@ -135,7 +139,9 @@ public AxolotlClientConfig() {
135139
general.add(configStyle = new StringArrayOption("configStyle", themes,
136140
"configStyle." + ConfigUI.getInstance().getCurrentStyle().getName(), s -> {
137141
ConfigUI.getInstance().setStyle(s.split("\\.")[1]);
138-
Minecraft.getInstance().openScreen(null);
142+
143+
Screen newScreen = RecreatableScreen.tryRecreate(Minecraft.getInstance().screen);
144+
Minecraft.getInstance().openScreen(newScreen);
139145
}));
140146
AxolotlClient.getInstance().getConfigManager().load();
141147
ConfigUI.getInstance().setStyle(configStyle.get().split("\\.")[1]);

1.latest/src/main/java/io/github/axolotlclient/config/AxolotlClientConfig.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import io.github.axolotlclient.AxolotlClientConfig.api.ui.ConfigUI;
3434
import io.github.axolotlclient.AxolotlClientConfig.api.util.Color;
3535
import io.github.axolotlclient.AxolotlClientConfig.impl.options.*;
36+
import io.github.axolotlclient.AxolotlClientConfig.impl.ui.RecreatableScreen;
3637
import io.github.axolotlclient.AxolotlClientConfigCommon;
3738
import io.github.axolotlclient.config.screen.CreditsScreen;
3839
import io.github.axolotlclient.config.screen.ProfilesScreen;
@@ -43,6 +44,7 @@
4344
import lombok.Getter;
4445
import net.minecraft.client.KeyMapping;
4546
import net.minecraft.client.Minecraft;
47+
import net.minecraft.client.gui.screens.Screen;
4648
import net.minecraft.client.renderer.texture.DynamicTexture;
4749

4850
public class AxolotlClientConfig extends AxolotlClientConfigCommon {
@@ -140,7 +142,10 @@ public AxolotlClientConfig() {
140142
general.add(configStyle = new StringArrayOption("configStyle", themes,
141143
"configStyle." + ConfigUI.getInstance().getCurrentStyle().getName(), s -> {
142144
ConfigUI.getInstance().setStyle(s.split("\\.")[1]);
143-
Minecraft.getInstance().schedule(() -> Minecraft.getInstance().setScreen(null));
145+
Minecraft.getInstance().schedule(() -> {
146+
Screen newScreen = RecreatableScreen.tryRecreate(Minecraft.getInstance().screen);
147+
Minecraft.getInstance().setScreen(newScreen);
148+
});
144149
}));
145150
AxolotlClient.getInstance().getConfigManager().load();
146151
ConfigUI.getInstance().setStyle(configStyle.get().split("\\.")[1]);

0 commit comments

Comments
 (0)