aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authormiozune <miozune@gmail.com>2023-06-06 14:57:10 +0900
committerGitHub <noreply@github.com>2023-06-06 07:57:10 +0200
commit6b619fc2e0f57e04796da10911047635e7d9a6a0 (patch)
treeff0d152889148eccc12f3aa69303b018ba6c0115 /src/main
parent185f63c02367fae0b3cbbc23bb90906cd34425c2 (diff)
downloadGT5-Unofficial-6b619fc2e0f57e04796da10911047635e7d9a6a0.tar.gz
GT5-Unofficial-6b619fc2e0f57e04796da10911047635e7d9a6a0.tar.bz2
GT5-Unofficial-6b619fc2e0f57e04796da10911047635e7d9a6a0.zip
Fix fluid lock issues (#2062)
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Output.java9
-rw-r--r--src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalTankBase.java21
2 files changed, 21 insertions, 9 deletions
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Output.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Output.java
index 8d65c429f7..6c46600f94 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Output.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Output.java
@@ -150,7 +150,7 @@ public class GT_MetaTileEntity_Hatch_Output extends GT_MetaTileEntity_Hatch
public void saveNBTData(NBTTagCompound aNBT) {
super.saveNBTData(aNBT);
aNBT.setByte("mMode", mMode);
- if (lockedFluidName != null && lockedFluidName.length() != 0)
+ if (isFluidLocked() && lockedFluidName != null && lockedFluidName.length() != 0)
aNBT.setString("lockedFluidName", lockedFluidName);
else aNBT.removeTag("lockedFluidName");
}
@@ -159,8 +159,10 @@ public class GT_MetaTileEntity_Hatch_Output extends GT_MetaTileEntity_Hatch
public void loadNBTData(NBTTagCompound aNBT) {
super.loadNBTData(aNBT);
mMode = aNBT.getByte("mMode");
- lockedFluidName = aNBT.getString("lockedFluidName");
- lockedFluidName = lockedFluidName.length() == 0 ? null : lockedFluidName;
+ if (isFluidLocked()) {
+ lockedFluidName = aNBT.getString("lockedFluidName");
+ }
+ lockedFluidName = GT_Utility.isStringInvalid(lockedFluidName) ? null : lockedFluidName;
}
@Override
@@ -393,6 +395,7 @@ public class GT_MetaTileEntity_Hatch_Output extends GT_MetaTileEntity_Hatch
}
} else {
this.mMode = 0;
+ setLockedFluidName(null);
markDirty();
}
}
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 7beae18d74..c9c32b5aa0 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
@@ -148,7 +148,7 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
if (mVoidFluidPart) aNBT.setBoolean("mVoidOverflow", true);
if (mVoidFluidFull) aNBT.setBoolean("mVoidFluidFull", true);
if (mLockFluid) aNBT.setBoolean("mLockFluid", true);
- if (GT_Utility.isStringValid(lockedFluidName)) aNBT.setString("lockedFluidName", lockedFluidName);
+ if (mLockFluid && GT_Utility.isStringValid(lockedFluidName)) aNBT.setString("lockedFluidName", lockedFluidName);
if (this.mAllowInputFromOutputSide) aNBT.setBoolean("mAllowInputFromOutputSide", true);
super.setItemNBT(aNBT);
@@ -161,7 +161,7 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
aNBT.setBoolean("mVoidOverflow", this.mVoidFluidPart);
aNBT.setBoolean("mVoidFluidFull", this.mVoidFluidFull);
aNBT.setBoolean("mLockFluid", mLockFluid);
- if (GT_Utility.isStringValid(lockedFluidName)) aNBT.setString("lockedFluidName", lockedFluidName);
+ if (mLockFluid && GT_Utility.isStringValid(lockedFluidName)) aNBT.setString("lockedFluidName", lockedFluidName);
else aNBT.removeTag("lockedFluidName");
aNBT.setBoolean("mAllowInputFromOutputSide", this.mAllowInputFromOutputSide);
}
@@ -173,7 +173,11 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
mVoidFluidPart = aNBT.getBoolean("mVoidOverflow");
mVoidFluidFull = aNBT.getBoolean("mVoidFluidFull");
mLockFluid = aNBT.getBoolean("mLockFluid");
- setLockedFluidName(aNBT.getString("lockedFluidName"));
+ if (mLockFluid) {
+ setLockedFluidName(aNBT.getString("lockedFluidName"));
+ } else {
+ setLockedFluidName(null);
+ }
mAllowInputFromOutputSide = aNBT.getBoolean("mAllowInputFromOutputSide");
}
@@ -259,6 +263,9 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
@Override
public void lockFluid(boolean lock) {
this.mLockFluid = lock;
+ if (!lock) {
+ setLockedFluidName(null);
+ }
}
@Override
@@ -522,6 +529,8 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) {
fluidTank.setAllowOverflow(allowOverflow());
fluidTank.setPreventDraining(mLockFluid);
+
+ FluidSlotWidget fluidSlotWidget = new FluidSlotWidget(fluidTank);
builder.widget(
new DrawableWidget().setDrawable(GT_UITextures.PICTURE_SCREEN_BLACK)
.setPos(7, 16)
@@ -535,7 +544,7 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
.setBackground(getGUITextureSet().getItemSlot(), GT_UITextures.OVERLAY_SLOT_OUT)
.setPos(79, 43))
.widget(
- new FluidSlotWidget(fluidTank).setOnClickContainer(widget -> onEmptyingContainerWhenEmpty())
+ fluidSlotWidget.setOnClickContainer(widget -> onEmptyingContainerWhenEmpty())
.setBackground(GT_UITextures.TRANSPARENT)
.setPos(58, 41))
.widget(
@@ -580,7 +589,7 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
.setPos(7, 63)
.setSize(18, 18))
.widget(new CycleButtonWidget().setToggle(() -> mLockFluid, val -> {
- mLockFluid = val;
+ lockFluid(val);
fluidTank.setPreventDraining(mLockFluid);
String inBrackets;
@@ -599,12 +608,12 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
buildContext.getPlayer(),
String.format("%s (%s)", GT_Utility.trans("265", "1 specific Fluid"), inBrackets));
} else {
- setLockedFluidName(null);
fluidTank.drain(0, true);
GT_Utility.sendChatToPlayer(
buildContext.getPlayer(),
GT_Utility.trans("266", "Lock Fluid Mode Disabled"));
}
+ fluidSlotWidget.notifyTooltipChange();
})
.setVariableBackground(GT_UITextures.BUTTON_STANDARD_TOGGLE)
.setStaticTexture(GT_UITextures.OVERLAY_BUTTON_LOCK)