diff options
Diffstat (limited to 'src/main')
25 files changed, 163 insertions, 648 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) diff --git a/src/main/resources/assets/gregtech/lang/en_US.lang b/src/main/resources/assets/gregtech/lang/en_US.lang index e7e10ac1ea..175b11cd6a 100644 --- a/src/main/resources/assets/gregtech/lang/en_US.lang +++ b/src/main/resources/assets/gregtech/lang/en_US.lang @@ -151,13 +151,6 @@ GT5U.machines.special_slot.tooltip=Data Slot GT5U.machines.special_slot.tooltip.1=§7See recipes for usage GT5U.machines.unused_slot.tooltip=Storage Slot GT5U.machines.unused_slot.tooltip.1=§7Unused in this machine -GT5U.machines.fluid_input_slot.tooltip=Fluid Input Tank -GT5U.machines.fluid_input_slot.tooltip.1=§7%1$d§7L Capacity -GT5U.machines.fluid_input_slot.tooltip.2=§7Fill with full cells -GT5U.machines.fluid_input_slot.tooltip.3=§7Drain with empty cells -GT5U.machines.fluid_output_slot.tooltip=Fluid Output Tank -GT5U.machines.fluid_output_slot.tooltip.1=§7%1$d§7L Capacity -GT5U.machines.fluid_output_slot.tooltip.2=§7Drain with empty cells GT5U.machines.stalled_stuttering.tooltip=§4Stalled: Insufficient %1$s§4! GT5U.machines.stalled_stuttering.tooltip.1=§7Provide %1$s§7 consistently GT5U.machines.stalled_stuttering.tooltip.2=§7for the entire duration of diff --git a/src/main/resources/assets/gregtech/lang/zh_CN.lang b/src/main/resources/assets/gregtech/lang/zh_CN.lang index 2936fe40d5..6416d536b8 100644 --- a/src/main/resources/assets/gregtech/lang/zh_CN.lang +++ b/src/main/resources/assets/gregtech/lang/zh_CN.lang @@ -139,7 +139,7 @@ GT5U.machines.item_transfer.tooltip.extended.5=§7Shift以切换多组输入. GT5U.machines.battery_slot.tooltip=电力槽 GT5U.machines.battery_slot.tooltip.1=§7使用 %1$s§7 电池供能 GT5U.machines.battery_slot.tooltip.2=§7可以为 %1$s§7 工具&电池充电 -GT5U.machines.battery_slot.tooltip.extended=§4警告:§7 如果通过线缆输入 +GT5U.machines.battery_slot.tooltip.extended=§4警告:§7 如果通过线缆输入 GT5U.machines.battery_slot.tooltip.extended.1=§7%2$s§7+ 电压将导致爆炸. GT5U.machines.battery_slot.tooltip.alternative=电力槽 GT5U.machines.battery_slot.tooltip.alternative.1=%1$s§7 电压? 你已经不再需要tooltip了. @@ -147,13 +147,6 @@ GT5U.machines.special_slot.tooltip=数据槽 GT5U.machines.special_slot.tooltip.1=§7用途参见合成表 GT5U.machines.unused_slot.tooltip=存储槽 GT5U.machines.unused_slot.tooltip.1=§7在本机器中空置 -GT5U.machines.fluid_input_slot.tooltip=流体输入槽 -GT5U.machines.fluid_input_slot.tooltip.1=容量:§7%1$d§7升 -GT5U.machines.fluid_input_slot.tooltip.2=§7可用满单元填充流体 -GT5U.machines.fluid_input_slot.tooltip.3=§7可用空单元排出流体 -GT5U.machines.fluid_output_slot.tooltip=流体输出槽 -GT5U.machines.fluid_output_slot.tooltip.1=容量:§7%1$d§7升 -GT5U.machines.fluid_output_slot.tooltip.2=§7可用空单元排出流体 GT5U.machines.stalled_stuttering.tooltip=§4故障:%1$s 不足§4! GT5U.machines.stalled_stuttering.tooltip.1=§7请在处理过程中 GT5U.machines.stalled_stuttering.tooltip.2=§7持续提供 %1$s @@ -324,7 +317,7 @@ achievement.unitool=万用工具 achievement.unitool.desc=制造一把万用铲 achievement.recycling=回收利用 achievement.recycling.desc=制造一台电弧炉 -achievement.crushed=粉碎 +achievement.crushed=粉碎 achievement.crushed.desc=用锤子粉碎矿石 achievement.cleandust=清洗 achievement.cleandust.desc=在坩埚里清洗粉末 @@ -1050,4 +1043,4 @@ fluid.poo=便便 fluid.sewerage=下水 fluid.fuelgc=GC燃油 fluid.dirtywater=污水 -fluid.oilgc=GC石油
\ No newline at end of file +fluid.oilgc=GC石油 |