aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
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
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')
-rw-r--r--src/main/java/gregtech/GT_Mod.java2
-rw-r--r--src/main/java/gregtech/api/enums/GT_Values.java1
-rw-r--r--src/main/java/gregtech/api/interfaces/IHasFluidDisplayItem.java1
-rw-r--r--src/main/java/gregtech/api/interfaces/metatileentity/IFluidLockable.java4
-rw-r--r--src/main/java/gregtech/api/metatileentity/BaseTileEntity.java2
-rw-r--r--src/main/java/gregtech/api/metatileentity/CommonMetaTileEntity.java8
-rw-r--r--src/main/java/gregtech/api/metatileentity/MetaTileEntity.java8
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java86
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_Bronze.java6
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_GT_Recipe.java41
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicTank.java97
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_MultiInput.java100
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Output.java49
-rw-r--r--src/main/java/gregtech/api/net/GT_Packet_SetLockedFluid.java101
-rw-r--r--src/main/java/gregtech/common/GT_Client.java29
-rw-r--r--src/main/java/gregtech/common/GT_Network.java8
-rw-r--r--src/main/java/gregtech/common/gui/modularui/widget/FluidDisplaySlotWidget.java52
-rw-r--r--src/main/java/gregtech/common/gui/modularui/widget/FluidLockWidget.java17
-rw-r--r--src/main/java/gregtech/common/net/MessageUpdateFluidDisplayItem.java63
-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
-rw-r--r--src/main/java/gregtech/loaders/preload/GT_PreLoad.java2
23 files changed, 160 insertions, 631 deletions
diff --git a/src/main/java/gregtech/GT_Mod.java b/src/main/java/gregtech/GT_Mod.java
index 49f6881c23..072856b6b4 100644
--- a/src/main/java/gregtech/GT_Mod.java
+++ b/src/main/java/gregtech/GT_Mod.java
@@ -100,7 +100,7 @@ import ic2.api.recipe.RecipeOutput;
guiFactory = "gregtech.client.GT_GuiFactory",
dependencies = " required-after:IC2;" + " required-after:structurelib;"
+ " required-after:gtnhlib@[0.0.8,);"
- + " required-after:modularui;"
+ + " required-after:modularui@[1.1.7,);"
+ " after:dreamcraft;"
+ " after:Forestry;"
+ " after:PFAAGeologica;"
diff --git a/src/main/java/gregtech/api/enums/GT_Values.java b/src/main/java/gregtech/api/enums/GT_Values.java
index 8406018707..3d4180667a 100644
--- a/src/main/java/gregtech/api/enums/GT_Values.java
+++ b/src/main/java/gregtech/api/enums/GT_Values.java
@@ -519,7 +519,6 @@ public class GT_Values {
public static final Set<String> mCTMEnabledBlock = new HashSet<>();
public static final Set<String> mCTMDisabledBlock = new HashSet<>();
- public static boolean updateFluidDisplayItems = true;
public static final int STEAM_PER_WATER = 160;
/**
* If true, then digital chest with AE2 storage bus will be accessible only through AE2
diff --git a/src/main/java/gregtech/api/interfaces/IHasFluidDisplayItem.java b/src/main/java/gregtech/api/interfaces/IHasFluidDisplayItem.java
index 59bac8296b..e7435dd14b 100644
--- a/src/main/java/gregtech/api/interfaces/IHasFluidDisplayItem.java
+++ b/src/main/java/gregtech/api/interfaces/IHasFluidDisplayItem.java
@@ -1,5 +1,6 @@
package gregtech.api.interfaces;
+@Deprecated
public interface IHasFluidDisplayItem {
void updateFluidDisplayItem();
diff --git a/src/main/java/gregtech/api/interfaces/metatileentity/IFluidLockable.java b/src/main/java/gregtech/api/interfaces/metatileentity/IFluidLockable.java
index d7574313ac..f7f6112680 100644
--- a/src/main/java/gregtech/api/interfaces/metatileentity/IFluidLockable.java
+++ b/src/main/java/gregtech/api/interfaces/metatileentity/IFluidLockable.java
@@ -23,7 +23,5 @@ public interface IFluidLockable {
boolean isFluidLocked();
- boolean allowChangingLockedFluid(String name);
-
- default void onFluidLockPacketReceived(String name) {}
+ boolean acceptsFluidLock(String name);
}
diff --git a/src/main/java/gregtech/api/metatileentity/BaseTileEntity.java b/src/main/java/gregtech/api/metatileentity/BaseTileEntity.java
index 618dc9b662..463219fa3c 100644
--- a/src/main/java/gregtech/api/metatileentity/BaseTileEntity.java
+++ b/src/main/java/gregtech/api/metatileentity/BaseTileEntity.java
@@ -668,8 +668,6 @@ public abstract class BaseTileEntity extends TileEntity implements IHasWorldObje
BATTERY_SLOT_TOOLTIP_ALT = "GT5U.machines.battery_slot.tooltip.alternative",
UNUSED_SLOT_TOOLTIP = "GT5U.machines.unused_slot.tooltip",
SPECIAL_SLOT_TOOLTIP = "GT5U.machines.special_slot.tooltip",
- FLUID_INPUT_TOOLTIP = "GT5U.machines.fluid_input_slot.tooltip",
- FLUID_OUTPUT_TOOLTIP = "GT5U.machines.fluid_output_slot.tooltip",
STALLED_STUTTERING_TOOLTIP = "GT5U.machines.stalled_stuttering.tooltip",
STALLED_VENT_TOOLTIP = "GT5U.machines.stalled_vent.tooltip",
FLUID_TRANSFER_TOOLTIP = "GT5U.machines.fluid_transfer.tooltip",
diff --git a/src/main/java/gregtech/api/metatileentity/CommonMetaTileEntity.java b/src/main/java/gregtech/api/metatileentity/CommonMetaTileEntity.java
index afd7705274..acb3e75235 100644
--- a/src/main/java/gregtech/api/metatileentity/CommonMetaTileEntity.java
+++ b/src/main/java/gregtech/api/metatileentity/CommonMetaTileEntity.java
@@ -15,6 +15,7 @@ import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
import appeng.api.crafting.ICraftingIconProvider;
import gregtech.GT_Mod;
import gregtech.api.GregTech_API;
+import gregtech.api.enums.ItemList;
import gregtech.api.gui.modularui.GUITextureSet;
import gregtech.api.interfaces.IConfigurationCircuitSupport;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
@@ -83,7 +84,12 @@ public abstract class CommonMetaTileEntity extends CoverableTileEntity
final NBTTagCompound tTag = tItemList.getCompoundTagAt(i);
final int tSlot = migrateInventoryIndex(tTag.getInteger("IntSlot"), nbtVersion);
if (tSlot >= 0 && tSlot < getMetaTileEntity().getRealInventory().length) {
- getMetaTileEntity().getRealInventory()[tSlot] = GT_Utility.loadItem(tTag);
+ ItemStack loadedStack = GT_Utility.loadItem(tTag);
+ // We move away from fluid display item in TEs
+ if (loadedStack != null && loadedStack.getItem() == ItemList.Display_Fluid.getItem()) {
+ loadedStack = null;
+ }
+ getMetaTileEntity().getRealInventory()[tSlot] = loadedStack;
}
}
diff --git a/src/main/java/gregtech/api/metatileentity/MetaTileEntity.java b/src/main/java/gregtech/api/metatileentity/MetaTileEntity.java
index db46d1b1da..bb3095084a 100644
--- a/src/main/java/gregtech/api/metatileentity/MetaTileEntity.java
+++ b/src/main/java/gregtech/api/metatileentity/MetaTileEntity.java
@@ -686,6 +686,14 @@ public abstract class MetaTileEntity implements IMetaTileEntity, IMachineCallbac
return 0;
}
+ /**
+ * Actual fluid capacity. If your machine has void-overflow feature, you'll want to override this method to make
+ * sure correct capacity is shown on GUI.
+ */
+ public int getRealCapacity() {
+ return getCapacity();
+ }
+
@Override
public void onMachineBlockUpdate() {
/* Do nothing */
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java
index 80ad9e38a5..35d95627b8 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java
@@ -4,8 +4,6 @@ import static gregtech.api.enums.GT_Values.V;
import static gregtech.api.enums.GT_Values.debugCleanroom;
import static gregtech.api.enums.Textures.BlockIcons.MACHINE_CASINGS;
import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_PIPE_OUT;
-import static gregtech.api.metatileentity.BaseTileEntity.FLUID_INPUT_TOOLTIP;
-import static gregtech.api.metatileentity.BaseTileEntity.FLUID_OUTPUT_TOOLTIP;
import static gregtech.api.metatileentity.BaseTileEntity.FLUID_TRANSFER_TOOLTIP;
import static gregtech.api.metatileentity.BaseTileEntity.ITEM_TRANSFER_TOOLTIP;
import static gregtech.api.metatileentity.BaseTileEntity.NEI_TRANSFER_STEAM_TOOLTIP;
@@ -48,16 +46,16 @@ import com.gtnewhorizons.modularui.api.math.Size;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
import com.gtnewhorizons.modularui.api.widget.Widget;
-import com.gtnewhorizons.modularui.common.internal.network.NetworkUtils;
+import com.gtnewhorizons.modularui.common.fluid.FluidStackTank;
import com.gtnewhorizons.modularui.common.widget.CycleButtonWidget;
import com.gtnewhorizons.modularui.common.widget.DrawableWidget;
import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget;
+import com.gtnewhorizons.modularui.common.widget.FluidSlotWidget;
import com.gtnewhorizons.modularui.common.widget.ProgressBar;
import com.gtnewhorizons.modularui.common.widget.SlotWidget;
import gregtech.GT_Mod;
import gregtech.api.GregTech_API;
-import gregtech.api.enums.ItemList;
import gregtech.api.enums.SoundResource;
import gregtech.api.gui.GT_Container_BasicMachine;
import gregtech.api.gui.GT_GUIContainer_BasicMachine;
@@ -81,7 +79,6 @@ import gregtech.api.util.GT_TooltipDataCache;
import gregtech.api.util.GT_Utility;
import gregtech.api.util.GT_Waila;
import gregtech.common.gui.modularui.UIHelper;
-import gregtech.common.gui.modularui.widget.FluidDisplaySlotWidget;
import gregtech.common.power.BasicMachineEUPower;
import gregtech.common.power.Power;
import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_Cleanroom;
@@ -123,6 +120,10 @@ public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_B
protected GT_Recipe mLastRecipe = null;
private FluidStack mFluidOut;
+ protected final FluidStackTank fluidOutputTank = new FluidStackTank(
+ () -> mFluidOut,
+ fluidStack -> mFluidOut = fluidStack,
+ this::getCapacity);
/**
* @param aOverlays 0 = SideFacingActive 1 = SideFacingInactive 2 = FrontFacingActive 3 = FrontFacingInactive 4 =
@@ -482,11 +483,6 @@ public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_B
}
@Override
- public FluidStack getDisplayedFluid() {
- return displaysOutputFluid() ? getDrainableStack() : null;
- }
-
- @Override
public FluidStack getDrainableStack() {
return mFluidOut;
}
@@ -756,29 +752,6 @@ public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_B
}
}
- @Override
- public void updateFluidDisplayItem() {
- updateFluidOutputDisplayItem();
- updateFluidInputDisplayItem();
- }
-
- public void updateFluidOutputDisplayItem() {
- super.updateFluidDisplayItem();
- }
-
- public void updateFluidInputDisplayItem() {
- if (displaysInputFluid()) {
- int tDisplayStackSlot = OTHER_SLOT_COUNT + mInputSlotCount + mOutputItems.length;
- if (getFillableStack() == null) {
- if (ItemList.Display_Fluid.isStackEqual(mInventory[tDisplayStackSlot], true, true))
- mInventory[tDisplayStackSlot] = null;
- } else {
- mInventory[tDisplayStackSlot] = GT_Utility
- .getFluidDisplayStack(getFillableStack(), true, !displaysStackSize());
- }
- }
- }
-
protected boolean hasEnoughEnergyToCheckRecipe() {
return getBaseMetaTileEntity().isUniversalEnergyStored(getMinimumStoredEU() / 2);
}
@@ -863,14 +836,6 @@ public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_B
return rIsEmpty;
}
- protected boolean displaysInputFluid() {
- return true;
- }
-
- protected boolean displaysOutputFluid() {
- return true;
- }
-
@Override
public void onValueUpdate(byte aValue) {
mMainFacing = ForgeDirection.getOrientation(aValue);
@@ -1440,38 +1405,13 @@ public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_B
.setPos(pos);
}
- protected FluidDisplaySlotWidget createFluidInputSlot(IDrawable[] backgrounds, Pos2d pos) {
- return (FluidDisplaySlotWidget) new FluidDisplaySlotWidget(
- inventoryHandler,
- OTHER_SLOT_COUNT + mInputSlotCount + mOutputItems.length)
- .setFluidAccessConstructor(() -> constructFluidAccess(true))
- .setIHasFluidDisplay(this)
- .setCanDrain(true)
- .setCanFill(true)
- .setActionRealClick(FluidDisplaySlotWidget.Action.TRANSFER)
- .setBeforeRealClick((clickData, widget) -> {
- if (NetworkUtils.isClient()) {
- // propagate display item content to
- // actual fluid stored in this tank
- setFillableStack(
- GT_Utility.getFluidFromDisplayStack(
- widget.getMcSlot()
- .getStack()));
- }
- return true;
- })
- .setUpdateFluidDisplayItem(this::updateFluidInputDisplayItem)
- .setGTTooltip(() -> mTooltipCache.getData(FLUID_INPUT_TOOLTIP, GT_Utility.formatNumbers(getCapacity())))
- .setTooltipShowUpDelay(TOOLTIP_DELAY)
- .setBackground(backgrounds)
- .setPos(pos);
- }
-
- protected FluidDisplaySlotWidget createFluidOutputSlot(IDrawable[] backgrounds, Pos2d pos) {
- return (FluidDisplaySlotWidget) createDrainableFluidSlot()
- .setUpdateFluidDisplayItem(this::updateFluidOutputDisplayItem)
- .setGTTooltip(() -> mTooltipCache.getData(FLUID_OUTPUT_TOOLTIP, GT_Utility.formatNumbers(getCapacity())))
- .setTooltipShowUpDelay(TOOLTIP_DELAY)
+ protected FluidSlotWidget createFluidInputSlot(IDrawable[] backgrounds, Pos2d pos) {
+ return (FluidSlotWidget) new FluidSlotWidget(fluidTank).setBackground(backgrounds)
+ .setPos(pos);
+ }
+
+ protected FluidSlotWidget createFluidOutputSlot(IDrawable[] backgrounds, Pos2d pos) {
+ return (FluidSlotWidget) new FluidSlotWidget(fluidOutputTank).setInteraction(true, false)
.setBackground(backgrounds)
.setPos(pos);
}
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_Bronze.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_Bronze.java
index 2ea4b25860..d804454801 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_Bronze.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_Bronze.java
@@ -13,6 +13,7 @@ import com.gtnewhorizons.modularui.api.drawable.IDrawable;
import com.gtnewhorizons.modularui.api.math.Pos2d;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.common.widget.DrawableWidget;
+import com.gtnewhorizons.modularui.common.widget.FluidSlotWidget;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Dyes;
@@ -28,7 +29,6 @@ import gregtech.api.util.GT_Log;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
import gregtech.api.util.WorldSpawnedEventBuilder.ParticleEventBuilder;
-import gregtech.common.gui.modularui.widget.FluidDisplaySlotWidget;
import gregtech.common.power.Power;
import gregtech.common.power.SteamPower;
@@ -370,12 +370,12 @@ public abstract class GT_MetaTileEntity_BasicMachine_Bronze extends GT_MetaTileE
}
@Override
- protected FluidDisplaySlotWidget createFluidInputSlot(IDrawable[] backgrounds, Pos2d pos) {
+ protected FluidSlotWidget createFluidInputSlot(IDrawable[] backgrounds, Pos2d pos) {
return null;
}
@Override
- protected FluidDisplaySlotWidget createFluidOutputSlot(IDrawable[] backgrounds, Pos2d pos) {
+ protected FluidSlotWidget createFluidOutputSlot(IDrawable[] backgrounds, Pos2d pos) {
return null;
}
}
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_GT_Recipe.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_GT_Recipe.java
index dc79ef0ba9..2479448a40 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_GT_Recipe.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_GT_Recipe.java
@@ -172,13 +172,13 @@ public class GT_MetaTileEntity_BasicMachine_GT_Recipe extends GT_MetaTileEntity_
case WIRE -> Tier.ELECTRIC[this.mTier].mConductingObject;
case WIRE4 -> Tier.ELECTRIC[this.mTier].mLargerConductingObject;
case STICK_DISTILLATION -> OrePrefixes.stick.get(Materials.Blaze);
-
+
case GLASS -> switch (this.mTier) {
case 0, 1, 2, 3 -> new ItemStack(Blocks.glass, 1, W);
case 4, 5, 6, 7, 8 -> BartWorks.isModLoaded() ? "blockGlass" + VN[aTier] : Ic2Items.reinforcedGlass;
default -> BartWorks.isModLoaded() ? "blockGlass" + VN[8] : Ic2Items.reinforcedGlass;
};
-
+
case PLATE -> switch (this.mTier) {
case 0, 1 -> OrePrefixes.plate.get(Materials.Steel);
case 2 -> OrePrefixes.plate.get(Materials.Aluminium);
@@ -189,7 +189,7 @@ public class GT_MetaTileEntity_BasicMachine_GT_Recipe extends GT_MetaTileEntity_
case 7 -> OrePrefixes.plate.get(Materials.HSSE);
default -> OrePrefixes.plate.get(Materials.Neutronium);
};
-
+
case PIPE -> switch (this.mTier) {
case 0, 1 -> OrePrefixes.pipeMedium.get(Materials.Bronze);
case 2 -> OrePrefixes.pipeMedium.get(Materials.Steel);
@@ -201,7 +201,7 @@ public class GT_MetaTileEntity_BasicMachine_GT_Recipe extends GT_MetaTileEntity_
case 8 -> OrePrefixes.pipeLarge.get(Materials.Ultimate);
default -> OrePrefixes.pipeHuge.get(Materials.Ultimate);
};
-
+
case COIL_HEATING -> switch (this.mTier) {
case 0, 1 -> OrePrefixes.wireGt02.get(Materials.AnyCopper);
case 2 -> OrePrefixes.wireGt02.get(Materials.Cupronickel);
@@ -214,7 +214,7 @@ public class GT_MetaTileEntity_BasicMachine_GT_Recipe extends GT_MetaTileEntity_
case 9 -> OrePrefixes.wireGt04.get(Materials.NaquadahAlloy);
default -> OrePrefixes.wireGt08.get(Materials.NaquadahAlloy);
};
-
+
case COIL_HEATING_DOUBLE -> switch (this.mTier) {
case 0, 1 -> OrePrefixes.wireGt04.get(Materials.AnyCopper);
case 2 -> OrePrefixes.wireGt04.get(Materials.Cupronickel);
@@ -227,7 +227,7 @@ public class GT_MetaTileEntity_BasicMachine_GT_Recipe extends GT_MetaTileEntity_
case 9 -> OrePrefixes.wireGt08.get(Materials.NaquadahAlloy);
default -> OrePrefixes.wireGt16.get(Materials.NaquadahAlloy);
};
-
+
case STICK_MAGNETIC -> switch (this.mTier) {
case 0, 1 -> OrePrefixes.stick.get(Materials.IronMagnetic);
case 2, 3 -> OrePrefixes.stick.get(Materials.SteelMagnetic);
@@ -235,14 +235,14 @@ public class GT_MetaTileEntity_BasicMachine_GT_Recipe extends GT_MetaTileEntity_
case 6, 7, 8, 9 -> OrePrefixes.stick.get(Materials.SamariumMagnetic);
default -> OrePrefixes.stick.get(Materials.TengamAttuned);
};
-
+
case STICK_ELECTROMAGNETIC -> switch (this.mTier) {
case 0, 1 -> OrePrefixes.stick.get(Materials.AnyIron);
case 2, 3 -> OrePrefixes.stick.get(Materials.Steel);
case 4 -> OrePrefixes.stick.get(Materials.Neodymium);
default -> OrePrefixes.stick.get(Materials.VanadiumGallium);
};
-
+
case COIL_ELECTRIC -> switch (this.mTier) {
case 0 -> OrePrefixes.wireGt01.get(Materials.Lead);
case 1 -> OrePrefixes.wireGt02.get(Materials.Tin);
@@ -254,7 +254,7 @@ public class GT_MetaTileEntity_BasicMachine_GT_Recipe extends GT_MetaTileEntity_
case 7 -> OrePrefixes.wireGt08.get(Materials.Iridium);
default -> OrePrefixes.wireGt16.get(Materials.Osmium);
};
-
+
case ROBOT_ARM -> switch (this.mTier) {
case 0, 1 -> ItemList.Robot_Arm_LV;
case 2 -> ItemList.Robot_Arm_MV;
@@ -271,7 +271,7 @@ public class GT_MetaTileEntity_BasicMachine_GT_Recipe extends GT_MetaTileEntity_
case 13 -> ItemList.Robot_Arm_UXV;
default -> ItemList.Robot_Arm_MAX;
};
-
+
case PUMP -> switch (this.mTier) {
case 0, 1 -> ItemList.Electric_Pump_LV;
case 2 -> ItemList.Electric_Pump_MV;
@@ -288,7 +288,7 @@ public class GT_MetaTileEntity_BasicMachine_GT_Recipe extends GT_MetaTileEntity_
case 13 -> ItemList.Electric_Pump_UXV;
default -> ItemList.Electric_Pump_MAX;
};
-
+
case MOTOR -> switch (this.mTier) {
case 0, 1 -> ItemList.Electric_Motor_LV;
case 2 -> ItemList.Electric_Motor_MV;
@@ -305,7 +305,7 @@ public class GT_MetaTileEntity_BasicMachine_GT_Recipe extends GT_MetaTileEntity_
case 13 -> ItemList.Electric_Motor_UXV;
default -> ItemList.Electric_Motor_MAX;
};
-
+
case PISTON -> switch (this.mTier) {
case 0, 1 -> ItemList.Electric_Piston_LV;
case 2 -> ItemList.Electric_Piston_MV;
@@ -322,7 +322,7 @@ public class GT_MetaTileEntity_BasicMachine_GT_Recipe extends GT_MetaTileEntity_
case 13 -> ItemList.Electric_Piston_UXV;
default -> ItemList.Electric_Piston_MAX;
};
-
+
case CONVEYOR -> switch (this.mTier) {
case 0, 1 -> ItemList.Conveyor_Module_LV;
case 2 -> ItemList.Conveyor_Module_MV;
@@ -339,7 +339,7 @@ public class GT_MetaTileEntity_BasicMachine_GT_Recipe extends GT_MetaTileEntity_
case 13 -> ItemList.Conveyor_Module_UXV;
default -> ItemList.Conveyor_Module_MAX;
};
-
+
case EMITTER -> switch (this.mTier) {
case 0, 1 -> ItemList.Emitter_LV;
case 2 -> ItemList.Emitter_MV;
@@ -356,7 +356,7 @@ public class GT_MetaTileEntity_BasicMachine_GT_Recipe extends GT_MetaTileEntity_
case 13 -> ItemList.Emitter_UXV;
default -> ItemList.Emitter_MAX;
};
-
+
case SENSOR -> switch (this.mTier) {
case 0, 1 -> ItemList.Sensor_LV;
case 2 -> ItemList.Sensor_MV;
@@ -373,7 +373,7 @@ public class GT_MetaTileEntity_BasicMachine_GT_Recipe extends GT_MetaTileEntity_
case 13 -> ItemList.Sensor_UXV;
default -> ItemList.Sensor_MAX;
};
-
+
case FIELD_GENERATOR -> switch (this.mTier) {
case 0, 1 -> ItemList.Field_Generator_LV;
case 2 -> ItemList.Field_Generator_MV;
@@ -390,7 +390,7 @@ public class GT_MetaTileEntity_BasicMachine_GT_Recipe extends GT_MetaTileEntity_
case 13 -> ItemList.Field_Generator_UXV;
default -> ItemList.Field_Generator_MAX;
};
-
+
case ROTOR -> switch (this.mTier) {
case 0, 1 -> OrePrefixes.rotor.get(Materials.Tin);
case 2 -> OrePrefixes.rotor.get(Materials.Bronze);
@@ -401,7 +401,7 @@ public class GT_MetaTileEntity_BasicMachine_GT_Recipe extends GT_MetaTileEntity_
case 7 -> OrePrefixes.rotor.get(Materials.Iridium);
default -> OrePrefixes.rotor.get(Materials.Osmium);
};
-
+
default -> throw new IllegalArgumentException("MISSING TIER MAPPING FOR: " + aRecipe[i] + " AT TIER " + this.mTier);
};
// spotless:on
@@ -765,11 +765,6 @@ public class GT_MetaTileEntity_BasicMachine_GT_Recipe extends GT_MetaTileEntity_
}
@Override
- protected boolean displaysOutputFluid() {
- return !this.mSharedTank;
- }
-
- @Override
protected ProgressBar createProgressBar(UITexture texture, int imageSize, ProgressBar.Direction direction,
Pos2d pos, Size size) {
return super.createProgressBar(texture, imageSize, direction, pos, size)
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicTank.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicTank.java
index f3a0af38f5..aaac590fe3 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicTank.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicTank.java
@@ -9,17 +9,15 @@ import net.minecraftforge.fluids.FluidTankInfo;
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.fluid.FluidStackTank;
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.enums.ItemList;
import gregtech.api.gui.GT_Container_BasicTank;
import gregtech.api.gui.GT_GUIContainer_BasicTank;
import gregtech.api.gui.modularui.GT_UITextures;
-import gregtech.api.interfaces.IFluidAccess;
-import gregtech.api.interfaces.IHasFluidDisplayItem;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.modularui.IAddUIWidgets;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
@@ -32,10 +30,15 @@ import gregtech.common.gui.modularui.widget.FluidDisplaySlotWidget;
* This is the main construct for my generic Tanks. Filling and emptying behavior have to be implemented manually
*/
public abstract class GT_MetaTileEntity_BasicTank extends GT_MetaTileEntity_TieredMachineBlock
- implements IHasFluidDisplayItem, IAddUIWidgets {
+ implements IAddUIWidgets {
public FluidStack mFluid;
- protected int mOpenerCount;
+ // Due to class initializing order, getCapacity might not work properly at this time.
+ // So we pass supplier instead of current value here.
+ protected final FluidStackTank fluidTank = new FluidStackTank(
+ () -> mFluid,
+ fluidStack -> mFluid = fluidStack,
+ this::getRealCapacity);
/**
* @param aInvSlotCount should be 3
@@ -141,6 +144,7 @@ public abstract class GT_MetaTileEntity_BasicTank extends GT_MetaTileEntity_Tier
return false;
}
+ @Deprecated
public FluidStack getDisplayedFluid() {
return getDrainableStack();
}
@@ -158,26 +162,11 @@ public abstract class GT_MetaTileEntity_BasicTank extends GT_MetaTileEntity_Tier
}
@Override
- public void onOpenGUI() {
- super.onOpenGUI();
- mOpenerCount++;
- if (mOpenerCount == 1) updateFluidDisplayItem();
- }
-
- @Override
- public void onCloseGUI() {
- super.onCloseGUI();
- mOpenerCount--;
- }
-
- @Override
public void onPreTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
if (aBaseMetaTileEntity.isServerSide()) {
if (isFluidChangingAllowed() && getFillableStack() != null && getFillableStack().amount <= 0)
setFillableStack(null);
- if (mOpenerCount > 0) updateFluidDisplayItem();
-
if (doesEmptyContainers()) {
FluidStack tFluid = GT_Utility.getFluidForFilledItem(mInventory[getInputSlot()], true);
if (tFluid != null && isFluidInputAllowed(tFluid)) {
@@ -221,19 +210,6 @@ public abstract class GT_MetaTileEntity_BasicTank extends GT_MetaTileEntity_Tier
}
@Override
- public void updateFluidDisplayItem() {
- if (displaysItemStack() && getStackDisplaySlot() >= 0 && getStackDisplaySlot() < mInventory.length) {
- if (getDisplayedFluid() == null) {
- if (ItemList.Display_Fluid.isStackEqual(mInventory[getStackDisplaySlot()], true, true))
- mInventory[getStackDisplaySlot()] = null;
- } else {
- mInventory[getStackDisplaySlot()] = GT_Utility
- .getFluidDisplayStack(getDisplayedFluid(), true, !displaysStackSize());
- }
- }
- }
-
- @Override
public FluidStack getFluid() {
return getDrainableStack();
}
@@ -353,7 +329,7 @@ public abstract class GT_MetaTileEntity_BasicTank extends GT_MetaTileEntity_Tier
.setBackground(getGUITextureSet().getItemSlot(), GT_UITextures.OVERLAY_SLOT_OUT)
.setPos(79, 52))
.widget(
- createDrainableFluidSlot().setBackground(GT_UITextures.TRANSPARENT)
+ createFluidSlot().setBackground(GT_UITextures.TRANSPARENT)
.setPos(58, 41))
.widget(
new TextWidget("Liquid Amount").setDefaultColor(COLOR_TEXT_WHITE.get())
@@ -364,53 +340,12 @@ public abstract class GT_MetaTileEntity_BasicTank extends GT_MetaTileEntity_Tier
.setPos(10, 30));
}
- protected FluidDisplaySlotWidget createDrainableFluidSlot() {
- return new FluidDisplaySlotWidget(inventoryHandler, getStackDisplaySlot())
- .setFluidAccessConstructor(() -> constructFluidAccess(false))
- .setIHasFluidDisplay(this)
- .setCanDrain(true)
- .setCanFill(!isDrainableStackSeparate())
- .setActionRealClick(FluidDisplaySlotWidget.Action.TRANSFER)
- .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;
- });
- }
-
- protected IFluidAccess constructFluidAccess(boolean aIsFillableStack) {
- return new BasicTankFluidAccess(this, aIsFillableStack);
+ protected FluidSlotWidget createFluidSlot() {
+ return new FluidSlotWidget(fluidTank);
}
- protected static class BasicTankFluidAccess implements IFluidAccess {
-
- protected final GT_MetaTileEntity_BasicTank mTank;
- protected final boolean mIsFillableStack;
-
- public BasicTankFluidAccess(GT_MetaTileEntity_BasicTank aTank, boolean aIsFillableStack) {
- this.mTank = aTank;
- this.mIsFillableStack = aIsFillableStack;
- }
-
- @Override
- public void set(FluidStack stack) {
- if (mIsFillableStack) mTank.setFillableStack(stack);
- else mTank.setDrainableStack(stack);
- }
-
- @Override
- public FluidStack get() {
- return mIsFillableStack ? mTank.getFillableStack() : mTank.getDrainableStack();
- }
-
- @Override
- public int getCapacity() {
- return mTank.getCapacity();
- }
+ @Deprecated
+ protected FluidDisplaySlotWidget createDrainableFluidSlot() {
+ return null;
}
}
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_MultiInput.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_MultiInput.java
index 48d6569f42..cd1ea520c8 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_MultiInput.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_MultiInput.java
@@ -2,7 +2,6 @@ package gregtech.api.metatileentity.implementations;
import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_INPUT_HATCH_2x2;
-import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
@@ -12,26 +11,25 @@ import com.gtnewhorizons.modularui.api.ModularUITextures;
import com.gtnewhorizons.modularui.api.math.Pos2d;
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.fluid.FluidStackTank;
+import com.gtnewhorizons.modularui.common.widget.FluidSlotWidget;
-import gregtech.api.enums.ItemList;
-import gregtech.api.interfaces.IFluidAccess;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.modularui.IAddUIWidgets;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.render.TextureFactory;
-import gregtech.api.util.GT_Utility;
-import gregtech.common.gui.modularui.widget.FluidDisplaySlotWidget;
public class GT_MetaTileEntity_Hatch_MultiInput extends GT_MetaTileEntity_Hatch_Input implements IAddUIWidgets {
- public FluidStack[] mStoredFluid;
- public int mCapacityPer;
+ private final FluidStack[] mStoredFluid;
+ private final FluidStackTank[] fluidTanks;
+ public final int mCapacityPer;
public GT_MetaTileEntity_Hatch_MultiInput(int aID, int aSlot, String aName, String aNameRegional, int aTier) {
super(aID, aSlot, aName, aNameRegional, aTier);
this.mStoredFluid = new FluidStack[aSlot];
+ fluidTanks = new FluidStackTank[aSlot];
mCapacityPer = 8000 * (1 << aTier) / aSlot;
}
@@ -39,7 +37,15 @@ public class GT_MetaTileEntity_Hatch_MultiInput extends GT_MetaTileEntity_Hatch_
ITexture[][][] aTextures) {
super(aName, aSlot, aTier, aDescription, aTextures);
this.mStoredFluid = new FluidStack[aSlot];
+ fluidTanks = new FluidStackTank[aSlot];
mCapacityPer = 8000 * (1 << aTier) / aSlot;
+ for (int i = 0; i < aSlot; i++) {
+ final int index = i;
+ fluidTanks[i] = new FluidStackTank(
+ () -> mStoredFluid[index],
+ fluid -> mStoredFluid[index] = fluid,
+ mCapacityPer);
+ }
}
@Override
@@ -272,21 +278,6 @@ public class GT_MetaTileEntity_Hatch_MultiInput extends GT_MetaTileEntity_Hatch_
}
@Override
- public void updateFluidDisplayItem() {
- for (int i = 0; i < 4; i++) {
- updateFluidDisplayItem(i);
- }
- }
-
- public void updateFluidDisplayItem(int index) {
- if (getFluid(index) == null || getFluid(index).amount <= 0) {
- if (ItemList.Display_Fluid.isStackEqual(mInventory[index], true, true)) mInventory[index] = null;
- } else {
- mInventory[index] = GT_Utility.getFluidDisplayStack(getFluid(index), true, !displaysStackSize());
- }
- }
-
- @Override
public boolean useModularUI() {
return true;
}
@@ -298,68 +289,9 @@ public class GT_MetaTileEntity_Hatch_MultiInput extends GT_MetaTileEntity_Hatch_
new Pos2d(88, 43), };
for (int i = 0; i < SLOT_NUMBER; i++) {
- final int slotId = i;
builder.widget(
- new FluidDisplaySlotWidget(inventoryHandler, slotId)
- .setFluidAccessConstructor(() -> constructFluidAccess(slotId))
- .setIHasFluidDisplay(this)
- .setCanDrain(true)
- .setCanFill(!isDrainableStackSeparate())
- .setActionRealClick(FluidDisplaySlotWidget.Action.TRANSFER)
- .setBeforeRealClick((clickData, widget) -> {
- if (NetworkUtils.isClient()) {
- // propagate display item content to
- // actual fluid stored in this tank
- setFluid(
- GT_Utility.getFluidFromDisplayStack(
- widget.getMcSlot()
- .getStack()),
- slotId);
- }
- ItemStack tStackHeld = widget.getContext()
- .getPlayer().inventory.getItemStack();
- FluidStack tFluidHeld = GT_Utility.getFluidForFilledItem(tStackHeld, true);
- return constructFluidAccess(slotId).isMatch(tFluidHeld, slotId);
- })
- .setUpdateFluidDisplayItem(() -> updateFluidDisplayItem(slotId))
- .setBackground(ModularUITextures.FLUID_SLOT)
- .setPos(positions[slotId]));
- }
- }
-
- protected MultiFluidAccess constructFluidAccess(int aSlot) {
- return new MultiFluidAccess(this, aSlot);
- }
-
- protected static class MultiFluidAccess implements IFluidAccess {
-
- private final GT_MetaTileEntity_Hatch_MultiInput mTank;
- private final int mSlot;
-
- public MultiFluidAccess(GT_MetaTileEntity_Hatch_MultiInput aTank, int aSlot) {
- this.mTank = aTank;
- this.mSlot = aSlot;
- }
-
- public boolean isMatch(FluidStack stack, int slot) {
- if (!mTank.hasFluid(stack)) return true;
- if (stack == null) return true;
- return stack.equals(mTank.getFluid(slot));
- }
-
- @Override
- public void set(FluidStack stack) {
- mTank.setFluid(stack, mSlot);
- }
-
- @Override
- public FluidStack get() {
- return mTank.getFluid(mSlot);
- }
-
- @Override
- public int getCapacity() {
- return mTank.getCapacity();
+ new FluidSlotWidget(fluidTanks[i]).setBackground(ModularUITextures.FLUID_SLOT)
+ .setPos(positions[i]));
}
}
}
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 a967df47f3..fe3144f3a3 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
@@ -16,7 +16,6 @@ import net.minecraftforge.fluids.*;
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.DrawableWidget;
import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget;
import com.gtnewhorizons.modularui.common.widget.TextWidget;
@@ -32,7 +31,7 @@ import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_Utility;
-import gregtech.common.gui.modularui.widget.FluidDisplaySlotWidget;
+import gregtech.common.gui.modularui.widget.FluidLockWidget;
public class GT_MetaTileEntity_Hatch_Output extends GT_MetaTileEntity_Hatch implements IFluidLockable, IAddUIWidgets {
@@ -195,21 +194,6 @@ public class GT_MetaTileEntity_Hatch_Output extends GT_MetaTileEntity_Hatch impl
}
@Override
- public void updateFluidDisplayItem() {
- super.updateFluidDisplayItem();
- if (lockedFluidName == null || mMode < 8) mInventory[getLockedDisplaySlot()] = null;
- else {
- FluidStack tLockedFluid = FluidRegistry.getFluidStack(lockedFluidName, 1);
- // Because getStackDisplaySlot() only allow return one int, this place I only can manually set.
- if (tLockedFluid != null) {
- mInventory[getLockedDisplaySlot()] = GT_Utility.getFluidDisplayStack(tLockedFluid, false, true);
- } else {
- mInventory[getLockedDisplaySlot()] = null;
- }
- }
- }
-
- @Override
public boolean isValidSlot(int aIndex) {
// Because getStackDisplaySlot() only allow return one int, this place I only can manually set.
return aIndex != getStackDisplaySlot() && aIndex != getLockedDisplaySlot();
@@ -415,7 +399,7 @@ public class GT_MetaTileEntity_Hatch_Output extends GT_MetaTileEntity_Hatch impl
}
@Override
- public boolean allowChangingLockedFluid(String name) {
+ public boolean acceptsFluidLock(String name) {
return true;
}
@@ -484,41 +468,18 @@ public class GT_MetaTileEntity_Hatch_Output extends GT_MetaTileEntity_Hatch impl
new DrawableWidget().setDrawable(GT_UITextures.PICTURE_SCREEN_BLACK)
.setPos(98, 16)
.setSize(71, 45))
- .widget(
- new FluidDisplaySlotWidget(inventoryHandler, getLockedDisplaySlot()).setIHasFluidDisplay(this)
- .setActionRealClick(FluidDisplaySlotWidget.Action.LOCK)
- .setActionDragAndDrop(FluidDisplaySlotWidget.Action.LOCK)
- .setBeforeClick((clickData, widget) -> {
- if (NetworkUtils.isClient()) {
- // propagate
- // display
- // item
- // content to
- // actual
- // fluid
- // stored in
- // this tank
- setDrainableStack(GT_Utility.getFluidFromDisplayStack(mInventory[getStackDisplaySlot()]));
- }
- return true;
- })
- .setBackground(GT_UITextures.TRANSPARENT)
- .setPos(149, 41))
+ .widget(new FluidLockWidget(this).setPos(149, 41))
.widget(
new TextWidget("Locked Fluid").setDefaultColor(COLOR_TEXT_WHITE.get())
.setPos(101, 20))
.widget(TextWidget.dynamicString(() -> {
- final ItemStack lockedDisplayStack = mInventory[getLockedDisplaySlot()];
- return lockedDisplayStack == null ? "None" : lockedDisplayStack.getDisplayName();
+ FluidStack fluidStack = FluidRegistry.getFluidStack(lockedFluidName, 1);
+ return fluidStack != null ? fluidStack.getLocalizedName() : "None";
})
- .setSynced(false)
.setDefaultColor(COLOR_TEXT_WHITE.get())
.setTextAlignment(Alignment.CenterLeft)
.setMaxWidth(65)
.setPos(101, 30))
- // #updateFluidDisplayItem invalidates locked fluid slot
- // if lockedFluidName == null or mMode is incorrect
- .widget(new FakeSyncWidget.StringSyncer(() -> lockedFluidName, val -> lockedFluidName = val))
.widget(new FakeSyncWidget.ByteSyncer(() -> mMode, val -> mMode = val));
}
}
diff --git a/src/main/java/gregtech/api/net/GT_Packet_SetLockedFluid.java b/src/main/java/gregtech/api/net/GT_Packet_SetLockedFluid.java
deleted file mode 100644
index 04f147b208..0000000000
--- a/src/main/java/gregtech/api/net/GT_Packet_SetLockedFluid.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package gregtech.api.net;
-
-import net.minecraft.entity.player.EntityPlayerMP;
-import net.minecraft.network.INetHandler;
-import net.minecraft.network.NetHandlerPlayServer;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.world.IBlockAccess;
-import net.minecraft.world.World;
-import net.minecraftforge.fluids.Fluid;
-import net.minecraftforge.fluids.FluidRegistry;
-import net.minecraftforge.fluids.FluidStack;
-
-import com.google.common.io.ByteArrayDataInput;
-
-import gregtech.api.interfaces.metatileentity.IFluidLockable;
-import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
-import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
-import gregtech.api.util.GT_LanguageManager;
-import gregtech.api.util.GT_Utility;
-import io.netty.buffer.ByteBuf;
-
-public class GT_Packet_SetLockedFluid extends GT_Packet_New {
-
- protected int mX;
- protected short mY;
- protected int mZ;
-
- protected int mFluidID;
-
- private EntityPlayerMP mPlayer;
-
- public GT_Packet_SetLockedFluid() {
- super(true);
- }
-
- public GT_Packet_SetLockedFluid(IGregTechTileEntity aTile, FluidStack aSource) {
- this(aTile.getXCoord(), aTile.getYCoord(), aTile.getZCoord(), aSource.getFluidID());
- }
-
- public GT_Packet_SetLockedFluid(int x, short y, int z, int aFluidID) {
- super(false);
-
- this.mX = x;
- this.mY = y;
- this.mZ = z;
-
- this.mFluidID = aFluidID;
- }
-
- @Override
- public byte getPacketID() {
- return 14;
- }
-
- @Override
- public void encode(ByteBuf aOut) {
- aOut.writeInt(mX);
- aOut.writeShort(mY);
- aOut.writeInt(mZ);
-
- aOut.writeInt(mFluidID);
- }
-
- @Override
- public void setINetHandler(INetHandler aHandler) {
- if (aHandler instanceof NetHandlerPlayServer) {
- mPlayer = ((NetHandlerPlayServer) aHandler).playerEntity;
- }
- }
-
- @Override
- public GT_Packet_New decode(ByteArrayDataInput aData) {
- return new GT_Packet_SetLockedFluid(aData.readInt(), aData.readShort(), aData.readInt(), aData.readInt());
- }
-
- @Override
- public void process(IBlockAccess aWorld) {
- if (mPlayer == null) return;
- World world = mPlayer.worldObj;
- TileEntity tile = world.getTileEntity(mX, mY, mZ);
- if (!(tile instanceof IGregTechTileEntity) || ((IGregTechTileEntity) tile).isDead()) return;
- IMetaTileEntity mte = ((IGregTechTileEntity) tile).getMetaTileEntity();
- if (!(mte instanceof IFluidLockable mteToLock)) return;
- Fluid tFluid = FluidRegistry.getFluid(mFluidID);
- if (tFluid == null) return;
- if (!mteToLock.allowChangingLockedFluid(tFluid.getName())) return;
-
- mteToLock.lockFluid(true);
- mteToLock.setLockedFluidName(tFluid.getName());
- GT_Utility.sendChatToPlayer(
- mPlayer,
- String.format(
- GT_LanguageManager.addStringLocalization(
- "Interaction_DESCRIPTION_Index_151.4",
- "Successfully locked Fluid to %s",
- false),
- new FluidStack(tFluid, 1).getLocalizedName()));
-
- mteToLock.onFluidLockPacketReceived(tFluid.getName());
- }
-}
diff --git a/src/main/java/gregtech/common/GT_Client.java b/src/main/java/gregtech/common/GT_Client.java
index b7ef7e8fef..01dc86de8e 100644
--- a/src/main/java/gregtech/common/GT_Client.java
+++ b/src/main/java/gregtech/common/GT_Client.java
@@ -30,7 +30,6 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.ChunkCoordIntPair;
import net.minecraft.world.World;
import net.minecraftforge.client.event.DrawBlockHighlightEvent;
@@ -56,9 +55,7 @@ import gregtech.api.GregTech_API;
import gregtech.api.enums.*;
import gregtech.api.gui.GT_GUIColorOverride;
import gregtech.api.gui.modularui.FallbackableSteamTexture;
-import gregtech.api.interfaces.IHasFluidDisplayItem;
import gregtech.api.interfaces.tileentity.ICoverable;
-import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.interfaces.tileentity.ITurnable;
import gregtech.api.items.GT_MetaGenerated_Item;
import gregtech.api.metatileentity.BaseMetaPipeEntity;
@@ -77,7 +74,6 @@ import gregtech.api.util.GT_Utility;
import gregtech.api.util.WorldSpawnedEventBuilder;
import gregtech.common.entities.GT_Entity_Arrow;
import gregtech.common.entities.GT_Entity_Arrow_Potion;
-import gregtech.common.net.MessageUpdateFluidDisplayItem;
import gregtech.common.render.*;
import gregtech.common.render.items.GT_MetaGenerated_Item_Renderer;
import gregtech.common.tileentities.debug.GT_MetaTileEntity_AdvDebugStructureWriter;
@@ -165,9 +161,6 @@ public class GT_Client extends GT_Proxy implements Runnable {
private long afterSomeTime;
private boolean mAnimationDirection;
- private int mLastUpdatedBlockX;
- private int mLastUpdatedBlockY;
- private int mLastUpdatedBlockZ;
private GT_ClientPreference mPreference;
private boolean mFirstTick = false;
public static final int ROTATION_MARKER_RESOLUTION = 120;
@@ -725,28 +718,6 @@ public class GT_Client extends GT_Proxy implements Runnable {
}
}
if (!GregTech_API.mServerStarted) GregTech_API.mServerStarted = true;
- if (GT_Values.updateFluidDisplayItems) {
- final MovingObjectPosition trace = Minecraft.getMinecraft().objectMouseOver;
- if (trace != null && trace.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK
- && (mLastUpdatedBlockX != trace.blockX && mLastUpdatedBlockY != trace.blockY
- && mLastUpdatedBlockZ != trace.blockZ || afterSomeTime % 10 == 0)) {
- mLastUpdatedBlockX = trace.blockX;
- mLastUpdatedBlockY = trace.blockY;
- mLastUpdatedBlockZ = trace.blockZ;
- final TileEntity tileEntity = aEvent.player.worldObj
- .getTileEntity(trace.blockX, trace.blockY, trace.blockZ);
- if (tileEntity instanceof IGregTechTileEntity gtTile) {
- if (gtTile.getMetaTileEntity() instanceof IHasFluidDisplayItem) {
- GT_Values.NW.sendToServer(
- new MessageUpdateFluidDisplayItem(
- trace.blockX,
- trace.blockY,
- trace.blockZ,
- gtTile.getWorld().provider.dimensionId));
- }
- }
- }
- }
}
}
diff --git a/src/main/java/gregtech/common/GT_Network.java b/src/main/java/gregtech/common/GT_Network.java
index 6ab0ed4f02..253f2025ba 100644
--- a/src/main/java/gregtech/common/GT_Network.java
+++ b/src/main/java/gregtech/common/GT_Network.java
@@ -22,7 +22,6 @@ import gregtech.api.enums.GT_Values;
import gregtech.api.net.*;
import gregtech.common.blocks.GT_Packet_Ores;
import gregtech.common.net.MessageSetFlaskCapacity;
-import gregtech.common.net.MessageUpdateFluidDisplayItem;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandler;
@@ -48,13 +47,13 @@ public class GT_Network extends MessageToMessageCodec<FMLProxyPacket, GT_Packet>
new MessageSetFlaskCapacity(), // 5
new GT_Packet_TileEntityCover(), // 6
new GT_Packet_TileEntityCoverGUI(), // 7
- new MessageUpdateFluidDisplayItem(), // 8
+ // 8
new GT_Packet_ClientPreference(), // 9
new GT_Packet_WirelessRedstoneCover(), // 10
new GT_Packet_TileEntityCoverNew(), // 11
new GT_Packet_SetConfigurationCircuit(), // 12
new GT_Packet_UpdateItem(), // 13
- new GT_Packet_SetLockedFluid(), // 14
+ // 14
new GT_Packet_GtTileEntityGuiRequest(), // 15
new GT_Packet_SendCoverData(), // 16
new GT_Packet_RequestCoverData(), // 17
@@ -64,7 +63,8 @@ public class GT_Network extends MessageToMessageCodec<FMLProxyPacket, GT_Packet>
public GT_Network(String channelName, GT_Packet... packetTypes) {
this.mChannel = NetworkRegistry.INSTANCE.newChannel(channelName, this, new HandlerShared());
- this.mSubChannels = new GT_Packet[packetTypes.length];
+ final int lastPId = packetTypes[packetTypes.length - 1].getPacketID();
+ this.mSubChannels = new GT_Packet[lastPId + 1];
for (GT_Packet packetType : packetTypes) {
final int pId = packetType.getPacketID();
if (this.mSubChannels[pId] == null) this.mSubChannels[pId] = packetType;
diff --git a/src/main/java/gregtech/common/gui/modularui/widget/FluidDisplaySlotWidget.java b/src/main/java/gregtech/common/gui/modularui/widget/FluidDisplaySlotWidget.java
index bc37f5c11a..a5b9f88c60 100644
--- a/src/main/java/gregtech/common/gui/modularui/widget/FluidDisplaySlotWidget.java
+++ b/src/main/java/gregtech/common/gui/modularui/widget/FluidDisplaySlotWidget.java
@@ -25,6 +25,7 @@ import gregtech.api.interfaces.IHasFluidDisplayItem;
import gregtech.api.interfaces.metatileentity.IFluidLockable;
import gregtech.api.util.GT_Utility;
+@Deprecated
public class FluidDisplaySlotWidget extends SlotWidget {
private IHasFluidDisplayItem iHasFluidDisplay;
@@ -36,11 +37,7 @@ public class FluidDisplaySlotWidget extends SlotWidget {
private Action actionDragAndDrop = Action.NONE;
private BiFunction<ClickData, FluidDisplaySlotWidget, Boolean> beforeRealClick;
private BiFunction<ClickData, FluidDisplaySlotWidget, Boolean> beforeDragAndDrop;
- private Runnable updateFluidDisplayItem = () -> {
- if (iHasFluidDisplay != null) {
- iHasFluidDisplay.updateFluidDisplayItem();
- }
- };
+ private Runnable updateFluidDisplayItem = () -> {};
public FluidDisplaySlotWidget(BaseSlot slot) {
super(slot);
@@ -315,46 +312,9 @@ public class FluidDisplaySlotWidget extends SlotWidget {
updateFluidDisplayItem.run();
}
- protected void lockFluid(ItemStack cursorStack) {
- if (!(iHasFluidDisplay instanceof IFluidLockable mteToLock)) return;
-
- if (cursorStack == null) {
- if (!mteToLock.allowChangingLockedFluid(null)) return;
-
- mteToLock.lockFluid(false);
- mteToLock.setLockedFluidName(null);
- GT_Utility.sendChatToPlayer(getContext().getPlayer(), GT_Utility.trans("300.1", "Fluid Lock Cleared."));
+ protected void lockFluid(ItemStack cursorStack) {}
- if (!isClient()) {
- mteToLock.onFluidLockPacketReceived(null);
- }
- } else {
- FluidStack fluidStack = GT_Utility.getFluidFromContainerOrFluidDisplay(cursorStack);
- if (fluidStack == null) return;
- Fluid tFluid = fluidStack.getFluid();
- if (tFluid == null) return;
-
- if (!mteToLock.allowChangingLockedFluid(tFluid.getName())) return;
-
- mteToLock.lockFluid(true);
- mteToLock.setLockedFluidName(tFluid.getName());
- GT_Utility.sendChatToPlayer(
- getContext().getPlayer(),
- String.format(
- GT_Utility.trans("151.4", "Successfully locked Fluid to %s"),
- new FluidStack(tFluid, 1).getLocalizedName()));
-
- if (!isClient()) {
- mteToLock.onFluidLockPacketReceived(tFluid.getName());
- }
- }
- }
-
- protected void updateFluidDisplayItem() {
- if (iHasFluidDisplay != null) {
- iHasFluidDisplay.updateFluidDisplayItem();
- }
- }
+ protected void updateFluidDisplayItem() {}
// === setters ===
@@ -444,10 +404,6 @@ public class FluidDisplaySlotWidget extends SlotWidget {
return this;
}
- /**
- * By default, this widget runs {@link IHasFluidDisplayItem#updateFluidDisplayItem} after click. You can specify
- * custom update action with this method.
- */
public FluidDisplaySlotWidget setUpdateFluidDisplayItem(Runnable updateFluidDisplayItem) {
this.updateFluidDisplayItem = updateFluidDisplayItem;
return this;
diff --git a/src/main/java/gregtech/common/gui/modularui/widget/FluidLockWidget.java b/src/main/java/gregtech/common/gui/modularui/widget/FluidLockWidget.java
new file mode 100644
index 0000000000..5627a4fb8b
--- /dev/null
+++ b/src/main/java/gregtech/common/gui/modularui/widget/FluidLockWidget.java
@@ -0,0 +1,17 @@
+package gregtech.common.gui.modularui.widget;
+
+import com.gtnewhorizons.modularui.common.widget.FluidNameHolderWidget;
+
+import gregtech.api.interfaces.metatileentity.IFluidLockable;
+
+public class FluidLockWidget extends FluidNameHolderWidget {
+
+ public FluidLockWidget(IFluidLockable fluidLockable) {
+ super(fluidLockable::getLockedFluidName, name -> {
+ if (fluidLockable.acceptsFluidLock(name)) {
+ fluidLockable.setLockedFluidName(name);
+ fluidLockable.lockFluid(name != null);
+ }
+ });
+ }
+}
diff --git a/src/main/java/gregtech/common/net/MessageUpdateFluidDisplayItem.java b/src/main/java/gregtech/common/net/MessageUpdateFluidDisplayItem.java
deleted file mode 100644
index 2887714996..0000000000
--- a/src/main/java/gregtech/common/net/MessageUpdateFluidDisplayItem.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package gregtech.common.net;
-
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.world.IBlockAccess;
-import net.minecraft.world.WorldServer;
-import net.minecraftforge.common.DimensionManager;
-
-import com.google.common.io.ByteArrayDataInput;
-
-import gregtech.api.interfaces.IHasFluidDisplayItem;
-import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
-import gregtech.api.net.GT_Packet_New;
-import io.netty.buffer.ByteBuf;
-
-public class MessageUpdateFluidDisplayItem extends GT_Packet_New {
-
- private int mBlockX, mBlockY, mBlockZ, mDim;
-
- public MessageUpdateFluidDisplayItem() {
- super(true);
- }
-
- public MessageUpdateFluidDisplayItem(int mBlockX, int mBlockY, int mBlockZ, int mDim) {
- super(false);
- this.mBlockX = mBlockX;
- this.mBlockY = mBlockY;
- this.mBlockZ = mBlockZ;
- this.mDim = mDim;
- }
-
- @Override
- public byte getPacketID() {
- return 8;
- }
-
- @Override
- public void encode(ByteBuf aOut) {
- aOut.writeInt(mBlockX);
- aOut.writeInt(mBlockY);
- aOut.writeInt(mBlockZ);
- aOut.writeInt(mDim);
- }
-
- @Override
- public GT_Packet_New decode(ByteArrayDataInput aData) {
- return new MessageUpdateFluidDisplayItem(aData.readInt(), aData.readInt(), aData.readInt(), aData.readInt());
- }
-
- @Override
- public void process(IBlockAccess aWorld) {
- WorldServer world = DimensionManager.getWorld(mDim);
- if (world != null) {
- if (world.blockExists(mBlockX, mBlockY, mBlockZ)) {
- TileEntity tileEntity = world.getTileEntity(mBlockX, mBlockY, mBlockZ);
- if (tileEntity instanceof IGregTechTileEntity gtTile) {
- if (gtTile.getMetaTileEntity() instanceof IHasFluidDisplayItem) {
- ((IHasFluidDisplayItem) gtTile.getMetaTileEntity()).updateFluidDisplayItem();
- }
- }
- }
- }
- }
-}
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() {}
- }
}
diff --git a/src/main/java/gregtech/loaders/preload/GT_PreLoad.java b/src/main/java/gregtech/loaders/preload/GT_PreLoad.java
index d9f62bdc45..7ff8d6bfda 100644
--- a/src/main/java/gregtech/loaders/preload/GT_PreLoad.java
+++ b/src/main/java/gregtech/loaders/preload/GT_PreLoad.java
@@ -359,8 +359,6 @@ public class GT_PreLoad {
.getBoolean(false);
GT_Values.D2 = tMainConfig.get(GT_Mod.aTextGeneral, "Debug2", false)
.getBoolean(false);
- GT_Values.updateFluidDisplayItems = tMainConfig.get(GT_Mod.aTextGeneral, "update fluid display items", true)
- .getBoolean(true);
GT_Values.allow_broken_recipemap = tMainConfig.get(GT_Mod.aTextGeneral, "debug allow broken recipemap", false)
.getBoolean(false);
GT_Values.debugCleanroom = tMainConfig.get(GT_Mod.aTextGeneral, "debugCleanroom", false)