diff options
| author | miozune <miozune@gmail.com> | 2023-05-08 17:25:22 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-08 10:25:22 +0200 |
| commit | 4f5d9697557f8aeee32fe2b1cc5e22393a7ff8ad (patch) | |
| tree | 28a350d6afca99a0ed5befe62769cb63352a4734 /src/main/java/gregtech/common/tileentities | |
| parent | 312812a4b8ee14ab2f1ad53ed2a941543942f16e (diff) | |
| download | GT5-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')
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() {} - } } |
