Skip to content

Commit 512c744

Browse files
committed
huh
1 parent 1f07490 commit 512c744

1 file changed

Lines changed: 25 additions & 35 deletions

File tree

src/main/java/com/cleanroommc/modularui/screen/ClientScreenHandler.java

Lines changed: 25 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@
6464
import java.io.IOException;
6565
import java.util.Collections;
6666
import java.util.List;
67-
import java.util.Objects;
6867
import java.util.function.Predicate;
6968

7069
@ApiStatus.Internal
@@ -80,51 +79,42 @@ public class ClientScreenHandler {
8079

8180
private static IMuiScreen lastMui;
8281

83-
// we need to know the actual gui and not some fake bs some other mod overwrites
82+
// we need to know the actual gui and not some fake screen some other mod overwrites
8483
@SubscribeEvent(priority = EventPriority.LOWEST)
8584
public void onGuiOpen(GuiOpenEvent event) {
86-
GuiScreen newGui = event.getGui();
85+
onGuiChanged(getMCScreen(), event.getGui());
86+
}
8787

88+
private static void onGuiChanged(GuiScreen oldScreen, GuiScreen newScreen) {
89+
if (oldScreen == newScreen) return;
8890
defaultContext.reset();
89-
if (lastMui != null && newGui == null) {
90-
if (lastMui.getScreen().getPanelManager().isOpen()) {
91-
lastMui.getScreen().getPanelManager().closeAll();
91+
92+
GuiScreen lastParent = null;
93+
if (lastMui != null) {
94+
if (newScreen == lastMui) {
95+
// reopen
96+
return;
9297
}
93-
lastMui.getScreen().getPanelManager().dispose();
98+
lastParent = lastMui.getScreen().getContext().getParentScreen();
99+
lastMui.getScreen().onCloseParent();
94100
lastMui = null;
95-
} else if (newGui instanceof IMuiScreen screenWrapper) {
96-
if (lastMui == null) {
97-
lastMui = screenWrapper;
98-
} else if (lastMui == newGui) {
99-
lastMui.getScreen().getPanelManager().reopen();
100-
} else {
101-
if (lastMui.getScreen().getPanelManager().isOpen()) {
102-
lastMui.getScreen().getPanelManager().closeAll();
103-
}
104-
lastMui.getScreen().getPanelManager().dispose();
105-
lastMui = screenWrapper;
106-
}
101+
currentScreen = null;
102+
lastChar = null;
107103
}
108104

109-
if (newGui instanceof IMuiScreen muiScreen) {
110-
Objects.requireNonNull(muiScreen.getScreen(), "ModularScreen must not be null!");
111-
if (currentScreen != muiScreen.getScreen()) {
112-
if (hasScreen()) {
113-
currentScreen.onCloseParent();
114-
currentScreen = null;
115-
lastChar = null;
116-
}
117-
currentScreen = muiScreen.getScreen();
118-
currentScreen.getContext().setParentScreen(Minecraft.getMinecraft().currentScreen);
119-
fpsCounter.reset();
105+
if (newScreen instanceof IMuiScreen muiScreen) {
106+
lastMui = muiScreen;
107+
currentScreen = muiScreen.getScreen();
108+
GuiScreen parent = oldScreen;
109+
if (lastParent == parent && parent instanceof IMuiScreen oldMuiScreen) {
110+
parent = oldMuiScreen.getScreen().getContext().getParentScreen();
120111
}
121-
} else if (hasScreen() && getMCScreen() != null && newGui != getMCScreen()) {
122-
currentScreen.onCloseParent();
123-
currentScreen = null;
124-
lastChar = null;
112+
currentScreen.getContext().setParentScreen(parent);
113+
fpsCounter.reset();
125114
}
115+
126116
GuiErrorHandler.INSTANCE.clear();
127-
OverlayManager.onGuiOpen(event);
117+
OverlayManager.onGuiOpen(newScreen);
128118
}
129119

130120
@SubscribeEvent

0 commit comments

Comments
 (0)