diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java index b73b80b032..4b1ed0563a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java @@ -17,7 +17,7 @@ import com.gregtechceu.gtceu.client.renderer.GTRendererProvider; import com.gregtechceu.gtceu.common.pipelike.fluidpipe.longdistance.LDFluidEndpointMachine; import com.gregtechceu.gtceu.common.pipelike.item.longdistance.LDItemEndpointMachine; -import com.gregtechceu.gtceu.utils.GTUtil; +import com.gregtechceu.gtceu.utils.GTTransferUtils; import com.lowdragmc.lowdraglib.client.renderer.IRenderer; import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; @@ -217,7 +217,7 @@ public static LazyOptional getCapability(MetaMachine machine, @NotNull Ca ILDEndpoint endpoint = fluidEndpointMachine.getLink(); if (endpoint == null) return null; Direction outputFacing = fluidEndpointMachine.getOutputFacing(); - var h = GTUtil.getAdjacentFluidHandler(machine.getLevel(), endpoint.getPos(), outputFacing) + var h = GTTransferUtils.getAdjacentFluidHandler(machine.getLevel(), endpoint.getPos(), outputFacing) .map(LDFluidEndpointMachine.FluidHandlerWrapper::new); if (h.isPresent()) { return ForgeCapabilities.FLUID_HANDLER.orEmpty(cap, LazyOptional.of(h::get)); diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java index 90a937a023..8981ea47bf 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java @@ -1,8 +1,6 @@ package com.gregtechceu.gtceu.api.capability.recipe; -import com.gregtechceu.gtceu.api.misc.lib.FluidTransferList; -import com.gregtechceu.gtceu.api.misc.lib.TagOrCycleFluidTransfer; -import com.gregtechceu.gtceu.api.misc.lib.TankWidget; +import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.content.Content; @@ -14,7 +12,9 @@ import com.gregtechceu.gtceu.api.recipe.lookup.MapFluidTagIngredient; import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; import com.gregtechceu.gtceu.api.recipe.ui.GTRecipeTypeUI; +import com.gregtechceu.gtceu.api.transfer.fluid.FluidHandlerList; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; +import com.gregtechceu.gtceu.api.transfer.fluid.TagOrCycleFluidHandler; import com.gregtechceu.gtceu.client.TooltipsHandler; import com.gregtechceu.gtceu.integration.GTRecipeWidget; import com.gregtechceu.gtceu.utils.FluidKey; @@ -150,7 +150,7 @@ public int limitParallel(GTRecipe recipe, IRecipeCapabilityHolder holder, int mu int minMultiplier = 0; int maxMultiplier = multiplier; - OverlayedFluidHandler overlayedFluidHandler = new OverlayedFluidHandler(new FluidTransferList( + OverlayedFluidHandler overlayedFluidHandler = new OverlayedFluidHandler(new FluidHandlerList( Objects.requireNonNullElseGet(holder.getCapabilitiesProxy().get(IO.OUT, FluidRecipeCapability.CAP), Collections::emptyList) .stream() @@ -302,7 +302,7 @@ public int getMaxParallelRatio(IRecipeCapabilityHolder holder, GTRecipe recipe, public Object createXEIContainer(List contents) { // cast is safe if you don't pass the wrong thing. // noinspection unchecked - return new TagOrCycleFluidTransfer( + return new TagOrCycleFluidHandler( (List, Integer>>, List>>) contents); } @@ -332,7 +332,7 @@ public void applyWidgetInfo(@NotNull Widget widget, @Nullable Content content, @Nullable Object storage) { if (widget instanceof TankWidget tank) { - if (storage instanceof TagOrCycleFluidTransfer fluidHandler) { + if (storage instanceof TagOrCycleFluidHandler fluidHandler) { tank.setFluidTank(fluidHandler, index); } else if (storage instanceof IFluidHandlerModifiable fluidHandler) { tank.setFluidTank(new OverlayingFluidStorage(fluidHandler, index)); diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/FluidPipeProperties.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/FluidPipeProperties.java index 8e3a7cce9a..04ebcc9691 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/FluidPipeProperties.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/FluidPipeProperties.java @@ -5,8 +5,6 @@ import com.gregtechceu.gtceu.api.fluids.attribute.FluidAttribute; import com.gregtechceu.gtceu.api.fluids.attribute.FluidAttributes; -import net.minecraftforge.fluids.FluidType; - import it.unimi.dsi.fastutil.objects.Object2BooleanMap; import it.unimi.dsi.fastutil.objects.Object2BooleanOpenHashMap; import lombok.Getter; @@ -103,10 +101,6 @@ public String toString() { '}'; } - public int getPlatformThroughput() { - return getThroughput() * FluidType.BUCKET_VOLUME / 1000; - } - @Override public boolean canContain(@NotNull FluidState state) { return switch (state) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/misc/IGhostFluidTarget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/misc/IGhostFluidTarget.java index 4501b899b5..baeaaeb6f0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/misc/IGhostFluidTarget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/misc/IGhostFluidTarget.java @@ -17,7 +17,7 @@ import java.util.Collections; import java.util.List; -import static com.gregtechceu.gtceu.api.misc.lib.PhantomFluidWidget.drainFrom; +import static com.gregtechceu.gtceu.api.gui.widget.PhantomFluidWidget.drainFrom; public interface IGhostFluidTarget extends IGhostIngredientTarget { diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/lib/PhantomFluidWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PhantomFluidWidget.java similarity index 99% rename from src/main/java/com/gregtechceu/gtceu/api/misc/lib/PhantomFluidWidget.java rename to src/main/java/com/gregtechceu/gtceu/api/gui/widget/PhantomFluidWidget.java index 5ad8c55d94..ff507739e1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/lib/PhantomFluidWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PhantomFluidWidget.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.api.misc.lib; +package com.gregtechceu.gtceu.api.gui.widget; import com.lowdragmc.lowdraglib.LDLib; import com.lowdragmc.lowdraglib.gui.editor.annotation.ConfigSetter; diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ScrollablePhantomFluidWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ScrollablePhantomFluidWidget.java index 43e5d7d634..93f621d2aa 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ScrollablePhantomFluidWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ScrollablePhantomFluidWidget.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.api.gui.widget; -import com.gregtechceu.gtceu.api.misc.lib.PhantomFluidWidget; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; import com.gregtechceu.gtceu.utils.GTUtil; @@ -8,7 +7,6 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidType; import org.jetbrains.annotations.Nullable; @@ -18,7 +16,6 @@ public class ScrollablePhantomFluidWidget extends PhantomFluidWidget { private static final int SCROLL_ACTION_ID = 0x0001_0001; - private static final int MILLIBUCKETS = FluidType.BUCKET_VOLUME / 1000; public ScrollablePhantomFluidWidget(@Nullable IFluidHandlerModifiable fluidTank, int tank, int x, int y, int width, int height, Supplier phantomFluidGetter, @@ -32,7 +29,7 @@ public boolean mouseWheelMove(double mouseX, double mouseY, double wheelDelta) { if (!isMouseOverElement(mouseX, mouseY)) return false; - var delta = getModifiedChangeAmount((wheelDelta > 0) ? 1 : -1) * MILLIBUCKETS; + var delta = getModifiedChangeAmount((wheelDelta > 0) ? 1 : -1); writeClientAction(SCROLL_ACTION_ID, buf -> buf.writeInt(delta)); return true; diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/lib/TankWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/TankWidget.java similarity index 97% rename from src/main/java/com/gregtechceu/gtceu/api/misc/lib/TankWidget.java rename to src/main/java/com/gregtechceu/gtceu/api/gui/widget/TankWidget.java index a5b43aa5b6..9c0bd5cfe7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/lib/TankWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/TankWidget.java @@ -1,4 +1,6 @@ -package com.gregtechceu.gtceu.api.misc.lib; +package com.gregtechceu.gtceu.api.gui.widget; + +import com.gregtechceu.gtceu.api.transfer.fluid.TagOrCycleFluidHandler; import com.lowdragmc.lowdraglib.LDLib; import com.lowdragmc.lowdraglib.Platform; @@ -45,7 +47,6 @@ import net.minecraftforge.common.SoundActions; import net.minecraftforge.fluids.FluidActionResult; import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidType; import net.minecraftforge.fluids.FluidUtil; import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.fluids.capability.templates.FluidTank; @@ -206,7 +207,7 @@ public Object getXEIIngredientOverMouse(double mouseX, double mouseY) { if (this.fluidTank instanceof CycleFluidTransfer cycleItemStackHandler) { return getXEIIngredientsFromCycleTransferClickable(cycleItemStackHandler, tank).get(0); - } else if (this.fluidTank instanceof TagOrCycleFluidTransfer transfer) { + } else if (this.fluidTank instanceof TagOrCycleFluidHandler transfer) { return getXEIIngredientsFromTagOrCycleTransferClickable(transfer, tank).get(0); } @@ -232,7 +233,7 @@ public List getXEIIngredients() { if (this.fluidTank instanceof CycleFluidTransfer cycleItemStackHandler) { return getXEIIngredientsFromCycleTransfer(cycleItemStackHandler, tank); - } else if (this.fluidTank instanceof TagOrCycleFluidTransfer transfer) { + } else if (this.fluidTank instanceof TagOrCycleFluidHandler transfer) { return getXEIIngredientsFromTagOrCycleTransfer(transfer, tank); } @@ -280,7 +281,7 @@ private List getXEIIngredientsFromCycleTransferClickable(CycleFluidTrans return Collections.emptyList(); } - private List getXEIIngredientsFromTagOrCycleTransfer(TagOrCycleFluidTransfer transfer, int index) { + private List getXEIIngredientsFromTagOrCycleTransfer(TagOrCycleFluidHandler transfer, int index) { Either, Integer>>, List> either = transfer .getStacks() .get(index); @@ -317,7 +318,7 @@ private List getXEIIngredientsFromTagOrCycleTransfer(TagOrCycleFluidTran return ref.returnValue; } - private List getXEIIngredientsFromTagOrCycleTransferClickable(TagOrCycleFluidTransfer transfer, int index) { + private List getXEIIngredientsFromTagOrCycleTransferClickable(TagOrCycleFluidHandler transfer, int index) { Either, Integer>>, List> either = transfer .getStacks() .get(index); @@ -452,12 +453,11 @@ public void drawInForeground(@Nonnull GuiGraphics graphics, int mouseX, int mous if (lastFluidInTank != null && !lastFluidInTank.isEmpty()) { tooltips.add(lastFluidInTank.getDisplayName()); tooltips.add(Component.translatable("ldlib.fluid.amount", lastFluidInTank.getAmount(), lastTankCapacity) - .append(" " + FluidHelper.getUnit())); + .append(" mB")); if (!Platform.isForge()) { tooltips.add(Component.literal( - "§6mB:§r %d/%d".formatted(lastFluidInTank.getAmount() * 1000 / FluidType.BUCKET_VOLUME, - lastTankCapacity * 1000 / FluidType.BUCKET_VOLUME)) - .append(" " + "mB")); + "§6mB:§r %d/%d mB".formatted(lastFluidInTank.getAmount(), + lastTankCapacity))); } tooltips.add(Component.translatable("ldlib.fluid.temperature", lastFluidInTank.getFluid().getFluidType().getTemperature(lastFluidInTank))); @@ -466,11 +466,10 @@ public void drawInForeground(@Nonnull GuiGraphics graphics, int mouseX, int mous } else { tooltips.add(Component.translatable("ldlib.fluid.empty")); tooltips.add(Component.translatable("ldlib.fluid.amount", 0, lastTankCapacity) - .append(" " + FluidHelper.getUnit())); + .append(" mB")); if (!Platform.isForge()) { tooltips.add(Component - .literal("§6mB:§r %d/%d".formatted(0, lastTankCapacity * 1000 / FluidType.BUCKET_VOLUME)) - .append(" " + "mB")); + .literal("§6mB:§r %d/%d mB".formatted(0, lastTankCapacity))); } } if (gui != null) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index 97a748259a..4380abd2fb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -19,7 +19,7 @@ import com.gregtechceu.gtceu.api.machine.feature.*; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.machine.trait.MachineTrait; -import com.gregtechceu.gtceu.api.misc.IOFluidTransferList; +import com.gregtechceu.gtceu.api.misc.IOFluidHandlerList; import com.gregtechceu.gtceu.api.misc.IOItemTransferList; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; import com.gregtechceu.gtceu.common.cover.FluidFilterCover; @@ -705,7 +705,7 @@ public IFluidHandlerModifiable getFluidTransferCap(@Nullable Direction side, boo io = IO.OUT; } - IOFluidTransferList transferList = new IOFluidTransferList(list, io, getFluidCapFilter(side)); + IOFluidHandlerList transferList = new IOFluidHandlerList(list, io, getFluidCapFilter(side)); if (!useCoverCapability || side == null) return transferList; CoverBehavior cover = getCoverContainer().getCoverAtSide(side); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java index 3de80209e5..5703c95df8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java @@ -18,7 +18,7 @@ import com.gregtechceu.gtceu.common.item.IntCircuitBehaviour; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.data.lang.LangHandler; -import com.gregtechceu.gtceu.utils.GTUtil; +import com.gregtechceu.gtceu.utils.GTTransferUtils; import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; @@ -249,7 +249,7 @@ protected void updateAutoOutputSubscription() { ItemTransferHelper.getItemTransfer(getLevel(), getPos().relative(outputFacingItems), outputFacingItems.getOpposite()) != null || (isAutoOutputFluids() && !exportFluids.isEmpty()) && outputFacingFluids != null && - GTUtil.isAdjacentFluidHandler(getLevel(), getPos(), outputFacingFluids)) { + GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getPos(), outputFacingFluids)) { autoOutputSubs = subscribeServerTick(autoOutputSubs, this::autoOutput); } else if (autoOutputSubs != null) { autoOutputSubs.unsubscribe(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/FancyTankConfigurator.java b/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/FancyTankConfigurator.java index 89c20b0b61..ffde47feb4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/FancyTankConfigurator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/FancyTankConfigurator.java @@ -2,7 +2,7 @@ import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.fancy.IFancyConfigurator; -import com.gregtechceu.gtceu.api.misc.lib.TankWidget; +import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.transfer.fluid.CustomFluidTank; import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java index 603f8f7875..18fec5a333 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java @@ -89,7 +89,7 @@ public void onLoad() { super.onLoad(); // Fine, we use it to provide eu cap for recipe, simulating an EU machine. capabilitiesProxy.put(IO.IN, EURecipeCapability.CAP, - List.of(new SteamEnergyRecipeHandler(steamTank, FluidType.BUCKET_VOLUME / 1000d))); + List.of(new SteamEnergyRecipeHandler(steamTank, 1d))); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java index 800d7dfce3..4a3a0ef1de 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.UITemplate; +import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.TickableSubscription; @@ -11,7 +12,6 @@ import com.gregtechceu.gtceu.api.machine.feature.IExplosionMachine; import com.gregtechceu.gtceu.api.machine.feature.IUIMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; -import com.gregtechceu.gtceu.api.misc.lib.TankWidget; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.logic.OCParams; import com.gregtechceu.gtceu.api.recipe.logic.OCResult; @@ -19,7 +19,7 @@ import com.gregtechceu.gtceu.common.item.PortableScannerBehavior; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.utils.FormattingUtil; -import com.gregtechceu.gtceu.utils.GTUtil; +import com.gregtechceu.gtceu.utils.GTTransferUtils; import com.lowdragmc.lowdraglib.gui.modular.ModularUI; import com.lowdragmc.lowdraglib.gui.texture.ProgressTexture; @@ -146,7 +146,7 @@ public void onNeighborChanged(Block block, BlockPos fromPos, boolean isMoving) { protected void updateAutoOutputSubscription() { if (Direction.stream().filter(direction -> direction != getFrontFacing() && direction != Direction.DOWN) - .anyMatch(direction -> GTUtil.isAdjacentFluidHandler(getLevel(), getPos(), direction))) { + .anyMatch(direction -> GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getPos(), direction))) { autoOutputSubs = subscribeServerTick(autoOutputSubs, this::autoOutput); } else if (autoOutputSubs != null) { autoOutputSubs.unsubscribe(); @@ -158,7 +158,7 @@ protected void autoOutput() { if (getOffsetTimer() % 5 == 0) { steamTank.exportToNearby(Direction.stream() .filter(direction -> direction != getFrontFacing() && direction != Direction.DOWN) - .filter(direction -> GTUtil.isAdjacentFluidHandler(getLevel(), getPos(), direction)) + .filter(direction -> GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getPos(), direction)) .toArray(Direction[]::new)); updateAutoOutputSubscription(); } @@ -198,12 +198,12 @@ protected void updateCurrentTemperature() { if (currentTemperature >= 100) { int fillAmount = (int) (getBaseSteamOutput() * ((float) currentTemperature / getMaxTemperature()) / 2); - boolean hasDrainedWater = !waterTank.drainInternal(FluidType.BUCKET_VOLUME / 1000, FluidAction.EXECUTE) + boolean hasDrainedWater = !waterTank.drainInternal(1, FluidAction.EXECUTE) .isEmpty(); var filledSteam = 0L; if (hasDrainedWater) { filledSteam = steamTank.fillInternal( - GTMaterials.Steam.getFluid(fillAmount * FluidType.BUCKET_VOLUME / 1000), + GTMaterials.Steam.getFluid(fillAmount), FluidAction.EXECUTE); } if (this.hasNoWater && hasDrainedWater) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/FluidTankProxyTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/FluidTankProxyTrait.java index 9d5d7047c3..5c3840e2ce 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/FluidTankProxyTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/FluidTankProxyTrait.java @@ -2,20 +2,19 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.utils.GTUtil; +import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; +import com.gregtechceu.gtceu.utils.GTTransferUtils; import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; import net.minecraft.core.Direction; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidUtil; -import net.minecraftforge.fluids.capability.IFluidHandler; import lombok.Getter; import lombok.Setter; import lombok.experimental.Accessors; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; /** * @author KilaBash @@ -23,15 +22,14 @@ * @implNote FluidTankProxyTrait */ @Accessors(chain = true) -public class FluidTankProxyTrait extends MachineTrait implements IFluidHandler, ICapabilityTrait { +public class FluidTankProxyTrait extends MachineTrait implements IFluidHandlerModifiable, ICapabilityTrait { public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(FluidTankProxyTrait.class); @Getter public final IO capabilityIO; @Setter @Getter - @Nullable - public IFluidHandler proxy; + public IFluidHandlerModifiable proxy; public FluidTankProxyTrait(MetaMachine machine, IO capabilityIO) { super(machine); @@ -58,9 +56,10 @@ public FluidStack getFluidInTank(int tank) { return proxy == null ? FluidStack.EMPTY : proxy.getFluidInTank(tank); } + @Override public void setFluidInTank(int tank, @NotNull FluidStack fluidStack) { if (proxy != null) { - // proxy.setFluidInTank(tank, fluidStack); + proxy.setFluidInTank(tank, fluidStack); } } @@ -137,7 +136,7 @@ public void exportToNearby(Direction... facings) { var level = getMachine().getLevel(); var pos = getMachine().getPos(); for (Direction facing : facings) { - GTUtil.getAdjacentFluidHandler(level, pos, facing).ifPresent( + GTTransferUtils.getAdjacentFluidHandler(level, pos, facing).ifPresent( h -> FluidUtil.tryFluidTransfer(h, this, Integer.MAX_VALUE, true)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java index 16b8f36518..0f27edc77a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java @@ -8,7 +8,7 @@ import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; import com.gregtechceu.gtceu.api.transfer.fluid.CustomFluidTank; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; -import com.gregtechceu.gtceu.utils.GTUtil; +import com.gregtechceu.gtceu.utils.GTTransferUtils; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; @@ -314,7 +314,7 @@ public void exportToNearby(@NotNull Direction... facings) { var level = getMachine().getLevel(); var pos = getMachine().getPos(); for (Direction facing : facings) { - GTUtil.getAdjacentFluidHandler(level, pos, facing) + GTTransferUtils.getAdjacentFluidHandler(level, pos, facing) .ifPresent(h -> FluidUtil.tryFluidTransfer(h, this, Integer.MAX_VALUE, true)); } } @@ -323,7 +323,7 @@ public void importFromNearby(@NotNull Direction... facings) { var level = getMachine().getLevel(); var pos = getMachine().getPos(); for (Direction facing : facings) { - GTUtil.getAdjacentFluidHandler(level, pos, facing) + GTTransferUtils.getAdjacentFluidHandler(level, pos, facing) .ifPresent(h -> FluidUtil.tryFluidTransfer(this, h, Integer.MAX_VALUE, true)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/IOFluidTransferList.java b/src/main/java/com/gregtechceu/gtceu/api/misc/IOFluidHandlerList.java similarity index 82% rename from src/main/java/com/gregtechceu/gtceu/api/misc/IOFluidTransferList.java rename to src/main/java/com/gregtechceu/gtceu/api/misc/IOFluidHandlerList.java index f315509342..ed69683329 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/IOFluidTransferList.java +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/IOFluidHandlerList.java @@ -1,7 +1,7 @@ package com.gregtechceu.gtceu.api.misc; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.misc.lib.FluidTransferList; +import com.gregtechceu.gtceu.api.transfer.fluid.FluidHandlerList; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; import net.minecraftforge.fluids.FluidStack; @@ -18,13 +18,13 @@ * @date 2023/3/14 * @implNote IOFluidTransferList */ -public class IOFluidTransferList extends FluidTransferList implements IFluidHandlerModifiable { +public class IOFluidHandlerList extends FluidHandlerList implements IFluidHandlerModifiable { @Getter private final IO io; - public IOFluidTransferList(List transfers, IO io, Predicate filter) { - super(transfers); + public IOFluidHandlerList(List handlers, IO io, Predicate filter) { + super(handlers); this.io = io; setFilter(filter); } @@ -50,7 +50,7 @@ public int fill(FluidStack resource, FluidAction action) { @Override public void setFluidInTank(int tank, FluidStack stack) { int index = 0; - for (IFluidHandler handler : transfers) { + for (IFluidHandler handler : handlers) { if (handler instanceof IFluidHandlerModifiable modifiable) { if (tank - index < handler.getTanks()) modifiable.setFluidInTank(tank - index, stack); return; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidIngredient.java index 8ed19da6d6..2d998ab95e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidIngredient.java @@ -12,7 +12,6 @@ import net.minecraft.world.level.material.Fluids; import net.minecraftforge.common.crafting.CraftingHelper; import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidType; import com.google.common.collect.Lists; import com.google.gson.*; @@ -64,7 +63,7 @@ public void toNetwork(FriendlyByteBuf buffer) { public JsonElement toJson() { JsonObject jsonObject = new JsonObject(); - jsonObject.addProperty("amount", this.amount * FluidType.BUCKET_VOLUME / 1000); + jsonObject.addProperty("amount", this.amount); if (this.nbt != null) { jsonObject.addProperty("nbt", this.nbt.getAsString()); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/FluidTransferDelegate.java b/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/FluidHandlerDelegate.java similarity index 92% rename from src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/FluidTransferDelegate.java rename to src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/FluidHandlerDelegate.java index 256640a857..eefafa1760 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/FluidTransferDelegate.java +++ b/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/FluidHandlerDelegate.java @@ -11,12 +11,12 @@ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault -public abstract class FluidTransferDelegate implements IFluidHandlerModifiable { +public abstract class FluidHandlerDelegate implements IFluidHandlerModifiable { @Setter public IFluidHandlerModifiable delegate; - public FluidTransferDelegate(IFluidHandlerModifiable delegate) { + public FluidHandlerDelegate(IFluidHandlerModifiable delegate) { this.delegate = delegate; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/lib/FluidTransferList.java b/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/FluidHandlerList.java similarity index 82% rename from src/main/java/com/gregtechceu/gtceu/api/misc/lib/FluidTransferList.java rename to src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/FluidHandlerList.java index 9b46d1ff5e..34e6e9fef7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/lib/FluidTransferList.java +++ b/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/FluidHandlerList.java @@ -1,6 +1,4 @@ -package com.gregtechceu.gtceu.api.misc.lib; - -import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; +package com.gregtechceu.gtceu.api.transfer.fluid; import com.lowdragmc.lowdraglib.LDLib; @@ -17,30 +15,30 @@ import java.util.List; import java.util.function.Predicate; -public class FluidTransferList implements IFluidHandlerModifiable, INBTSerializable { +public class FluidHandlerList implements IFluidHandlerModifiable, INBTSerializable { - public final IFluidHandler[] transfers; + public final IFluidHandler[] handlers; @Setter protected Predicate filter = fluid -> true; - public FluidTransferList(IFluidHandler... transfers) { - this.transfers = transfers; + public FluidHandlerList(IFluidHandler... handlers) { + this.handlers = handlers; } - public FluidTransferList(List transfers) { - this.transfers = transfers.toArray(IFluidHandler[]::new); + public FluidHandlerList(List handlers) { + this.handlers = handlers.toArray(IFluidHandler[]::new); } @Override public int getTanks() { - return Arrays.stream(transfers).mapToInt(IFluidHandler::getTanks).sum(); + return Arrays.stream(handlers).mapToInt(IFluidHandler::getTanks).sum(); } @Override public @NotNull FluidStack getFluidInTank(int tank) { int index = 0; - for (IFluidHandler handler : transfers) { + for (IFluidHandler handler : handlers) { if (tank - index < handler.getTanks()) { return handler.getFluidInTank(tank - index); } @@ -52,7 +50,7 @@ public int getTanks() { @Override public void setFluidInTank(int tank, FluidStack stack) { int index = 0; - for (IFluidHandler handler : transfers) { + for (IFluidHandler handler : handlers) { if (handler instanceof IFluidHandlerModifiable modifiable) { if (tank - index < modifiable.getTanks()) { modifiable.setFluidInTank(tank - index, stack); @@ -66,7 +64,7 @@ public void setFluidInTank(int tank, FluidStack stack) { @Override public int getTankCapacity(int tank) { int index = 0; - for (IFluidHandler handler : transfers) { + for (IFluidHandler handler : handlers) { if (tank - index < handler.getTanks()) { return handler.getTankCapacity(tank - index); } @@ -80,7 +78,7 @@ public boolean isFluidValid(int tank, @NotNull FluidStack stack) { if (!filter.test(stack)) return false; int index = 0; - for (IFluidHandler handler : transfers) { + for (IFluidHandler handler : handlers) { if (tank - index < handler.getTanks()) { return handler.isFluidValid(tank - index, stack); } @@ -93,7 +91,7 @@ public boolean isFluidValid(int tank, @NotNull FluidStack stack) { public int fill(FluidStack resource, FluidAction action) { if (resource.isEmpty() || !filter.test(resource)) return 0; var copied = resource.copy(); - for (IFluidHandler handler : transfers) { + for (IFluidHandler handler : handlers) { var candidate = copied.copy(); copied.shrink(handler.fill(candidate, action)); if (copied.isEmpty()) break; @@ -105,7 +103,7 @@ public int fill(FluidStack resource, FluidAction action) { public @NotNull FluidStack drain(FluidStack resource, FluidAction action) { if (resource.isEmpty() || !filter.test(resource)) return FluidStack.EMPTY; var copied = resource.copy(); - for (IFluidHandler handler : transfers) { + for (IFluidHandler handler : handlers) { var candidate = copied.copy(); copied.shrink(handler.drain(candidate, action).getAmount()); if (copied.isEmpty()) break; @@ -118,7 +116,7 @@ public int fill(FluidStack resource, FluidAction action) { public @NotNull FluidStack drain(int maxDrain, FluidAction action) { if (maxDrain == 0) return FluidStack.EMPTY; FluidStack totalDrained = null; - for (IFluidHandler handler : transfers) { + for (IFluidHandler handler : handlers) { if (totalDrained == null || totalDrained.isEmpty()) { totalDrained = handler.drain(maxDrain, action); if (totalDrained.isEmpty()) totalDrained = null; @@ -139,7 +137,7 @@ public int fill(FluidStack resource, FluidAction action) { public CompoundTag serializeNBT() { var tag = new CompoundTag(); var list = new ListTag(); - for (IFluidHandler handler : transfers) { + for (IFluidHandler handler : handlers) { if (handler instanceof INBTSerializable serializable) { list.add(serializable.serializeNBT()); } else { @@ -155,7 +153,7 @@ public CompoundTag serializeNBT() { public void deserializeNBT(CompoundTag nbt) { var list = nbt.getList("tanks", nbt.getByte("type")); for (int i = 0; i < list.size(); i++) { - if (transfers[i] instanceof INBTSerializable serializable) { + if (handlers[i] instanceof INBTSerializable serializable) { serializable.deserializeNBT(list.get(i)); } else { LDLib.LOGGER.warn("[FluidHandlerList] internal tank doesn't support serialization"); @@ -165,7 +163,7 @@ public void deserializeNBT(CompoundTag nbt) { @Override public boolean supportsFill(int tank) { - for (IFluidHandler handler : transfers) { + for (IFluidHandler handler : handlers) { if (tank >= handler.getTanks()) { tank -= handler.getTanks(); continue; @@ -181,7 +179,7 @@ public boolean supportsFill(int tank) { @Override public boolean supportsDrain(int tank) { - for (IFluidHandler handler : transfers) { + for (IFluidHandler handler : handlers) { if (tank >= handler.getTanks()) { tank -= handler.getTanks(); continue; diff --git a/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/InfiniteFluidTransferProxy.java b/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/InfiniteFluidHandlerProxy.java similarity index 82% rename from src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/InfiniteFluidTransferProxy.java rename to src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/InfiniteFluidHandlerProxy.java index 2f52a8f9ec..2604ff1841 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/InfiniteFluidTransferProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/InfiniteFluidHandlerProxy.java @@ -9,12 +9,12 @@ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault -public class InfiniteFluidTransferProxy extends FluidTransferDelegate { +public class InfiniteFluidHandlerProxy extends FluidHandlerDelegate { private final boolean infiniteSource; private final boolean infiniteSink; - public InfiniteFluidTransferProxy(IFluidHandlerModifiable delegate, boolean infiniteSource, boolean infiniteSink) { + public InfiniteFluidHandlerProxy(IFluidHandlerModifiable delegate, boolean infiniteSource, boolean infiniteSink) { super(delegate); this.infiniteSource = infiniteSource; diff --git a/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/ModifiableFluidHandlerWrapper.java b/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/ModifiableFluidHandlerWrapper.java index d91b29aea4..a8876dcb9c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/ModifiableFluidHandlerWrapper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/ModifiableFluidHandlerWrapper.java @@ -12,9 +12,13 @@ public class ModifiableFluidHandlerWrapper implements IFluidHandlerModifiable { private IFluidHandler handler; @Override - public void setFluidInTank(int i, FluidStack fluidStack) { - drain(handler.getFluidInTank(i), FluidAction.EXECUTE); - fill(fluidStack, FluidAction.EXECUTE); + public void setFluidInTank(int tank, FluidStack fluidStack) { + var fluid = handler.getFluidInTank(tank); + var canDrain = handler.drain(fluid, FluidAction.SIMULATE); + if (!canDrain.isEmpty()) { + drain(canDrain, FluidAction.EXECUTE); + fill(fluidStack, FluidAction.EXECUTE); + } } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/lib/TagOrCycleFluidTransfer.java b/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/TagOrCycleFluidHandler.java similarity index 91% rename from src/main/java/com/gregtechceu/gtceu/api/misc/lib/TagOrCycleFluidTransfer.java rename to src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/TagOrCycleFluidHandler.java index dc2a4f83d4..37accfe65b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/lib/TagOrCycleFluidTransfer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/TagOrCycleFluidHandler.java @@ -1,6 +1,4 @@ -package com.gregtechceu.gtceu.api.misc.lib; - -import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; +package com.gregtechceu.gtceu.api.transfer.fluid; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.tags.TagKey; @@ -18,14 +16,14 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -public class TagOrCycleFluidTransfer implements IFluidHandlerModifiable { +public class TagOrCycleFluidHandler implements IFluidHandlerModifiable { @Getter private List, Integer>>, List>> stacks; private List> unwrapped = null; - public TagOrCycleFluidTransfer(List, Integer>>, List>> stacks) { + public TagOrCycleFluidHandler(List, Integer>>, List>> stacks) { updateStacks(stacks); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/blockentity/FluidPipeBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/common/blockentity/FluidPipeBlockEntity.java index d50602230c..fdd9170080 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/blockentity/FluidPipeBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/common/blockentity/FluidPipeBlockEntity.java @@ -21,6 +21,7 @@ import com.gregtechceu.gtceu.common.pipelike.fluidpipe.PipeTankList; import com.gregtechceu.gtceu.utils.EntityDamageUtil; import com.gregtechceu.gtceu.utils.FormattingUtil; +import com.gregtechceu.gtceu.utils.GTTransferUtils; import com.gregtechceu.gtceu.utils.GTUtil; import net.minecraft.ChatFormatting; @@ -105,7 +106,7 @@ public boolean canAttachTo(Direction side) { if (level.getBlockEntity(getBlockPos().relative(side)) instanceof FluidPipeBlockEntity) { return false; } - return GTUtil.isAdjacentFluidHandler(level, getBlockPos(), side); + return GTTransferUtils.hasAdjacentFluidHandler(level, getBlockPos(), side); } return false; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/FluidRegulatorCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/FluidRegulatorCover.java index 7da5d97d24..744d952f01 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/FluidRegulatorCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/FluidRegulatorCover.java @@ -74,7 +74,7 @@ private int transferExact(IFluidHandler source, IFluidHandler destination, int p break; FluidStack sourceFluid = source.getFluidInTank(slot).copy(); - int supplyAmount = getFilteredFluidAmount(sourceFluid) * MILLIBUCKET_SIZE; + int supplyAmount = getFilteredFluidAmount(sourceFluid); // If the remaining transferrable amount in this operation is not enough to transfer the full stack size, // the remaining amount for this operation will be buffered and added to the next operation's maximum. @@ -123,7 +123,7 @@ private int keepExact(IFluidHandlerModifiable source, IFluidHandlerModifiable de if (fluidLeftToTransfer <= 0) break; - int amountToKeep = getFilteredFluidAmount(fluidStack) * MILLIBUCKET_SIZE; + int amountToKeep = getFilteredFluidAmount(fluidStack); int amountInDest = destinationAmounts.getOrDefault(fluidStack, 0); if (amountInDest >= amountToKeep) continue; @@ -190,8 +190,7 @@ private int getFilteredFluidAmount(FluidStack fluidStack) { return globalTransferSizeMillibuckets; FluidFilter filter = filterHandler.getFilter(); - return (filter.supportsAmounts() ? filter.testFluidAmount(fluidStack) : globalTransferSizeMillibuckets) * - MILLIBUCKET_SIZE; + return (filter.supportsAmounts() ? filter.testFluidAmount(fluidStack) : globalTransferSizeMillibuckets); } /////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java index 86f889a6e9..1d887232e0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java @@ -14,13 +14,13 @@ import com.gregtechceu.gtceu.api.gui.widget.IntInputWidget; import com.gregtechceu.gtceu.api.gui.widget.NumberInputWidget; import com.gregtechceu.gtceu.api.machine.ConditionalSubscriptionHandler; -import com.gregtechceu.gtceu.api.transfer.fluid.FluidTransferDelegate; +import com.gregtechceu.gtceu.api.transfer.fluid.FluidHandlerDelegate; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; import com.gregtechceu.gtceu.api.transfer.fluid.ModifiableFluidHandlerWrapper; import com.gregtechceu.gtceu.common.cover.data.BucketMode; import com.gregtechceu.gtceu.common.cover.data.ManualIOMode; import com.gregtechceu.gtceu.utils.FluidStackHashStrategy; -import com.gregtechceu.gtceu.utils.GTUtil; +import com.gregtechceu.gtceu.utils.GTTransferUtils; import com.lowdragmc.lowdraglib.gui.widget.LabelWidget; import com.lowdragmc.lowdraglib.gui.widget.Widget; @@ -38,7 +38,6 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidType; import net.minecraftforge.fluids.capability.IFluidHandler; import it.unimi.dsi.fastutil.objects.Object2IntOpenCustomHashMap; @@ -64,8 +63,6 @@ public class PumpCover extends CoverBehavior implements IUICover, IControllable public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(PumpCover.class, CoverBehavior.MANAGED_FIELD_HOLDER); - protected static final int MILLIBUCKET_SIZE = FluidType.BUCKET_VOLUME / 1000; - public final int tier; public final int maxMilliBucketsPerTick; @@ -128,7 +125,8 @@ protected boolean isSubscriptionActive() { } protected @Nullable IFluidHandler getAdjacentFluidTransfer() { - return GTUtil.getAdjacentFluidHandler(coverHolder.getLevel(), coverHolder.getPos(), attachedSide).resolve() + return GTTransferUtils.getAdjacentFluidHandler(coverHolder.getLevel(), coverHolder.getPos(), attachedSide) + .resolve() .orElse(null); } @@ -223,8 +221,8 @@ protected void update() { return; if (milliBucketsLeftToTransferLastSecond > 0) { - int platformTransferredFluid = doTransferFluids(milliBucketsLeftToTransferLastSecond * MILLIBUCKET_SIZE); - this.milliBucketsLeftToTransferLastSecond -= platformTransferredFluid / MILLIBUCKET_SIZE; + int platformTransferredFluid = doTransferFluids(milliBucketsLeftToTransferLastSecond); + this.milliBucketsLeftToTransferLastSecond -= platformTransferredFluid; } if (timer % 20 == 0) { @@ -257,7 +255,7 @@ protected int doTransferFluidsInternal(IFluidHandlerModifiable source, IFluidHan protected int transferAny(IFluidHandlerModifiable source, IFluidHandlerModifiable destination, int platformTransferLimit) { - return GTUtil.transferFiltered(source, destination, platformTransferLimit, filterHandler.getFilter()); + return GTTransferUtils.transferFiltered(source, destination, platformTransferLimit, filterHandler.getFilter()); } protected enum TransferDirection { @@ -357,7 +355,7 @@ protected void configureFilter() { // *** CAPABILITY OVERRIDE ***// ///////////////////////////////////// - private CoverableFluidTransferWrapper fluidTransferWrapper; + private CoverableFluidHandlerWrapper fluidTransferWrapper; @Nullable @Override @@ -366,14 +364,14 @@ public IFluidHandlerModifiable getFluidTransferCap(@Nullable IFluidHandlerModifi return null; } if (fluidTransferWrapper == null || fluidTransferWrapper.delegate != defaultValue) { - this.fluidTransferWrapper = new CoverableFluidTransferWrapper(defaultValue); + this.fluidTransferWrapper = new CoverableFluidHandlerWrapper(defaultValue); } return fluidTransferWrapper; } - private class CoverableFluidTransferWrapper extends FluidTransferDelegate { + private class CoverableFluidHandlerWrapper extends FluidHandlerDelegate { - public CoverableFluidTransferWrapper(IFluidHandlerModifiable delegate) { + public CoverableFluidHandlerWrapper(IFluidHandlerModifiable delegate) { super(delegate); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/AdvancedFluidVoidingCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/AdvancedFluidVoidingCover.java index ecfeb526ad..029dbdd03e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/AdvancedFluidVoidingCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/AdvancedFluidVoidingCover.java @@ -75,7 +75,7 @@ private void voidOverflow(IFluidHandlerModifiable fluidTransfer) { for (FluidStack fluidStack : fluidAmounts.keySet()) { int presentAmount = fluidAmounts.get(fluidStack); - int targetAmount = getFilteredFluidAmount(fluidStack) * MILLIBUCKET_SIZE; + int targetAmount = getFilteredFluidAmount(fluidStack); if (targetAmount <= 0L || targetAmount > presentAmount) continue; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java index b81adaba73..b45518ef15 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java @@ -9,7 +9,7 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.gui.GuiTextures; -import com.gregtechceu.gtceu.api.misc.lib.TankWidget; +import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.recipe.*; import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java index 055a26058e..fb41594147 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java @@ -1,10 +1,9 @@ package com.gregtechceu.gtceu.common.data; import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.syncdata.FluidStackPayload; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.syncdata.GTRecipePayload; -import com.gregtechceu.gtceu.syncdata.FluidStackLoad; -import com.gregtechceu.gtceu.syncdata.GTRecipeAccessor; import com.gregtechceu.gtceu.syncdata.GTRecipeTypeAccessor; import com.gregtechceu.gtceu.syncdata.MaterialPayload; @@ -29,6 +28,6 @@ public static void init() { registerSimple(MaterialPayload.class, MaterialPayload::new, Material.class, 1); registerSimple(GTRecipePayload.class, GTRecipePayload::new, GTRecipe.class, 100); - registerSimple(FluidStackLoad.class, FluidStackLoad::new, FluidStack.class, -1); + registerSimple(FluidStackPayload.class, FluidStackPayload::new, FluidStack.class, -1); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/ItemFluidContainer.java b/src/main/java/com/gregtechceu/gtceu/common/item/ItemFluidContainer.java index 6fadbaf11c..44da6f5fe3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/ItemFluidContainer.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/ItemFluidContainer.java @@ -2,11 +2,10 @@ import com.gregtechceu.gtceu.api.item.component.IRecipeRemainder; -import com.lowdragmc.lowdraglib.misc.ItemStackTransfer; -import com.lowdragmc.lowdraglib.side.fluid.FluidTransferHelper; - import net.minecraft.world.item.ItemStack; import net.minecraftforge.fluids.FluidType; +import net.minecraftforge.fluids.FluidUtil; +import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; /** * @author KilaBash @@ -17,16 +16,13 @@ public class ItemFluidContainer implements IRecipeRemainder { @Override public ItemStack getRecipeRemained(ItemStack itemStack) { - var storage = new ItemStackTransfer(itemStack); - var transfer = FluidTransferHelper.getFluidTransfer(storage, 0); - if (transfer != null) { - var drained = transfer.drain(FluidType.BUCKET_VOLUME, true); + return FluidUtil.getFluidHandler(itemStack).map(handler -> { + var drained = handler.drain(FluidType.BUCKET_VOLUME, FluidAction.SIMULATE); if (drained.getAmount() != FluidType.BUCKET_VOLUME) return ItemStack.EMPTY; - transfer.drain(FluidType.BUCKET_VOLUME, false); - var copied = storage.getStackInSlot(0); - copied.setTag(null); - return copied; - } - return storage.getStackInSlot(0); + handler.drain(FluidType.BUCKET_VOLUME, FluidAction.EXECUTE); + var copy = handler.getContainer(); + copy.setTag(null); + return copy; + }).orElse(itemStack); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java index 591882f1ff..11a3ca247c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.UITemplate; +import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.gui.widget.ToggleButtonWidget; import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -12,7 +13,6 @@ import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.feature.IUIMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; -import com.gregtechceu.gtceu.api.misc.lib.TankWidget; import com.gregtechceu.gtceu.common.data.GTBlocks; import com.gregtechceu.gtceu.utils.GTUtil; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java index 43f734257a..aa3633dcbd 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java @@ -15,7 +15,7 @@ import com.gregtechceu.gtceu.api.machine.multiblock.WorkableMultiblockMachine; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.misc.EnergyContainerList; -import com.gregtechceu.gtceu.api.misc.lib.FluidTransferList; +import com.gregtechceu.gtceu.api.transfer.fluid.FluidHandlerList; import com.gregtechceu.gtceu.common.data.GTBlocks; import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.common.item.PortableScannerBehavior; @@ -67,7 +67,7 @@ public class LargeMinerMachine extends WorkableElectricMultiblockMachine @Nullable protected EnergyContainerList energyContainer; @Nullable - protected FluidTransferList inputFluidInventory; + protected FluidHandlerList inputFluidInventory; private final int drillingFluidConsumePerTick; public LargeMinerMachine(IMachineBlockEntity holder, int tier, int speed, int maximumChunkDiameter, int fortune, @@ -145,7 +145,7 @@ private void initializeAbilities() { } } this.energyContainer = new EnergyContainerList(energyContainers); - this.inputFluidInventory = new FluidTransferList(fluidTanks); + this.inputFluidInventory = new FluidHandlerList(fluidTanks); getRecipeLogic().setVoltageTier(GTUtil.getTierByVoltage(this.energyContainer.getInputVoltage())); getRecipeLogic().setOverclockAmount( @@ -177,7 +177,7 @@ public boolean drainInput(boolean simulate) { } // drain fluid - if (inputFluidInventory != null && inputFluidInventory.transfers.length > 0) { + if (inputFluidInventory != null && inputFluidInventory.handlers.length > 0) { FluidStack drillingFluid = DrillingFluid .getFluid(this.drillingFluidConsumePerTick * getRecipeLogic().getOverclockAmount()); FluidStack fluidStack = inputFluidInventory.getFluidInTank(0); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java index 5dfd486534..5130572eac 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java @@ -3,11 +3,11 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.fluids.PropertyFluidFilter; import com.gregtechceu.gtceu.api.gui.GuiTextures; +import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; -import com.gregtechceu.gtceu.api.misc.lib.TankWidget; import com.lowdragmc.lowdraglib.gui.widget.ImageWidget; import com.lowdragmc.lowdraglib.gui.widget.LabelWidget; @@ -24,7 +24,6 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.fluids.FluidType; import lombok.Getter; import org.jetbrains.annotations.NotNull; @@ -87,7 +86,7 @@ public Widget createUIWidget() { } private String getFluidLabel() { - return String.valueOf(tank.getFluidInTank(0).getAmount() / (FluidType.BUCKET_VOLUME / 1000)); + return String.valueOf(tank.getFluidInTank(0).getAmount()); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java index 42df960593..ce93a354b8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java @@ -17,8 +17,8 @@ import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.misc.EnergyContainerList; -import com.gregtechceu.gtceu.api.misc.lib.FluidTransferList; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; +import com.gregtechceu.gtceu.api.transfer.fluid.FluidHandlerList; import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.utils.FormattingUtil; @@ -124,7 +124,7 @@ public void onStructureFormed() { } } this.energyContainer = new EnergyContainerList(energyContainers); - this.coolantHandler = new FluidTransferList(coolantContainers); + this.coolantHandler = new FluidHandlerList(coolantContainers); this.hpcaHandler.onStructureForm(componentHatches); if (getLevel() instanceof ServerLevel serverLevel) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java index 99b7383aa5..51cfa3d317 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java @@ -8,7 +8,7 @@ import com.gregtechceu.gtceu.api.machine.trait.FluidTankProxyTrait; import com.gregtechceu.gtceu.api.machine.trait.ItemHandlerProxyTrait; import com.gregtechceu.gtceu.common.machine.multiblock.primitive.CokeOvenMachine; -import com.gregtechceu.gtceu.utils.GTUtil; +import com.gregtechceu.gtceu.utils.GTTransferUtils; import com.lowdragmc.lowdraglib.side.item.ItemTransferHelper; import com.lowdragmc.lowdraglib.syncdata.ISubscription; @@ -133,7 +133,7 @@ public void onRotated(Direction oldFacing, Direction newFacing) { protected void updateAutoIOSubscription() { if ((!outputInventory.isEmpty() && ItemTransferHelper.getItemTransfer(getLevel(), getPos().relative(getFrontFacing()), getFrontFacing().getOpposite()) != null) || - (!tank.isEmpty() && GTUtil.isAdjacentFluidHandler(getLevel(), getPos(), getFrontFacing()))) { + (!tank.isEmpty() && GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getPos(), getFrontFacing()))) { autoIOSubs = subscribeServerTick(autoIOSubs, this::autoIO); } else if (autoIOSubs != null) { autoIOSubs.unsubscribe(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java index 1ab94c63bb..6065f111d5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java @@ -2,10 +2,10 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; +import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; -import com.gregtechceu.gtceu.api.misc.lib.TankWidget; -import com.gregtechceu.gtceu.utils.GTUtil; +import com.gregtechceu.gtceu.utils.GTTransferUtils; import com.lowdragmc.lowdraglib.gui.widget.SlotWidget; import com.lowdragmc.lowdraglib.gui.widget.Widget; @@ -88,7 +88,7 @@ protected void updateInventorySubscription() { if (level != null) { this.hasItemTransfer = ItemTransferHelper.getItemTransfer( level, getPos().relative(getFrontFacing()), getFrontFacing().getOpposite()) != null; - this.hasFluidTransfer = GTUtil.isAdjacentFluidHandler(level, getPos(), getFrontFacing()); + this.hasFluidTransfer = GTTransferUtils.hasAdjacentFluidHandler(level, getPos(), getFrontFacing()); } else { this.hasItemTransfer = false; this.hasFluidTransfer = false; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java index e6904fdc85..48e9d5a412 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java @@ -3,6 +3,8 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.fancy.ConfiguratorPanel; +import com.gregtechceu.gtceu.api.gui.widget.PhantomFluidWidget; +import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.gui.widget.ToggleButtonWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TickableSubscription; @@ -11,11 +13,9 @@ import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredIOPartMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; -import com.gregtechceu.gtceu.api.misc.lib.PhantomFluidWidget; -import com.gregtechceu.gtceu.api.misc.lib.TankWidget; import com.gregtechceu.gtceu.common.item.IntCircuitBehaviour; import com.gregtechceu.gtceu.config.ConfigHolder; -import com.gregtechceu.gtceu.utils.GTUtil; +import com.gregtechceu.gtceu.utils.GTTransferUtils; import com.lowdragmc.lowdraglib.gui.widget.ImageWidget; import com.lowdragmc.lowdraglib.gui.widget.LabelWidget; @@ -145,7 +145,7 @@ public void onRotated(Direction oldFacing, Direction newFacing) { protected void updateTankSubscription() { if (isWorkingEnabled() && ((io == IO.OUT && !tank.isEmpty()) || io == IO.IN) && - GTUtil.isAdjacentFluidHandler(getLevel(), getPos(), getFrontFacing())) { + GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getPos(), getFrontFacing())) { autoIOSubs = subscribeServerTick(autoIOSubs, this::autoIO); } else if (autoIOSubs != null) { autoIOSubs.unsubscribe(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java index 0fd1285345..aca80322d3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java @@ -3,10 +3,10 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.UITemplate; +import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.gui.widget.ToggleButtonWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; -import com.gregtechceu.gtceu.api.misc.lib.TankWidget; import com.gregtechceu.gtceu.common.data.GTMaterials; import com.lowdragmc.lowdraglib.gui.modular.ModularUI; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java index cc416dd4ec..fb1718e85f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java @@ -3,9 +3,9 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.UITemplate; +import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; -import com.gregtechceu.gtceu.api.misc.lib.TankWidget; import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.config.ConfigHolder; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java index 468eaad41d..e81366ea0d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java @@ -7,7 +7,7 @@ import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; import com.gregtechceu.gtceu.api.machine.trait.FluidTankProxyTrait; import com.gregtechceu.gtceu.common.machine.multiblock.electric.MultiblockTankMachine; -import com.gregtechceu.gtceu.utils.GTUtil; +import com.gregtechceu.gtceu.utils.GTTransferUtils; import com.lowdragmc.lowdraglib.syncdata.ISubscription; @@ -91,7 +91,7 @@ public void onNeighborChanged(Block block, BlockPos fromPos, boolean isMoving) { @Nullable private IFluidHandler getTargetTank() { - return GTUtil.getAdjacentFluidHandler(getLevel(), getPos(), getFrontFacing()).resolve().orElse(null); + return GTTransferUtils.getAdjacentFluidHandler(getLevel(), getPos(), getFrontFacing()).resolve().orElse(null); } private void autoIO() { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java index 7dab6c97da..bb26ea318e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java @@ -3,9 +3,9 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.UITemplate; +import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IUIMachine; -import com.gregtechceu.gtceu.api.misc.lib.TankWidget; import com.gregtechceu.gtceu.config.ConfigHolder; import com.lowdragmc.lowdraglib.gui.modular.ModularUI; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java index 48f6840a2e..2f94299bc1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java @@ -3,10 +3,10 @@ import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; +import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.steam.SteamBoilerMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; -import com.gregtechceu.gtceu.api.misc.lib.TankWidget; import com.gregtechceu.gtceu.config.ConfigHolder; import com.lowdragmc.lowdraglib.gui.modular.ModularUI; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java index 1ade70c86d..b7cc692f94 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamMinerMachine.java @@ -74,7 +74,7 @@ public class SteamMinerMachine extends SteamWorkableMachine implements IMiner, I public SteamMinerMachine(IMachineBlockEntity holder, int speed, int maximumRadius, int fortune) { super(holder, false, fortune, speed, maximumRadius); this.inventorySize = 4; - this.energyPerTick = (int) (16 * FluidType.BUCKET_VOLUME / 1000); + this.energyPerTick = 16; this.importItems = createImportItemHandler(); this.exportItems = createExportItemHandler(); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java index 0b1c6ca18c..3786607680 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; +import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; @@ -12,8 +13,7 @@ import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; -import com.gregtechceu.gtceu.api.misc.lib.TankWidget; -import com.gregtechceu.gtceu.utils.GTUtil; +import com.gregtechceu.gtceu.utils.GTTransferUtils; import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; import com.lowdragmc.lowdraglib.gui.widget.SlotWidget; @@ -191,7 +191,7 @@ protected void updateAutoOutputSubscription() { ItemTransferHelper.getItemTransfer(getLevel(), getPos().relative(outputFacingItems), outputFacingItems.getOpposite()) != null || (isAutoOutputFluids() && !tank.isEmpty()) && outputFacingFluids != null && - GTUtil.isAdjacentFluidHandler(getLevel(), getPos(), outputFacingFluids)) { + GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getPos(), outputFacingFluids)) { autoOutputSubs = subscribeServerTick(autoOutputSubs, this::autoOutput); } else if (autoOutputSubs != null) { autoOutputSubs.unsubscribe(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java index 439afbdd73..d25b412a16 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeTankMachine.java @@ -3,10 +3,10 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; +import com.gregtechceu.gtceu.api.gui.widget.PhantomFluidWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; -import com.gregtechceu.gtceu.api.misc.lib.PhantomFluidWidget; import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup; import com.lowdragmc.lowdraglib.gui.texture.ResourceBorderTexture; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java index 708c737327..cdb4a9b4f0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java @@ -12,7 +12,7 @@ import com.gregtechceu.gtceu.api.machine.feature.IDropSaveMachine; import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; -import com.gregtechceu.gtceu.utils.GTUtil; +import com.gregtechceu.gtceu.utils.GTTransferUtils; import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; import com.lowdragmc.lowdraglib.syncdata.ISubscription; @@ -178,7 +178,7 @@ public void onNeighborChanged(Block block, BlockPos fromPos, boolean isMoving) { protected void updateAutoOutputSubscription() { var outputFacing = getOutputFacingFluids(); if ((isAutoOutputFluids() && !cache.isEmpty()) && outputFacing != null && - GTUtil.isAdjacentFluidHandler(getLevel(), getPos(), outputFacing)) { + GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getPos(), outputFacing)) { autoOutputSubs = subscribeServerTick(autoOutputSubs, this::checkAutoOutput); } else if (autoOutputSubs != null) { autoOutputSubs.unsubscribe(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java index f825e57e26..ae31c03d89 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java @@ -3,6 +3,8 @@ import com.gregtechceu.gtceu.api.capability.IControllable; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; +import com.gregtechceu.gtceu.api.gui.widget.PhantomFluidWidget; +import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.gui.widget.ToggleButtonWidget; import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -14,9 +16,7 @@ import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; -import com.gregtechceu.gtceu.api.misc.lib.PhantomFluidWidget; -import com.gregtechceu.gtceu.api.misc.lib.TankWidget; -import com.gregtechceu.gtceu.utils.GTUtil; +import com.gregtechceu.gtceu.utils.GTTransferUtils; import com.lowdragmc.lowdraglib.gui.editor.ColorPattern; import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; @@ -44,7 +44,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidType; import net.minecraftforge.fluids.FluidUtil; import com.mojang.blaze3d.MethodsReturnNonnullByDefault; @@ -200,7 +199,7 @@ public void onNeighborChanged(Block block, BlockPos fromPos, boolean isMoving) { protected void updateAutoOutputSubscription() { var outputFacing = getOutputFacingFluids(); if ((isAutoOutputFluids() && !cache.isEmpty()) && outputFacing != null && - GTUtil.isAdjacentFluidHandler(getLevel(), getPos(), outputFacing)) { + GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getPos(), outputFacing)) { autoOutputSubs = subscribeServerTick(autoOutputSubs, this::checkAutoOutput); } else if (autoOutputSubs != null) { autoOutputSubs.unsubscribe(); @@ -300,7 +299,7 @@ public Widget createUIWidget() { group.addWidget(new ImageWidget(4, 4, 82, 55, GuiTextures.DISPLAY)) .addWidget(new LabelWidget(8, 8, "gtceu.gui.fluid_amount")) .addWidget(new LabelWidget(8, 18, - () -> String.valueOf(cache.getFluidInTank(0).getAmount() / (FluidType.BUCKET_VOLUME / 1000))) + () -> String.valueOf(cache.getFluidInTank(0).getAmount())) .setTextColor(-1).setDropShadow(true)) .addWidget(new TankWidget(cache.getStorages()[0], 68, 23, true, true) .setBackground(GuiTextures.FLUID_SLOT)) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/FluidDrillLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/FluidDrillLogic.java index cec85a02a8..488fe27dcb 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/FluidDrillLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/FluidDrillLogic.java @@ -14,7 +14,6 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.material.Fluid; import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidType; import lombok.Getter; import org.jetbrains.annotations.Nullable; @@ -106,7 +105,7 @@ private int getFluidToProduce(FluidVeinWorldEntry entry) { if (isOverclocked()) { produced = produced * 3 / 2; } - return produced * FluidType.BUCKET_VOLUME / 1000; + return produced; } return 0; } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/GTOreByProductWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/GTOreByProductWidget.java index 54f6c6f11b..9def851969 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/GTOreByProductWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/GTOreByProductWidget.java @@ -2,10 +2,10 @@ import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.gui.GuiTextures; -import com.gregtechceu.gtceu.api.misc.lib.TagOrCycleFluidTransfer; -import com.gregtechceu.gtceu.api.misc.lib.TankWidget; +import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.transfer.fluid.CustomFluidTank; +import com.gregtechceu.gtceu.api.transfer.fluid.TagOrCycleFluidHandler; import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; import com.lowdragmc.lowdraglib.gui.widget.ImageWidget; @@ -160,7 +160,7 @@ public void setRecipe(GTOreByProduct recipeWrapper) { } List, Integer>>, List>> fluidInputs = recipeWrapper.fluidInputs; - TagOrCycleFluidTransfer fluidInputsHandler = new TagOrCycleFluidTransfer(fluidInputs); + TagOrCycleFluidHandler fluidInputsHandler = new TagOrCycleFluidHandler(fluidInputs); WidgetGroup fluidStackGroup = new WidgetGroup(); for (int i = 0; i < FLUID_LOCATIONS.size(); i += 2) { int slotIndex = i / 2; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/GTOreVeinWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/GTOreVeinWidget.java index 7e780055bd..a2ba9751ad 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/GTOreVeinWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/GTOreVeinWidget.java @@ -6,7 +6,7 @@ import com.gregtechceu.gtceu.api.data.worldgen.GTOreDefinition; import com.gregtechceu.gtceu.api.data.worldgen.bedrockfluid.BedrockFluidDefinition; import com.gregtechceu.gtceu.api.data.worldgen.bedrockore.BedrockOreDefinition; -import com.gregtechceu.gtceu.api.misc.lib.TankWidget; +import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.transfer.fluid.CustomFluidTank; import com.gregtechceu.gtceu.client.ClientProxy; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEFluidDisplayWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEFluidDisplayWidget.java index d8b67c460e..57dea56768 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEFluidDisplayWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEFluidDisplayWidget.java @@ -15,7 +15,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.world.item.TooltipFlag; import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidType; import appeng.api.stacks.AEFluidKey; import appeng.api.stacks.GenericStack; @@ -75,10 +74,10 @@ public void drawInForeground(@NotNull GuiGraphics graphics, int mouseX, int mous new FluidStack(key.getFluid(), (int) fluid.amount(), key.getTag()) : FluidStack.EMPTY; List tooltips = new ArrayList<>(); tooltips.add(fluidStack.getDisplayName()); - tooltips.add(Component.literal(String.format("%,d ", fluid.amount())).append("mB")); + tooltips.add(Component.literal(String.format("%,d mB", fluid.amount()))); if (!Platform.isForge()) { tooltips.add(Component.literal( - "§6mB:§r %d mB".formatted(fluidStack.getAmount() * 1000 / FluidType.BUCKET_VOLUME))); + "§6mB:§r %d mB".formatted(fluidStack.getAmount()))); } TooltipsHandler.appendFluidTooltips(fluidStack.getFluid(), fluidStack.getAmount(), tooltips::add, TooltipFlag.NORMAL); diff --git a/src/main/java/com/gregtechceu/gtceu/syncdata/FluidStackLoad.java b/src/main/java/com/gregtechceu/gtceu/syncdata/FluidStackPayload.java similarity index 91% rename from src/main/java/com/gregtechceu/gtceu/syncdata/FluidStackLoad.java rename to src/main/java/com/gregtechceu/gtceu/syncdata/FluidStackPayload.java index 7540b3a0e3..062fa409f1 100644 --- a/src/main/java/com/gregtechceu/gtceu/syncdata/FluidStackLoad.java +++ b/src/main/java/com/gregtechceu/gtceu/syncdata/FluidStackPayload.java @@ -9,7 +9,7 @@ import org.jetbrains.annotations.Nullable; -public class FluidStackLoad extends ObjectTypedPayload { +public class FluidStackPayload extends ObjectTypedPayload { @Override public void writePayload(FriendlyByteBuf buf) { diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTTransferUtils.java b/src/main/java/com/gregtechceu/gtceu/utils/GTTransferUtils.java index 1826660aca..274fccc70a 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTTransferUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTTransferUtils.java @@ -2,14 +2,19 @@ import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; -import com.gregtechceu.gtceu.api.misc.lib.FluidTransferList; +import com.gregtechceu.gtceu.api.transfer.fluid.FluidHandlerList; import com.lowdragmc.lowdraglib.misc.ItemHandlerHelper; import com.lowdragmc.lowdraglib.misc.ItemTransferList; import com.lowdragmc.lowdraglib.side.item.IItemTransfer; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidUtil; import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; @@ -21,8 +26,27 @@ import java.util.List; import java.util.function.Predicate; +import javax.annotation.Nonnull; + public class GTTransferUtils { + /** + * Gets the FluidHandler from the adjacent block on the side connected to the caller + * + * @param level Level + * @param pos BlockPos of the machine which is calling + * @param facing Direction to get the FluidHandler from + * @return LazyOpt of the IFluidHandler described above + */ + public static LazyOptional getAdjacentFluidHandler(Level level, BlockPos pos, Direction facing) { + return FluidUtil.getFluidHandler(level, pos.relative(facing), facing.getOpposite()); + } + + // Same as above, but returns the presence + public static boolean hasAdjacentFluidHandler(Level level, BlockPos pos, Direction facing) { + return getAdjacentFluidHandler(level, pos, facing).isPresent(); + } + public static int transferFluids(@NotNull IFluidHandler sourceHandler, @NotNull IFluidHandler destHandler) { return transferFluids(sourceHandler, destHandler, Integer.MAX_VALUE, fluidStack -> true); } @@ -84,6 +108,38 @@ public static boolean transferExactFluidStack(@NotNull IFluidHandler sourceHandl return false; } + // TODO: Clean this up to use FluidUtil and move it back to caller + public static int transferFiltered(@Nonnull IFluidHandler sourceHandler, @Nonnull IFluidHandler destHandler, + int transferLimit, @Nonnull Predicate fluidFilter) { + int fluidLeftToTransfer = transferLimit; + for (int i = 0; i < sourceHandler.getTanks(); i++) { + FluidStack currentFluid = sourceHandler.getFluidInTank(i).copy(); + if (currentFluid.isEmpty() || !fluidFilter.test(currentFluid)) { + continue; + } + + currentFluid.setAmount(fluidLeftToTransfer); + var drained = sourceHandler.drain(currentFluid, FluidAction.SIMULATE); + if (drained.isEmpty()) { + continue; + } + + var canInsertAmount = destHandler.fill(drained.copy(), FluidAction.SIMULATE); + if (canInsertAmount > 0) { + drained.setAmount(canInsertAmount); + drained = sourceHandler.drain(drained, FluidAction.EXECUTE); + if (!drained.isEmpty()) { + destHandler.fill(drained, FluidAction.EXECUTE); + fluidLeftToTransfer -= drained.getAmount(); + if (fluidLeftToTransfer == 0) { + break; + } + } + } + } + return transferLimit - fluidLeftToTransfer; + } + public static void moveInventoryItems(IItemTransfer sourceInventory, IItemTransfer targetInventory) { for (int srcIndex = 0; srcIndex < sourceInventory.getSlots(); srcIndex++) { ItemStack sourceStack = sourceInventory.extractItem(srcIndex, Integer.MAX_VALUE, true); @@ -150,7 +206,7 @@ public static boolean addItemsToItemHandler(final IItemTransfer handler, * @param fluidStacks the items to insert into {@code fluidHandler}. * @return {@code true} if the insertion succeeded, {@code false} otherwise. */ - public static boolean addFluidsToFluidHandler(FluidTransferList fluidHandler, + public static boolean addFluidsToFluidHandler(FluidHandlerList fluidHandler, boolean simulate, List fluidStacks) { if (simulate) { @@ -172,9 +228,9 @@ public static boolean addFluidsToFluidHandler(FluidTransferList fluidHandler, public static int fillFluidAccountNotifiableList(IFluidHandler handler, FluidStack stack, FluidAction action) { if (stack.isEmpty()) return 0; - if (handler instanceof FluidTransferList handlerList) { + if (handler instanceof FluidHandlerList handlerList) { var copied = stack.copy(); - for (var transfer : handlerList.transfers) { + for (var transfer : handlerList.handlers) { var candidate = copied.copy(); if (transfer instanceof NotifiableFluidTank notifiable) { copied.shrink(notifiable.fillInternal(candidate, action)); @@ -191,9 +247,9 @@ public static int fillFluidAccountNotifiableList(IFluidHandler handler, FluidSta public static FluidStack drainFluidAccountNotifiableList(IFluidHandler handler, FluidStack stack, FluidAction action) { if (stack.isEmpty()) return FluidStack.EMPTY; - if (handler instanceof FluidTransferList handlerList) { + if (handler instanceof FluidHandlerList handlerList) { var copied = stack.copy(); - for (var transfer : handlerList.transfers) { + for (var transfer : handlerList.handlers) { var candidate = copied.copy(); if (transfer instanceof NotifiableFluidTank notifiable) { copied.shrink(notifiable.drainInternal(candidate, action).getAmount()); diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java index 4d624ab0de..dcd2db4077 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java @@ -37,7 +37,6 @@ import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; import net.minecraftforge.common.ForgeHooks; import net.minecraftforge.common.Tags; -import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidType; import net.minecraftforge.fluids.FluidUtil; @@ -57,9 +56,6 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; -import java.util.function.Predicate; - -import javax.annotation.Nonnull; import static com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey.HAZARD; @@ -430,59 +426,10 @@ public static FluidStack getFluidFromContainer(Object ingredient) { return null; } - /** - * Gets the FluidHandler from the adjacent block on the side connected to the caller - * - * @param level Level - * @param pos BlockPos of the machine which is calling - * @param facing Direction to get the FluidHandler from - * @return LazyOpt of the IFluidHandler described above - */ - public static LazyOptional getAdjacentFluidHandler(Level level, BlockPos pos, Direction facing) { - return FluidUtil.getFluidHandler(level, pos.relative(facing), facing.getOpposite()); - } - - // Same as above, but returns the presence - public static boolean isAdjacentFluidHandler(Level level, BlockPos pos, Direction facing) { - return getAdjacentFluidHandler(level, pos, facing).isPresent(); - } - public static int getFluidColor(FluidStack fluid) { return IClientFluidTypeExtensions.of(fluid.getFluid()).getTintColor(fluid); } - // TODO: Clean this up to use FluidUtil and move it back to caller - public static int transferFiltered(@Nonnull IFluidHandler sourceHandler, @Nonnull IFluidHandler destHandler, - int transferLimit, @Nonnull Predicate fluidFilter) { - int fluidLeftToTransfer = transferLimit; - for (int i = 0; i < sourceHandler.getTanks(); i++) { - FluidStack currentFluid = sourceHandler.getFluidInTank(i).copy(); - if (currentFluid.isEmpty() || !fluidFilter.test(currentFluid)) { - continue; - } - - currentFluid.setAmount(fluidLeftToTransfer); - var drained = sourceHandler.drain(currentFluid, IFluidHandler.FluidAction.SIMULATE); - if (drained.isEmpty()) { - continue; - } - - var canInsertAmount = destHandler.fill(drained.copy(), IFluidHandler.FluidAction.SIMULATE); - if (canInsertAmount > 0) { - drained.setAmount(canInsertAmount); - drained = sourceHandler.drain(drained, IFluidHandler.FluidAction.EXECUTE); - if (!drained.isEmpty()) { - destHandler.fill(drained, IFluidHandler.FluidAction.EXECUTE); - fluidLeftToTransfer -= drained.getAmount(); - if (fluidLeftToTransfer == 0) { - break; - } - } - } - } - return transferLimit - fluidLeftToTransfer; - } - public static boolean canSeeSunClearly(Level world, BlockPos blockPos) { if (!world.canSeeSky(blockPos.above())) { return false; diff --git a/src/main/java/com/gregtechceu/gtceu/utils/OverlayedFluidHandler.java b/src/main/java/com/gregtechceu/gtceu/utils/OverlayedFluidHandler.java index 4db3d80bd1..e590a471a3 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/OverlayedFluidHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/OverlayedFluidHandler.java @@ -1,7 +1,7 @@ package com.gregtechceu.gtceu.utils; -import com.gregtechceu.gtceu.api.misc.lib.FluidTransferList; import com.gregtechceu.gtceu.api.transfer.fluid.CustomFluidTank; +import com.gregtechceu.gtceu.api.transfer.fluid.FluidHandlerList; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.IFluidTank; @@ -19,7 +19,7 @@ public class OverlayedFluidHandler { private final List overlayedTanks; - public OverlayedFluidHandler(@NotNull FluidTransferList tank) { + public OverlayedFluidHandler(@NotNull FluidHandlerList tank) { this.overlayedTanks = new ArrayList<>(); FluidStack[] entries = IntStream.range(0, tank.getTanks()).mapToObj(tank::getFluidInTank) .toArray(FluidStack[]::new);