From d6a6551561bdf6063f82d3c4dfd4ff544474033f Mon Sep 17 00:00:00 2001 From: miozune Date: Mon, 25 Apr 2022 22:31:50 +0900 Subject: [PATCH] Allow GuiRecipe to back to general GuiScreen (#236) --- .../nei/api/IGuiContainerOverlay.java | 7 ++++++- .../java/codechicken/nei/recipe/GuiRecipe.java | 17 +++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/main/java/codechicken/nei/api/IGuiContainerOverlay.java b/src/main/java/codechicken/nei/api/IGuiContainerOverlay.java index 73cc6322..1f55a4f0 100644 --- a/src/main/java/codechicken/nei/api/IGuiContainerOverlay.java +++ b/src/main/java/codechicken/nei/api/IGuiContainerOverlay.java @@ -1,8 +1,13 @@ package codechicken.nei.api; +import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.inventory.GuiContainer; public interface IGuiContainerOverlay { - public GuiContainer getFirstScreen(); + GuiContainer getFirstScreen(); + + default GuiScreen getFirstScreenGeneral() { + return getFirstScreen(); + } } diff --git a/src/main/java/codechicken/nei/recipe/GuiRecipe.java b/src/main/java/codechicken/nei/recipe/GuiRecipe.java index 5520f9c5..1dbefa45 100644 --- a/src/main/java/codechicken/nei/recipe/GuiRecipe.java +++ b/src/main/java/codechicken/nei/recipe/GuiRecipe.java @@ -65,6 +65,7 @@ public abstract class GuiRecipe extends GuiContainer implements IGuiContainerOve public int recipetype; public ContainerRecipe slotcontainer; public GuiContainer firstGui; + public GuiScreen firstGuiGeneral; public GuiScreen prevGui; public GuiButton nextpage; public GuiButton prevpage; @@ -89,12 +90,15 @@ public abstract class GuiRecipe extends GuiContainer implements IGuiContainerOve slotcontainer = (ContainerRecipe) inventorySlots; this.prevGui = prevgui; + this.firstGuiGeneral = prevgui; if(prevgui instanceof GuiContainer) this.firstGui = (GuiContainer)prevgui; - if (prevgui instanceof IGuiContainerOverlay) + if (prevgui instanceof IGuiContainerOverlay) { this.firstGui = ((IGuiContainerOverlay) prevgui).getFirstScreen(); - + this.firstGuiGeneral = ((IGuiContainerOverlay) prevgui).getFirstScreenGeneral(); + } + } /** @@ -311,7 +315,7 @@ public abstract class GuiRecipe extends GuiContainer implements IGuiContainerOve public void keyTyped(char c, int i) { if (i == Keyboard.KEY_ESCAPE) //esc { - mc.displayGuiScreen(firstGui); + mc.displayGuiScreen(firstGuiGeneral); return; } if (GuiContainerManager.getManager(this).lastKeyTyped(i, c)) @@ -324,7 +328,7 @@ public abstract class GuiRecipe extends GuiContainer implements IGuiContainerOve } if (i == mc.gameSettings.keyBindInventory.getKeyCode()) - mc.displayGuiScreen(firstGui); + mc.displayGuiScreen(firstGuiGeneral); else if (i == NEIClientConfig.getKeyBinding("gui.back")) mc.displayGuiScreen(prevGui); else if (i == NEIClientConfig.getKeyBinding("gui.prev_machine")) @@ -644,6 +648,11 @@ public abstract class GuiRecipe extends GuiContainer implements IGuiContainerOve return firstGui; } + @Override + public GuiScreen getFirstScreenGeneral() { + return firstGuiGeneral; + } + public boolean isMouseOver(PositionedStack stack, int recipe) { Slot stackSlot = slotcontainer.getSlotWithStack(stack, getRecipePosition(recipe).x, getRecipePosition(recipe).y); Point mousepos = GuiDraw.getMousePosition();