From eefb11544e3e38eebbc40fc5602c963388fe5dc7 Mon Sep 17 00:00:00 2001 From: Domi <1492543+FakeDomi@users.noreply.github.com> Date: Mon, 20 Mar 2023 20:01:06 +0100 Subject: [PATCH] Add craftable items QOL features (tooltips / hold ALT to toggle craft request) (#241) --- src/main/java/appeng/client/gui/AEBaseGui.java | 6 +++++- src/main/java/appeng/client/gui/AEBaseMEGui.java | 5 +++++ src/main/java/appeng/client/render/StackSizeRenderer.java | 6 +++--- src/main/java/appeng/core/AEConfig.java | 6 ++++++ src/main/java/appeng/core/localization/ButtonToolTips.java | 1 + .../resources/assets/appliedenergistics2/lang/de_de.lang | 1 + .../resources/assets/appliedenergistics2/lang/en_us.lang | 1 + 7 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/main/java/appeng/client/gui/AEBaseGui.java b/src/main/java/appeng/client/gui/AEBaseGui.java index 001c27579..c11aa1277 100644 --- a/src/main/java/appeng/client/gui/AEBaseGui.java +++ b/src/main/java/appeng/client/gui/AEBaseGui.java @@ -49,6 +49,7 @@ import mezz.jei.api.gui.IGhostIngredientHandler; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.renderer.BufferBuilder; import net.minecraft.client.renderer.GlStateManager; @@ -568,7 +569,10 @@ public abstract class AEBaseGui extends GuiContainer implements IMTModGuiContain action = (mouseButton == 1) ? InventoryAction.SPLIT_OR_PLACE_SINGLE : InventoryAction.PICKUP_OR_SET_DOWN; stack = ((SlotME) slot).getAEStack(); - if (stack != null && action == InventoryAction.PICKUP_OR_SET_DOWN && stack.getStackSize() == 0 && player.inventory.getItemStack().isEmpty()) { + if (stack != null + && action == InventoryAction.PICKUP_OR_SET_DOWN + && (stack.getStackSize() == 0 || GuiScreen.isAltKeyDown()) + && player.inventory.getItemStack().isEmpty()) { action = InventoryAction.AUTO_CRAFT; } diff --git a/src/main/java/appeng/client/gui/AEBaseMEGui.java b/src/main/java/appeng/client/gui/AEBaseMEGui.java index 3ddb83b28..bb7e9f43d 100644 --- a/src/main/java/appeng/client/gui/AEBaseMEGui.java +++ b/src/main/java/appeng/client/gui/AEBaseMEGui.java @@ -76,6 +76,11 @@ public abstract class AEBaseMEGui extends AEBaseGui { currentToolTip.add(format); } + if (myStack.isCraftable() && AEConfig.instance().isShowCraftableTooltip()) { + final String local = ButtonToolTips.ItemCraftable.getLocal(); + currentToolTip.add(TextFormatting.GRAY + local); + } + this.drawHoveringText(currentToolTip, x, y, this.fontRenderer); return; diff --git a/src/main/java/appeng/client/render/StackSizeRenderer.java b/src/main/java/appeng/client/render/StackSizeRenderer.java index 76fedc84a..c9a7660a2 100644 --- a/src/main/java/appeng/client/render/StackSizeRenderer.java +++ b/src/main/java/appeng/client/render/StackSizeRenderer.java @@ -26,6 +26,7 @@ import appeng.util.ISlimReadableNumberConverter; import appeng.util.IWideReadableNumberConverter; import appeng.util.ReadableNumberConverter; import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.renderer.GlStateManager; @@ -48,7 +49,7 @@ public class StackSizeRenderer { final boolean unicodeFlag = fontRenderer.getUnicodeFlag(); fontRenderer.setUnicodeFlag(false); - if (aeStack.getStackSize() == 0 && aeStack.isCraftable()) { + if ((aeStack.getStackSize() == 0 || GuiScreen.isAltKeyDown()) && aeStack.isCraftable()) { final String craftLabelText = AEConfig.instance().useTerminalUseLargeFont() ? GuiText.LargeFontCraft.getLocal() : GuiText.SmallFontCraft .getLocal(); GlStateManager.disableLighting(); @@ -64,8 +65,7 @@ public class StackSizeRenderer { GlStateManager.enableDepth(); GlStateManager.enableBlend(); } - - if (aeStack.getStackSize() > 0) { + else if (aeStack.getStackSize() > 0) { final String stackSize = this.getToBeRenderedStackSize(aeStack.getStackSize()); GlStateManager.disableLighting(); diff --git a/src/main/java/appeng/core/AEConfig.java b/src/main/java/appeng/core/AEConfig.java index b7d0ae309..3cba184d3 100644 --- a/src/main/java/appeng/core/AEConfig.java +++ b/src/main/java/appeng/core/AEConfig.java @@ -82,6 +82,7 @@ public final class AEConfig extends Configuration implements IConfigurableObject private boolean disableColoredCableRecipesInJEI = true; private int craftingCalculationTimePerTick = 5; private PowerUnits selectedPowerUnit = PowerUnits.AE; + private boolean showCraftableTooltip = true; // Spatial IO/Dimension private int storageProviderID = -1; private int storageDimensionID = -1; @@ -248,6 +249,7 @@ public final class AEConfig extends Configuration implements IConfigurableObject this.enableEffects = this.get("Client", "enableEffects", true).getBoolean(true); this.useLargeFonts = this.get("Client", "useTerminalUseLargeFont", false).getBoolean(false); this.useColoredCraftingStatus = this.get("Client", "useColoredCraftingStatus", true).getBoolean(true); + this.showCraftableTooltip = this.get("Client", "showCraftableTooltip", true, "Whether to add \"Craftable\" to item tooltips when they can be crafted automatically.").getBoolean(true); // load buttons.. for (int btnNum = 0; btnNum < 4; btnNum++) { @@ -501,6 +503,10 @@ public final class AEConfig extends Configuration implements IConfigurableObject return this.useColoredCraftingStatus; } + public boolean isShowCraftableTooltip() { + return this.showCraftableTooltip; + } + public boolean isDisableColoredCableRecipesInJEI() { return this.disableColoredCableRecipesInJEI; } diff --git a/src/main/java/appeng/core/localization/ButtonToolTips.java b/src/main/java/appeng/core/localization/ButtonToolTips.java index ecbe17a65..485d8ce2c 100644 --- a/src/main/java/appeng/core/localization/ButtonToolTips.java +++ b/src/main/java/appeng/core/localization/ButtonToolTips.java @@ -161,6 +161,7 @@ public enum ButtonToolTips { // Used in the tooltips of the items in the terminal, when moused over ItemsStored, ItemsRequestable, + ItemCraftable, SchedulingMode, SchedulingModeDefault, diff --git a/src/main/resources/assets/appliedenergistics2/lang/de_de.lang b/src/main/resources/assets/appliedenergistics2/lang/de_de.lang index 7d6c81731..07c65d9b7 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/de_de.lang +++ b/src/main/resources/assets/appliedenergistics2/lang/de_de.lang @@ -323,6 +323,7 @@ gui.tooltips.appliedenergistics2.SchedulingModeRoundRobin=Exportiere im Round-Ro gui.tooltips.appliedenergistics2.SchedulingModeRandom=Exportiere im Zufallsmodus. gui.tooltips.appliedenergistics2.ItemsStored=Items gespeichert: %s gui.tooltips.appliedenergistics2.ItemsRequestable=Anfragbare Items: %s +gui.tooltips.appliedenergistics2.ItemCraftable=Herstellbar // Units gui.appliedenergistics2.units.appliedenergstics=AE diff --git a/src/main/resources/assets/appliedenergistics2/lang/en_us.lang b/src/main/resources/assets/appliedenergistics2/lang/en_us.lang index 1146ec9e0..f004c9981 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/en_us.lang +++ b/src/main/resources/assets/appliedenergistics2/lang/en_us.lang @@ -354,6 +354,7 @@ gui.tooltips.appliedenergistics2.FilterModeKeep=Restore previous search filter. gui.tooltips.appliedenergistics2.FilterModeClear=Clear on each opening. gui.tooltips.appliedenergistics2.ItemsStored=Items Stored: %s gui.tooltips.appliedenergistics2.ItemsRequestable=Items Requestable: %s +gui.tooltips.appliedenergistics2.ItemCraftable=Craftable gui.tooltips.appliedenergistics2.P2PFrequency=Frequency: %s gui.tooltips.appliedenergistics2.MultiplyByTwo=Double the items set gui.tooltips.appliedenergistics2.MultiplyByTwoDesc=Will try to double the items set in the crafting slots