From c94ee31f1b4b879a47f3ec7bd94cea884f000365 Mon Sep 17 00:00:00 2001 From: TheYoingLad Date: Sun, 31 May 2026 17:39:19 +0200 Subject: [PATCH] added fluid filter --- .../value/sync/FluidSlotSyncHandler.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cleanroommc/modularui/value/sync/FluidSlotSyncHandler.java b/src/main/java/com/cleanroommc/modularui/value/sync/FluidSlotSyncHandler.java index 55d4f2c5f..3fc884208 100644 --- a/src/main/java/com/cleanroommc/modularui/value/sync/FluidSlotSyncHandler.java +++ b/src/main/java/com/cleanroommc/modularui/value/sync/FluidSlotSyncHandler.java @@ -16,6 +16,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.function.Predicate; + public class FluidSlotSyncHandler extends ValueSyncHandler { public static boolean isFluidEmpty(@Nullable FluidStack fluidStack) { @@ -37,6 +39,7 @@ public static FluidStack copyFluid(@Nullable FluidStack fluidStack) { private boolean canFillSlot = true, canDrainSlot = true, controlsAmount = true, phantom = false; @Nullable private FluidStack lastStoredPhantomFluid; + private Predicate filter = fluidStack -> true; public FluidSlotSyncHandler(IFluidTank fluidTank) { this.fluidTank = fluidTank; @@ -198,6 +201,7 @@ protected void tryClickPhantom(MouseData mouseData, ItemStack cursorStack) { ItemStack heldItemSizedOne = cursorStack.copy(); heldItemSizedOne.stackSize = 1; FluidStack heldFluid = FluidInteractions.getFluidForItem(heldItemSizedOne); + if (!filter.test(heldFluid)) return; if ((controlsAmount || currentFluid == null) && heldFluid != null) { fillPhantom(heldFluid); } else { @@ -345,7 +349,7 @@ private int batchDrainFluidToContainers(ItemStack heldItem, @Nullable FluidStack protected void fillFluid(@NotNull FluidStack heldFluid, boolean processFullStack) { FluidStack currentFluid = fluidTank.getFluid(); - if (currentFluid != null && !currentFluid.isFluidEqual(heldFluid)) { + if (currentFluid != null && !currentFluid.isFluidEqual(heldFluid) || !filter.test(heldFluid)) { return; } @@ -528,6 +532,10 @@ public boolean isPhantom() { return this.phantom; } + public Predicate getFilter() { + return filter; + } + public FluidSlotSyncHandler phantom(boolean phantom) { this.phantom = phantom; return this; @@ -550,4 +558,9 @@ public FluidSlotSyncHandler canFillSlot(boolean canFillSlot) { this.canFillSlot = canFillSlot; return this; } + + public FluidSlotSyncHandler filter(Predicate filter) { + this.filter = filter; + return this; + } }