aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/tileentities
diff options
context:
space:
mode:
authormiozune <miozune@gmail.com>2023-05-08 17:25:22 +0900
committerGitHub <noreply@github.com>2023-05-08 10:25:22 +0200
commit4f5d9697557f8aeee32fe2b1cc5e22393a7ff8ad (patch)
tree28a350d6afca99a0ed5befe62769cb63352a4734 /src/main/java/gregtech/common/tileentities
parent312812a4b8ee14ab2f1ad53ed2a941543942f16e (diff)
downloadGT5-Unofficial-4f5d9697557f8aeee32fe2b1cc5e22393a7ff8ad.tar.gz
GT5-Unofficial-4f5d9697557f8aeee32fe2b1cc5e22393a7ff8ad.tar.bz2
GT5-Unofficial-4f5d9697557f8aeee32fe2b1cc5e22393a7ff8ad.zip
Migrate to FluidSlotWidget from FluidDisplaySlotWidget (#1963)
Diffstat (limited to 'src/main/java/gregtech/common/tileentities')
-rw-r--r--src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Lava.java5
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_Output_ME.java3
-rw-r--r--src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalTankBase.java106
3 files changed, 46 insertions, 68 deletions
diff --git a/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Lava.java b/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Lava.java
index 6a797f5e2a..65b7df004a 100644
--- a/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Lava.java
+++ b/src/main/java/gregtech/common/tileentities/boilers/GT_MetaTileEntity_Boiler_Lava.java
@@ -453,11 +453,6 @@ public class GT_MetaTileEntity_Boiler_Lava extends GT_MetaTileEntity_Boiler {
}
@Override
- public FluidStack getDisplayedFluid() {
- return lavaTank.getFluid();
- }
-
- @Override
public FluidTankInfo[] getTankInfo(ForgeDirection side) {
return new FluidTankInfo[] { super.getTankInfo(side)[0],
new FluidTankInfo(this.lavaTank.getFluid(), this.lavaTank.getCapacity()),
diff --git a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_Output_ME.java b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_Output_ME.java
index 241412b423..693903a39a 100644
--- a/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_Output_ME.java
+++ b/src/main/java/gregtech/common/tileentities/machines/GT_MetaTileEntity_Hatch_Output_ME.java
@@ -146,9 +146,6 @@ public class GT_MetaTileEntity_Hatch_Output_ME extends GT_MetaTileEntity_Hatch_O
}
@Override
- public void updateFluidDisplayItem() {}
-
- @Override
public void onScrewdriverRightClick(ForgeDirection side, EntityPlayer aPlayer, float aX, float aY, float aZ) {
// Don't allow to lock fluid in me fluid hatch
if (!getBaseMetaTileEntity().getCoverInfoAtSide(side)
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 f67b789847..6bcdab62e0 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
@@ -20,32 +20,33 @@ import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler;
+import com.gtnewhorizons.modularui.api.math.Alignment;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
-import com.gtnewhorizons.modularui.common.internal.network.NetworkUtils;
import com.gtnewhorizons.modularui.common.widget.CycleButtonWidget;
import com.gtnewhorizons.modularui.common.widget.DrawableWidget;
+import com.gtnewhorizons.modularui.common.widget.FluidSlotWidget;
import com.gtnewhorizons.modularui.common.widget.SlotWidget;
import com.gtnewhorizons.modularui.common.widget.TextWidget;
import gregtech.api.GregTech_API;
import gregtech.api.gui.modularui.GT_UIInfos;
import gregtech.api.gui.modularui.GT_UITextures;
-import gregtech.api.interfaces.IFluidAccess;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IFluidLockable;
+import gregtech.api.interfaces.modularui.IAddGregtechLogo;
import gregtech.api.interfaces.modularui.IAddUIWidgets;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicTank;
import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_Utility;
-import gregtech.common.gui.modularui.widget.FluidDisplaySlotWidget;
+import gregtech.common.gui.modularui.widget.FluidLockWidget;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntity_BasicTank
- implements IFluidLockable, IAddUIWidgets {
+ implements IFluidLockable, IAddUIWidgets, IAddGregtechLogo {
public boolean mOutputFluid = false, mVoidFluidPart = false, mVoidFluidFull = false, mLockFluid = false;
protected String lockedFluidName = null;
@@ -169,8 +170,7 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
mVoidFluidPart = aNBT.getBoolean("mVoidOverflow");
mVoidFluidFull = aNBT.getBoolean("mVoidFluidFull");
mLockFluid = aNBT.getBoolean("mLockFluid");
- lockedFluidName = aNBT.getString("lockedFluidName");
- lockedFluidName = GT_Utility.isStringInvalid(lockedFluidName) ? null : lockedFluidName;
+ setLockedFluidName(aNBT.getString("lockedFluidName"));
mAllowInputFromOutputSide = aNBT.getBoolean("mAllowInputFromOutputSide");
}
@@ -189,9 +189,10 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
@Override
public void onEmptyingContainerWhenEmpty() {
- if (this.lockedFluidName == null && this.mFluid != null) {
- this.lockedFluidName = this.mFluid.getFluid()
- .getName();
+ if (this.lockedFluidName == null && this.mFluid != null && isFluidLocked()) {
+ setLockedFluidName(
+ this.mFluid.getFluid()
+ .getName());
}
}
@@ -232,6 +233,7 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
@Override
public void setLockedFluidName(String lockedFluidName) {
+ lockedFluidName = GT_Utility.isStringInvalid(lockedFluidName) ? null : lockedFluidName;
this.lockedFluidName = lockedFluidName;
if (lockedFluidName != null) {
Fluid fluid = FluidRegistry.getFluid(lockedFluidName);
@@ -262,8 +264,11 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
}
@Override
- public boolean allowChangingLockedFluid(String name) {
- return getFluidAmount() == 0;
+ public boolean acceptsFluidLock(String name) {
+ if (name == null || getFluidAmount() == 0) return true;
+ return mFluid != null && mFluid.getFluid()
+ .getName()
+ .equals(name);
}
@Override
@@ -327,8 +332,6 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
setFillableStack(null);
}
- if (mOpenerCount > 0) updateFluidDisplayItem();
-
if (doesEmptyContainers()) {
FluidStack tFluid = GT_Utility.getFluidForFilledItem(mInventory[getInputSlot()], true);
if (tFluid != null && isFluidInputAllowed(tFluid)) {
@@ -454,9 +457,13 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
return 100;
}
+ public boolean allowOverflow() {
+ return mVoidFluidPart || mVoidFluidFull;
+ }
+
@Override
public int getCapacity() {
- return (mVoidFluidPart || mVoidFluidFull) ? Integer.MAX_VALUE : getRealCapacity();
+ return allowOverflow() ? Integer.MAX_VALUE : getRealCapacity();
}
public int getRealCapacity() {
@@ -510,6 +517,8 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
@Override
public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) {
+ fluidTank.setAllowOverflow(allowOverflow());
+ fluidTank.setPreventDraining(mLockFluid);
builder.widget(
new DrawableWidget().setDrawable(GT_UITextures.PICTURE_SCREEN_BLACK)
.setPos(7, 16)
@@ -523,24 +532,7 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
.setBackground(getGUITextureSet().getItemSlot(), GT_UITextures.OVERLAY_SLOT_OUT)
.setPos(79, 43))
.widget(
- new FluidDisplaySlotWidget(inventoryHandler, getStackDisplaySlot())
- .setFluidAccessConstructor(() -> constructFluidAccess(false))
- .setIHasFluidDisplay(this)
- .setCanDrain(true)
- .setCanFill(!isDrainableStackSeparate())
- .setActionRealClick(FluidDisplaySlotWidget.Action.TRANSFER)
- .setActionDragAndDrop(FluidDisplaySlotWidget.Action.LOCK)
- .setBeforeRealClick((clickData, widget) -> {
- if (NetworkUtils.isClient()) {
- // propagate display item content to actual fluid stored in
- // this tank
- setDrainableStack(
- GT_Utility.getFluidFromDisplayStack(
- widget.getMcSlot()
- .getStack()));
- }
- return true;
- })
+ new FluidSlotWidget(fluidTank).setOnClickContainer(widget -> onEmptyingContainerWhenEmpty())
.setBackground(GT_UITextures.TRANSPARENT)
.setPos(58, 41))
.widget(
@@ -550,6 +542,22 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
TextWidget.dynamicString(() -> GT_Utility.parseNumberToString(mFluid != null ? mFluid.amount : 0))
.setDefaultColor(COLOR_TEXT_WHITE.get())
.setPos(10, 30))
+ .widget(
+ new DrawableWidget().setDrawable(GT_UITextures.PICTURE_SCREEN_BLACK)
+ .setPos(98, 28)
+ .setSize(71, 45))
+ .widget(new FluidLockWidget(this).setPos(149, 53))
+ .widget(
+ new TextWidget("Locked Fluid").setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setPos(101, 32))
+ .widget(TextWidget.dynamicString(() -> {
+ FluidStack fluidStack = FluidRegistry.getFluidStack(lockedFluidName, 1);
+ return fluidStack != null ? fluidStack.getLocalizedName() : "None";
+ })
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setTextAlignment(Alignment.CenterLeft)
+ .setMaxWidth(65)
+ .setPos(101, 42))
.widget(new CycleButtonWidget().setToggle(() -> mOutputFluid, val -> {
mOutputFluid = val;
if (!mOutputFluid) {
@@ -570,6 +578,7 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
.setSize(18, 18))
.widget(new CycleButtonWidget().setToggle(() -> mLockFluid, val -> {
mLockFluid = val;
+ fluidTank.setPreventDraining(mLockFluid);
String inBrackets;
if (mLockFluid) {
@@ -588,6 +597,7 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
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"));
@@ -615,6 +625,7 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
.setSize(18, 18))
.widget(new CycleButtonWidget().setToggle(() -> mVoidFluidPart, val -> {
mVoidFluidPart = val;
+ fluidTank.setAllowOverflow(allowOverflow());
if (!mVoidFluidPart) {
GT_Utility.sendChatToPlayer(
buildContext.getPlayer(),
@@ -629,10 +640,11 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
.setStaticTexture(GT_UITextures.OVERLAY_BUTTON_VOID_EXCESS)
.setGTTooltip(() -> mTooltipCache.getData("GT5U.machines.digitaltank.voidoverflow.tooltip"))
.setTooltipShowUpDelay(TOOLTIP_DELAY)
- .setPos(151, 7)
+ .setPos(133, 7)
.setSize(18, 18))
.widget(new CycleButtonWidget().setToggle(() -> mVoidFluidFull, val -> {
mVoidFluidFull = val;
+ fluidTank.setAllowOverflow(allowOverflow());
if (!mVoidFluidFull) {
GT_Utility
.sendChatToPlayer(buildContext.getPlayer(), GT_Utility.trans("269", "Void Full Mode Disabled"));
@@ -645,33 +657,7 @@ public abstract class GT_MetaTileEntity_DigitalTankBase extends GT_MetaTileEntit
.setStaticTexture(GT_UITextures.OVERLAY_BUTTON_VOID_ALL)
.setGTTooltip(() -> mTooltipCache.getData("GT5U.machines.digitaltank.voidfull.tooltip"))
.setTooltipShowUpDelay(TOOLTIP_DELAY)
- .setPos(151, 25)
+ .setPos(151, 7)
.setSize(18, 18));
}
-
- @Override
- protected IFluidAccess constructFluidAccess(boolean aIsFillableStack) {
- return new DigitalTankFluidAccess(this, aIsFillableStack);
- }
-
- static class DigitalTankFluidAccess extends BasicTankFluidAccess {
-
- public DigitalTankFluidAccess(GT_MetaTileEntity_BasicTank aTank, boolean aIsFillableStack) {
- super(aTank, aIsFillableStack);
- }
-
- @Override
- public void set(FluidStack stack) {
- super.set(stack);
- ((GT_MetaTileEntity_DigitalTankBase) mTank).onEmptyingContainerWhenEmpty();
- }
-
- @Override
- public int getRealCapacity() {
- return ((GT_MetaTileEntity_DigitalTankBase) mTank).getRealCapacity();
- }
-
- @Override
- public void verifyFluidStack() {}
- }
}