From 8b5b515c76ed501bc1eba9a57aca2391d338ccd9 Mon Sep 17 00:00:00 2001 From: rubensworks Date: Thu, 20 Aug 2026 17:03:03 +0000 Subject: [PATCH 1/2] Allow going back from the crafting plan gui to the amount gui Pressing ESC in the crafting plan gui now re-opens the gui in which the crafting amount can be set, instead of closing the whole gui. Both guis also get an explicit back button, and the previously entered amount is remembered when going back. Closes CyclopsMC/IntegratedCrafting#140 Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_017xtbsQuaXzvi2CpfzksJbp --- ...enTerminalStorageCraftingOptionAmount.java | 11 +++++++- ...inerScreenTerminalStorageCraftingPlan.java | 26 +++++++++++++++++++ .../integratedterminals/lang/en_us.json | 1 + 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/cyclops/integratedterminals/client/gui/container/ContainerScreenTerminalStorageCraftingOptionAmount.java b/src/main/java/org/cyclops/integratedterminals/client/gui/container/ContainerScreenTerminalStorageCraftingOptionAmount.java index b29695743..de644caec 100644 --- a/src/main/java/org/cyclops/integratedterminals/client/gui/container/ContainerScreenTerminalStorageCraftingOptionAmount.java +++ b/src/main/java/org/cyclops/integratedterminals/client/gui/container/ContainerScreenTerminalStorageCraftingOptionAmount.java @@ -5,6 +5,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.Button; +import net.minecraft.client.gui.components.Tooltip; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; @@ -86,7 +87,7 @@ public void init() { numberField.setVisible(true); numberField.setTextColor(16777215); numberField.setCanLoseFocus(true); - numberField.setValue("1"); + numberField.setValue(Integer.toString(numberField.validateNumber(getMenu().getCraftingOptionGuiData().getAmount()))); addRenderableWidget(numberField); scrollBar = new WidgetScrollBar(leftPos + 153, topPos + 15, 54, @@ -108,6 +109,14 @@ public void init() { Component.translatable("gui.integratedterminals.terminal_storage.step.next").withStyle(ChatFormatting.YELLOW), (bb) -> calculateCraftingJob(), true)); + + ButtonText backButton = new ButtonText(leftPos + 5, topPos + 33, 20, 20, + Component.translatable("gui.integratedterminals.terminal_storage.step.back"), + Component.literal("<"), + (bb) -> returnToTerminalStorage(), + true); + backButton.setTooltip(Tooltip.create(Component.translatable("gui.integratedterminals.terminal_storage.step.back"))); + addRenderableWidget(backButton); } @Override diff --git a/src/main/java/org/cyclops/integratedterminals/client/gui/container/ContainerScreenTerminalStorageCraftingPlan.java b/src/main/java/org/cyclops/integratedterminals/client/gui/container/ContainerScreenTerminalStorageCraftingPlan.java index 8a2ac417d..fcb335b3d 100644 --- a/src/main/java/org/cyclops/integratedterminals/client/gui/container/ContainerScreenTerminalStorageCraftingPlan.java +++ b/src/main/java/org/cyclops/integratedterminals/client/gui/container/ContainerScreenTerminalStorageCraftingPlan.java @@ -9,6 +9,7 @@ import org.cyclops.cyclopscore.client.gui.component.button.ButtonText; import org.cyclops.cyclopscore.client.gui.container.ContainerScreenExtended; import org.cyclops.cyclopscore.helper.L10NHelpers; +import org.cyclops.integratedterminals.IntegratedTerminals; import org.cyclops.integratedterminals.Reference; import org.cyclops.integratedterminals.api.terminalstorage.crafting.ITerminalCraftingPlan; import org.cyclops.integratedterminals.api.terminalstorage.crafting.ITerminalCraftingPlanFlat; @@ -17,6 +18,7 @@ import org.cyclops.integratedterminals.client.gui.container.component.GuiCraftingPlanToggler; import org.cyclops.integratedterminals.core.client.gui.CraftingOptionGuiData; import org.cyclops.integratedterminals.inventory.container.ContainerTerminalStorageCraftingPlanBase; +import org.cyclops.integratedterminals.network.packet.TerminalStorageIngredientOpenCraftingJobAmountGuiPacket; import org.lwjgl.glfw.GLFW; import javax.annotation.Nullable; @@ -113,6 +115,12 @@ public void init() { this.guiCraftingPlanToggler.init(); + addRenderableWidget(new ButtonText(leftPos + 221 + 10 - 50 - 55, topPos + 198, 50, 20, + Component.translatable("gui.integratedterminals.terminal_storage.step.back"), + Component.translatable("gui.integratedterminals.terminal_storage.step.back").withStyle(ChatFormatting.YELLOW), + (b) -> returnToCraftingOptionAmount(), + true)); + addRenderableWidget(buttonConfirm = new ButtonText(leftPos + 221 + 10 - 50, topPos + 198, 50, 20, Component.translatable("gui.integratedterminals.terminal_storage.step.craft"), Component.translatable("gui.integratedterminals.terminal_storage.step.craft").withStyle(ChatFormatting.YELLOW), @@ -123,6 +131,10 @@ public void init() { @Override public boolean keyPressed(int typedChar, int keyCode, int modifiers) { + if (typedChar == GLFW.GLFW_KEY_ESCAPE) { + returnToCraftingOptionAmount(); + return true; + } if (this.guiCraftingPlan != null && this.guiCraftingPlan.isValid() && (typedChar == GLFW.GLFW_KEY_ENTER || typedChar == GLFW.GLFW_KEY_KP_ENTER)) { buttonConfirm.onPress(); @@ -131,6 +143,20 @@ public boolean keyPressed(int typedChar, int keyCode, int modifiers) { return super.keyPressed(typedChar, keyCode, modifiers); } + /** + * Go back to the gui in which the crafting amount can be set. + * If no crafting option is known, the terminal itself is opened again. + */ + private void returnToCraftingOptionAmount() { + CraftingOptionGuiData data = getMenu().getCraftingOptionGuiData(); + if (data.getCraftingOption() == null) { + returnToTerminalStorage(); + } else { + IntegratedTerminals._instance.getPacketHandler().sendToServer( + new TerminalStorageIngredientOpenCraftingJobAmountGuiPacket(data)); + } + } + private void returnToTerminalStorage() { CraftingOptionGuiData data = getMenu().getCraftingOptionGuiData(); data.getLocation().openContainerFromClient(data); diff --git a/src/main/resources/assets/integratedterminals/lang/en_us.json b/src/main/resources/assets/integratedterminals/lang/en_us.json index 9dbbd48d4..1447206a5 100644 --- a/src/main/resources/assets/integratedterminals/lang/en_us.json +++ b/src/main/resources/assets/integratedterminals/lang/en_us.json @@ -21,6 +21,7 @@ "gui.integratedterminals.terminal_storage.craftingplan.label.failed.insufficient_crafting_interfaces": "Crafting plan - Insufficient Crafting Interfaces", "gui.integratedterminals.terminal_storage.craftingplan.label.running": "Crafting plan - Running", "gui.integratedterminals.terminal_storage.step.next": "Next", + "gui.integratedterminals.terminal_storage.step.back": "Back", "gui.integratedterminals.terminal_storage.step.craft": "Craft", "gui.integratedterminals.terminal_storage.step.crafting_plan_calculating": "Calculating crafting plan...", "gui.integratedterminals.terminal_storage.stored": "Stored: %s", From 1dbd1a8d315ec425a1ed9809cbe7cf35601a72f5 Mon Sep 17 00:00:00 2001 From: Ruben Taelman Date: Sat, 22 Aug 2026 07:08:11 +0200 Subject: [PATCH 2/2] Improve styling of buttons --- .../ContainerScreenTerminalStorageCraftingOptionAmount.java | 2 +- .../container/ContainerScreenTerminalStorageCraftingPlan.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/cyclops/integratedterminals/client/gui/container/ContainerScreenTerminalStorageCraftingOptionAmount.java b/src/main/java/org/cyclops/integratedterminals/client/gui/container/ContainerScreenTerminalStorageCraftingOptionAmount.java index de644caec..3cb470f67 100644 --- a/src/main/java/org/cyclops/integratedterminals/client/gui/container/ContainerScreenTerminalStorageCraftingOptionAmount.java +++ b/src/main/java/org/cyclops/integratedterminals/client/gui/container/ContainerScreenTerminalStorageCraftingOptionAmount.java @@ -110,7 +110,7 @@ public void init() { (bb) -> calculateCraftingJob(), true)); - ButtonText backButton = new ButtonText(leftPos + 5, topPos + 33, 20, 20, + ButtonText backButton = new ButtonText(leftPos + 5, topPos + 33, 15, 20, Component.translatable("gui.integratedterminals.terminal_storage.step.back"), Component.literal("<"), (bb) -> returnToTerminalStorage(), diff --git a/src/main/java/org/cyclops/integratedterminals/client/gui/container/ContainerScreenTerminalStorageCraftingPlan.java b/src/main/java/org/cyclops/integratedterminals/client/gui/container/ContainerScreenTerminalStorageCraftingPlan.java index fcb335b3d..096a92f23 100644 --- a/src/main/java/org/cyclops/integratedterminals/client/gui/container/ContainerScreenTerminalStorageCraftingPlan.java +++ b/src/main/java/org/cyclops/integratedterminals/client/gui/container/ContainerScreenTerminalStorageCraftingPlan.java @@ -117,7 +117,7 @@ public void init() { addRenderableWidget(new ButtonText(leftPos + 221 + 10 - 50 - 55, topPos + 198, 50, 20, Component.translatable("gui.integratedterminals.terminal_storage.step.back"), - Component.translatable("gui.integratedterminals.terminal_storage.step.back").withStyle(ChatFormatting.YELLOW), + Component.translatable("gui.integratedterminals.terminal_storage.step.back"), (b) -> returnToCraftingOptionAmount(), true));