From 427b961fb0b0451da2613aa8a9674f7d69e7bdaf Mon Sep 17 00:00:00 2001 From: axolotlmaid Date: Tue, 16 Jul 2024 12:36:23 +0100 Subject: [PATCH] Fix options not refreshing in the options screen without reopening (#22) --- .../axolotlmaid/optionsprofiles/gui/ProfilesScreen.java | 9 ++++++++- .../optionsprofiles/mixin/MixinOptionsScreen.java | 6 +++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/common/src/main/java/com/axolotlmaid/optionsprofiles/gui/ProfilesScreen.java b/common/src/main/java/com/axolotlmaid/optionsprofiles/gui/ProfilesScreen.java index 8dff5ad..c31de5b 100644 --- a/common/src/main/java/com/axolotlmaid/optionsprofiles/gui/ProfilesScreen.java +++ b/common/src/main/java/com/axolotlmaid/optionsprofiles/gui/ProfilesScreen.java @@ -4,15 +4,18 @@ import com.axolotlmaid.optionsprofiles.profiles.Profiles; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.layouts.LinearLayout; import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.screens.options.OptionsScreen; import net.minecraft.client.gui.screens.options.OptionsSubScreen; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; public class ProfilesScreen extends OptionsSubScreen { + private Screen optionsLastScreen; public ProfilesList profilesList; - public ProfilesScreen(Screen lastScreen) { + public ProfilesScreen(Screen lastScreen, Screen optionsLastScreen) { super(lastScreen, null, Component.translatable("gui.optionsprofiles.profiles-menu")); + this.optionsLastScreen = optionsLastScreen; } protected void addOptions() {} @@ -41,6 +44,10 @@ public class ProfilesScreen extends OptionsSubScreen { ); } + public void onClose() { + this.minecraft.setScreen(new OptionsScreen(optionsLastScreen, this.minecraft.options)); + } + protected void repositionElements() { this.layout.arrangeElements(); this.profilesList.updateSize(this.width, this.layout); diff --git a/common/src/main/java/com/axolotlmaid/optionsprofiles/mixin/MixinOptionsScreen.java b/common/src/main/java/com/axolotlmaid/optionsprofiles/mixin/MixinOptionsScreen.java index 9f50b6c..5c535a3 100644 --- a/common/src/main/java/com/axolotlmaid/optionsprofiles/mixin/MixinOptionsScreen.java +++ b/common/src/main/java/com/axolotlmaid/optionsprofiles/mixin/MixinOptionsScreen.java @@ -5,13 +5,17 @@ import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.options.OptionsScreen; import net.minecraft.network.chat.Component; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(OptionsScreen.class) public class MixinOptionsScreen extends Screen { + @Shadow @Final private Screen lastScreen; + protected MixinOptionsScreen(Component component) { super(component); } @@ -21,7 +25,7 @@ public class MixinOptionsScreen extends Screen { this.addRenderableWidget( Button.builder( Component.translatable("gui.optionsprofiles.profiles-menu"), - (button) -> this.minecraft.setScreen(new ProfilesScreen(this))) + (button) -> this.minecraft.setScreen(new ProfilesScreen(this, lastScreen))) .width(75) .pos(5, 5) .build()