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..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 @@ -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, 15, 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..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 @@ -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"), + (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",