diff options
author | miozune <miozune@gmail.com> | 2022-07-31 15:42:03 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-31 13:42:03 +0700 |
commit | b7c74a9de643f7fe4dab08e081fa1e652671afe2 (patch) | |
tree | 87f35508a1b92aad89c75d94403cd50646280269 | |
parent | e0393cc3e77a28c657137cb636e488640f9a42c9 (diff) | |
download | GT5-Unofficial-b7c74a9de643f7fe4dab08e081fa1e652671afe2.tar.gz GT5-Unofficial-b7c74a9de643f7fe4dab08e081fa1e652671afe2.tar.bz2 GT5-Unofficial-b7c74a9de643f7fe4dab08e081fa1e652671afe2.zip |
Fix clicking FluidDisplay not working with digital tank overflow mode (#1149)
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); } |