From 6fc7b8fb0f613864afbd2f0e80223bdc554e2080 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Thu, 5 Nov 2020 15:27:49 +0100 Subject: [PATCH] Fix incorrect layering of vanilla gui additions (fixes #385) --- jGui | 2 +- .../com/replaymod/core/gui/GuiBackgroundProcesses.java | 8 +++++++- .../java/com/replaymod/core/gui/RestoreReplayGui.java | 2 +- .../com/replaymod/recording/gui/GuiRecordingControls.java | 3 ++- .../java/com/replaymod/recording/gui/GuiSavingReplay.java | 4 ++-- .../java/com/replaymod/recording/handler/GuiHandler.java | 7 ++++--- .../com/replaymod/recording/packet/PacketListener.java | 2 +- src/main/java/com/replaymod/render/ReplayModRender.java | 2 +- 8 files changed, 19 insertions(+), 11 deletions(-) diff --git a/jGui b/jGui index 5e515a2e..5127217e 160000 --- a/jGui +++ b/jGui @@ -1 +1 @@ -Subproject commit 5e515a2ecc4d1faa02aeafd48f366a08ab183e46 +Subproject commit 5127217e0d6e6360af4b4a9c1dde32c53040bde6 diff --git a/src/main/java/com/replaymod/core/gui/GuiBackgroundProcesses.java b/src/main/java/com/replaymod/core/gui/GuiBackgroundProcesses.java index 3aabaa04..39b71973 100644 --- a/src/main/java/com/replaymod/core/gui/GuiBackgroundProcesses.java +++ b/src/main/java/com/replaymod/core/gui/GuiBackgroundProcesses.java @@ -38,7 +38,8 @@ public class GuiBackgroundProcesses extends EventRegistrations { //#endif if (guiScreen != getMinecraft().currentScreen) return; // people tend to construct GuiScreens without opening them - VanillaGuiScreen.setup(guiScreen).setLayout(new CustomLayout() { + VanillaGuiScreen vanillaGui = VanillaGuiScreen.wrap(guiScreen); + vanillaGui.setLayout(new CustomLayout(vanillaGui.getLayout()) { @Override protected void layout(GuiScreen container, int width, int height) { pos(panel, width - 5 - width(panel), 5); @@ -76,6 +77,11 @@ public class GuiBackgroundProcesses extends EventRegistrations { }); } + @Override + public int getLayer() { + return 1; + } + @Override public ReadableDimension getMinSize() { ReadableDimension minSize = inner.getMinSize(); diff --git a/src/main/java/com/replaymod/core/gui/RestoreReplayGui.java b/src/main/java/com/replaymod/core/gui/RestoreReplayGui.java index 5240ac66..e982d0fb 100644 --- a/src/main/java/com/replaymod/core/gui/RestoreReplayGui.java +++ b/src/main/java/com/replaymod/core/gui/RestoreReplayGui.java @@ -102,7 +102,7 @@ public class RestoreReplayGui extends AbstractGuiScreen { } catch (IOException e) { LOGGER.error("Recovering replay file:", e); CrashReport crashReport = CrashReport.create(e, "Recovering replay file"); - core.runLater(() -> Utils.error(LOGGER, VanillaGuiScreen.setup(getMinecraft().currentScreen), crashReport, () -> {})); + core.runLater(() -> Utils.error(LOGGER, VanillaGuiScreen.wrap(getMinecraft().currentScreen), crashReport, () -> {})); } finally { core.runLater(() -> core.getBackgroundProcesses().removeProcess(savingProcess)); } diff --git a/src/main/java/com/replaymod/recording/gui/GuiRecordingControls.java b/src/main/java/com/replaymod/recording/gui/GuiRecordingControls.java index cc36488f..df97260f 100644 --- a/src/main/java/com/replaymod/recording/gui/GuiRecordingControls.java +++ b/src/main/java/com/replaymod/recording/gui/GuiRecordingControls.java @@ -107,7 +107,8 @@ public class GuiRecordingControls extends EventRegistrations { .orElse(MCVer.findButton(buttonList, "menu.disconnect", 1)) .>map(it -> (height) -> it.y) .orElse((height) -> height / 4 + 120 - 16); - VanillaGuiScreen.setup(guiScreen).setLayout(new CustomLayout() { + VanillaGuiScreen vanillaGui = VanillaGuiScreen.wrap(guiScreen); + vanillaGui.setLayout(new CustomLayout(vanillaGui.getLayout()) { @Override protected void layout(de.johni0702.minecraft.gui.container.GuiScreen container, int width, int height) { pos(panel, width / 2 - 100, yPos.apply(height) + 16 + 8); diff --git a/src/main/java/com/replaymod/recording/gui/GuiSavingReplay.java b/src/main/java/com/replaymod/recording/gui/GuiSavingReplay.java index 3cbf609e..e42b6e91 100644 --- a/src/main/java/com/replaymod/recording/gui/GuiSavingReplay.java +++ b/src/main/java/com/replaymod/recording/gui/GuiSavingReplay.java @@ -140,7 +140,7 @@ public class GuiSavingReplay { } catch (IOException e) { logger.error("Deleting replay file:", e); CrashReport crashReport = CrashReport.create(e, "Deleting replay file"); - core.runLater(() -> Utils.error(logger, VanillaGuiScreen.setup(mc.currentScreen), crashReport, () -> {})); + core.runLater(() -> Utils.error(logger, VanillaGuiScreen.wrap(mc.currentScreen), crashReport, () -> {})); } return; } @@ -155,7 +155,7 @@ public class GuiSavingReplay { } catch (IOException e) { logger.error("Renaming replay file:", e); CrashReport crashReport = CrashReport.create(e, "Renaming replay file"); - core.runLater(() -> Utils.error(logger, VanillaGuiScreen.setup(mc.currentScreen), crashReport, () -> {})); + core.runLater(() -> Utils.error(logger, VanillaGuiScreen.wrap(mc.currentScreen), crashReport, () -> {})); } } } diff --git a/src/main/java/com/replaymod/recording/handler/GuiHandler.java b/src/main/java/com/replaymod/recording/handler/GuiHandler.java index 4d3cc37e..ffeb1e87 100644 --- a/src/main/java/com/replaymod/recording/handler/GuiHandler.java +++ b/src/main/java/com/replaymod/recording/handler/GuiHandler.java @@ -60,7 +60,8 @@ public class GuiHandler extends EventRegistrations { settingsRegistry.save(); }); - VanillaGuiScreen.setup(gui).setLayout(new CustomLayout() { + VanillaGuiScreen vanillaGui = VanillaGuiScreen.wrap(gui); + vanillaGui.setLayout(new CustomLayout(vanillaGui.getLayout()) { @Override protected void layout(GuiScreen container, int width, int height) { //size(recordingCheckbox, 200, 20); @@ -70,7 +71,7 @@ public class GuiHandler extends EventRegistrations { } if (gui instanceof AddServerScreen) { - VanillaGuiScreen vanillaGui = VanillaGuiScreen.setup(gui); + VanillaGuiScreen vanillaGui = VanillaGuiScreen.wrap(gui); GuiButton replayButton = new GuiReplayButton().onClick(() -> { ServerInfo serverInfo = ((AddServerScreenAccessor) gui).getServer(); ServerInfoExt serverInfoExt = ServerInfoExt.from(serverInfo); @@ -89,7 +90,7 @@ public class GuiHandler extends EventRegistrations { }); GuiInfoPopup.open(vanillaGui, autoRecording); }); - vanillaGui.setLayout(new CustomLayout() { + vanillaGui.setLayout(new CustomLayout(vanillaGui.getLayout()) { @Override protected void layout(GuiScreen container, int width, int height) { size(replayButton, 20, 20); diff --git a/src/main/java/com/replaymod/recording/packet/PacketListener.java b/src/main/java/com/replaymod/recording/packet/PacketListener.java index dc46c768..53b7de29 100644 --- a/src/main/java/com/replaymod/recording/packet/PacketListener.java +++ b/src/main/java/com/replaymod/recording/packet/PacketListener.java @@ -277,7 +277,7 @@ public class PacketListener extends ChannelInboundHandlerAdapter { } catch (Exception e) { logger.error("Saving replay file:", e); CrashReport crashReport = CrashReport.create(e, "Saving replay file"); - core.runLater(() -> Utils.error(logger, VanillaGuiScreen.setup(mc.currentScreen), crashReport, guiSavingReplay::close)); + core.runLater(() -> Utils.error(logger, VanillaGuiScreen.wrap(mc.currentScreen), crashReport, guiSavingReplay::close)); return; } } diff --git a/src/main/java/com/replaymod/render/ReplayModRender.java b/src/main/java/com/replaymod/render/ReplayModRender.java index a9f26c92..71e07b20 100644 --- a/src/main/java/com/replaymod/render/ReplayModRender.java +++ b/src/main/java/com/replaymod/render/ReplayModRender.java @@ -88,7 +88,7 @@ public class ReplayModRender extends EventRegistrations implements Module { RenderJob.writeQueue(replayFile, renderQueue); } catch (IOException e) { e.printStackTrace(); - VanillaGuiScreen screen = VanillaGuiScreen.setup(getCore().getMinecraft().currentScreen); + VanillaGuiScreen screen = VanillaGuiScreen.wrap(getCore().getMinecraft().currentScreen); CrashReport report = CrashReport.create(e, "Reading timeline"); Utils.error(LOGGER, screen, report, () -> {}); }