From 663572ce79513e216de08142acad8c3e406600cf Mon Sep 17 00:00:00 2001
From: dnk1234567 <dnk1234567@sina.cn>
Date: Sat, 1 Feb 2025 11:46:39 +0800
Subject: [PATCH] Try fix #2805

---
 .../ae2/gui/widget/AmountSetWidget.java       | 10 +++++++++-
 .../ae2/gui/widget/ConfigWidget.java          | 20 ++++++++++++++++---
 .../widget/slot/AEFluidConfigSlotWidget.java  |  4 ++--
 .../widget/slot/AEItemConfigSlotWidget.java   |  4 ++--
 4 files changed, 30 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AmountSetWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AmountSetWidget.java
index cddf988878..85c87cd3f2 100644
--- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AmountSetWidget.java
+++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AmountSetWidget.java
@@ -7,6 +7,8 @@
 import com.lowdragmc.lowdraglib.gui.widget.Widget;
 import com.lowdragmc.lowdraglib.utils.Position;
 
+import cpw.mods.fml.relauncher.Side;
+import net.minecraft.client.Minecraft;
 import net.minecraft.client.gui.GuiGraphics;
 import net.minecraft.network.FriendlyByteBuf;
 import net.minecraftforge.api.distmarker.Dist;
@@ -14,6 +16,7 @@
 
 import appeng.api.stacks.GenericStack;
 import lombok.Getter;
+import net.minecraftforge.fml.LogicalSide;
 import org.jetbrains.annotations.NotNull;
 
 import static com.lowdragmc.lowdraglib.gui.util.DrawerHelper.drawStringSized;
@@ -38,11 +41,16 @@ public AmountSetWidget(int x, int y, ConfigWidget widget) {
                 .setMaxStringLength(10);
     }
 
-    public void setSlotIndex(int slotIndex) {
+    @OnlyIn(Dist.CLIENT)
+    public void setSlotIndexClient(int slotIndex) {
         this.index = slotIndex;
         writeClientAction(0, buf -> buf.writeVarInt(this.index));
     }
 
+    public void setSlotIndex(int slotIndex){
+        this.index = slotIndex;
+    }
+
     public String getAmountStr() {
         if (this.index < 0) {
             return "0";
diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/ConfigWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/ConfigWidget.java
index e25631f9c1..8fdc746f68 100644
--- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/ConfigWidget.java
+++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/ConfigWidget.java
@@ -41,13 +41,27 @@ public ConfigWidget(int x, int y, IConfigurableSlot[] config, boolean isStocking
         this.amountSetWidget.getAmountText().setVisible(false);
     }
 
-    public void enableAmount(int slotIndex) {
+    @OnlyIn(Dist.CLIENT)
+    public void enableAmountClient(int slotIndex) {
+        this.amountSetWidget.setSlotIndexClient(slotIndex);
+        this.amountSetWidget.setVisible(true);
+        this.amountSetWidget.getAmountText().setVisible(true);
+    }
+
+    @OnlyIn(Dist.CLIENT)
+    public void disableAmountClient() {
+        this.amountSetWidget.setSlotIndexClient(-1);
+        this.amountSetWidget.setVisible(false);
+        this.amountSetWidget.getAmountText().setVisible(false);
+    }
+
+    public void enableAmount(int slotIndex){
         this.amountSetWidget.setSlotIndex(slotIndex);
         this.amountSetWidget.setVisible(true);
         this.amountSetWidget.getAmountText().setVisible(true);
     }
 
-    public void disableAmount() {
+    public void disableAmount(){
         this.amountSetWidget.setSlotIndex(-1);
         this.amountSetWidget.setVisible(false);
         this.amountSetWidget.getAmountText().setVisible(false);
@@ -66,7 +80,7 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) {
                 slot.setSelect(false);
             }
         }
-        this.disableAmount();
+        this.disableAmountClient();
         return super.mouseClicked(mouseX, mouseY, button);
     }
 
diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEFluidConfigSlotWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEFluidConfigSlotWidget.java
index 9a2828e175..21db46113c 100644
--- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEFluidConfigSlotWidget.java
+++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEFluidConfigSlotWidget.java
@@ -121,7 +121,7 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) {
                 writeClientAction(REMOVE_ID, buf -> {});
 
                 if (!parentWidget.isStocking()) {
-                    this.parentWidget.disableAmount();
+                    this.parentWidget.disableAmountClient();
                 }
             } else if (button == 0) {
                 // Left click to set/select
@@ -129,7 +129,7 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) {
                 FluidUtil.getFluidContained(hold).ifPresent(f -> writeClientAction(UPDATE_ID, f::writeToPacket));
 
                 if (!parentWidget.isStocking()) {
-                    this.parentWidget.enableAmount(this.index);
+                    this.parentWidget.enableAmountClient(this.index);
                     this.select = true;
                 }
             }
diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEItemConfigSlotWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEItemConfigSlotWidget.java
index 436a6ea243..a08c822f0b 100644
--- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEItemConfigSlotWidget.java
+++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEItemConfigSlotWidget.java
@@ -97,7 +97,7 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) {
                 writeClientAction(REMOVE_ID, buf -> {});
 
                 if (!parentWidget.isStocking()) {
-                    this.parentWidget.disableAmount();
+                    this.parentWidget.disableAmountClient();
                 }
             } else if (button == 0) {
                 // Left click to set/select
@@ -108,7 +108,7 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) {
                 }
 
                 if (!parentWidget.isStocking()) {
-                    this.parentWidget.enableAmount(this.index);
+                    this.parentWidget.enableAmountClient(this.index);
                     this.select = true;
                 }
             }