aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormiozune <miozune@gmail.com>2022-07-31 15:42:03 +0900
committerGitHub <noreply@github.com>2022-07-31 13:42:03 +0700
commitb7c74a9de643f7fe4dab08e081fa1e652671afe2 (patch)
tree87f35508a1b92aad89c75d94403cd50646280269
parente0393cc3e77a28c657137cb636e488640f9a42c9 (diff)
downloadGT5-Unofficial-b7c74a9de643f7fe4dab08e081fa1e652671afe2.tar.gz
GT5-Unofficial-b7c74a9de643f7fe4dab08e081fa1e652671afe2.tar.bz2
GT5-Unofficial-b7c74a9de643f7fe4dab08e081fa1e652671afe2.zip
Fix clicking FluidDisplay not working with digital tank overflow mode (#1149)
-rw-r--r--src/main/java/gregtech/api/gui/GT_Container.java2
-rw-r--r--src/main/java/gregtech/api/gui/GT_Container_BasicTank.java9
-rw-r--r--src/main/java/gregtech/api/interfaces/IFluidAccess.java10
-rw-r--r--src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalTankBase.java19
4 files changed, 38 insertions, 2 deletions
diff --git a/src/main/java/gregtech/api/gui/GT_Container.java b/src/main/java/gregtech/api/gui/GT_Container.java
index 2b7959d6cb..843d34c1f3 100644
--- a/src/main/java/gregtech/api/gui/GT_Container.java
+++ b/src/main/java/gregtech/api/gui/GT_Container.java
@@ -691,7 +691,7 @@ public class GT_Container extends Container {
tNewFillableStack.amount = tAmountTaken * tParallel;
aFluidAccess.set(tNewFillableStack);
} else {
- aFluidAccess.get().amount += tAmountTaken * tParallel;
+ aFluidAccess.addAmount(tAmountTaken * tParallel);
}
tStackEmptied.stackSize = tParallel;
replaceCursorItemStack(aPlayer, tStackEmptied);
diff --git a/src/main/java/gregtech/api/gui/GT_Container_BasicTank.java b/src/main/java/gregtech/api/gui/GT_Container_BasicTank.java
index 4d533f76c3..d294b60ca9 100644
--- a/src/main/java/gregtech/api/gui/GT_Container_BasicTank.java
+++ b/src/main/java/gregtech/api/gui/GT_Container_BasicTank.java
@@ -6,6 +6,7 @@ import gregtech.api.interfaces.IFluidAccess;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicTank;
import gregtech.api.util.GT_Utility;
+import gregtech.common.tileentities.storage.GT_MetaTileEntity_DigitalTankBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.ICrafting;
@@ -129,6 +130,14 @@ public class GT_Container_BasicTank extends GT_ContainerMetaTile_Machine {
return mTank.getCapacity();
}
+ @Override
+ public int getRealCapacity() {
+ if (mTank instanceof GT_MetaTileEntity_DigitalTankBase) {
+ return ((GT_MetaTileEntity_DigitalTankBase) mTank).getRealCapacity();
+ }
+ return IFluidAccess.super.getRealCapacity();
+ }
+
static BasicTankFluidAccess from(GT_MetaTileEntity_BasicTank aTank, boolean aIsFillableStack) {
return new BasicTankFluidAccess(aTank, aIsFillableStack);
}
diff --git a/src/main/java/gregtech/api/interfaces/IFluidAccess.java b/src/main/java/gregtech/api/interfaces/IFluidAccess.java
index bbe198ddcb..01b6fb6d0b 100644
--- a/src/main/java/gregtech/api/interfaces/IFluidAccess.java
+++ b/src/main/java/gregtech/api/interfaces/IFluidAccess.java
@@ -9,4 +9,14 @@ public interface IFluidAccess {
FluidStack get();
int getCapacity();
+
+ default int getRealCapacity() {
+ return getCapacity();
+ }
+
+ default void addAmount(int amount) {
+ if (get() != null) {
+ get().amount = Math.min(get().amount + amount, getRealCapacity());
+ }
+ }
}
diff --git a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalTankBase.java b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalTankBase.java
index 77bf87dcc2..b8babfcea5 100644
--- a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalTankBase.java
+++ b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalTankBase.java
@@ -160,6 +160,23 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
GT_Utility.sendChatToPlayer(aPlayer, StatCollector.translateToLocal(mVoidOverflow ? "GT5U.machines.voidoveflow.enabled" : "GT5U.machines.voidoveflow.disabled"));
}
+ @Override
+ public FluidStack setFillableStack(FluidStack aFluid) {
+ mFluid = aFluid;
+ if (mFluid != null) {
+ mFluid.amount = Math.min(mFluid.amount, getRealCapacity());
+ }
+ return mFluid;
+ }
+
+ @Override
+ public FluidStack setDrainableStack(FluidStack aFluid) {
+ mFluid = aFluid;
+ if (mFluid != null) {
+ mFluid.amount = Math.min(mFluid.amount, getRealCapacity());
+ }
+ return mFluid;
+ }
@Override
public void onPreTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
@@ -258,7 +275,7 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
return mVoidOverflow ? Integer.MAX_VALUE : getRealCapacity();
}
- private int getRealCapacity(){
+ public int getRealCapacity(){
return commonSizeCompute(mTier);
}