Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import com.gregtechceu.gtceu.client.util.ModelUtils;
import com.gregtechceu.gtceu.common.cover.FluidFilterCover;
import com.gregtechceu.gtceu.common.cover.ItemFilterCover;
import com.gregtechceu.gtceu.common.cover.data.ManualIOMode;
import com.gregtechceu.gtceu.common.item.tool.behavior.ToolModeSwitchBehavior;
import com.gregtechceu.gtceu.common.machine.owner.MachineOwner;
import com.gregtechceu.gtceu.common.machine.owner.PlayerOwner;
Expand Down Expand Up @@ -745,7 +746,15 @@ public boolean canConnectRedstone(Direction side) {
public Predicate<ItemStack> getItemCapFilter(@Nullable Direction side, IO io) {
if (side != null) {
var cover = getCoverContainer().getCoverAtSide(side);
if (cover instanceof ItemFilterCover filterCover && filterCover.getFilterMode().filters(io)) {
if (cover instanceof ItemFilterCover filterCover) {
if (!filterCover.getFilterMode().filters(io)) {
if (filterCover.getAllowFlow() == ManualIOMode.DISABLED) {
return item -> false;
}
if (filterCover.getAllowFlow() == ManualIOMode.UNFILTERED) {
return item -> true;
}
}
return filterCover.getItemFilter();
}
}
Expand All @@ -755,7 +764,15 @@ public Predicate<ItemStack> getItemCapFilter(@Nullable Direction side, IO io) {
public Predicate<FluidStack> getFluidCapFilter(@Nullable Direction side, IO io) {
if (side != null) {
var cover = getCoverContainer().getCoverAtSide(side);
if (cover instanceof FluidFilterCover filterCover && filterCover.getFilterMode().filters(io)) {
if (cover instanceof FluidFilterCover filterCover) {
if (!filterCover.getFilterMode().filters(io)) {
if (filterCover.getAllowFlow() == ManualIOMode.DISABLED) {
return fluid -> false;
}
if (filterCover.getAllowFlow() == ManualIOMode.UNFILTERED) {
return fluid -> true;
}
}
return filterCover.getFluidFilter();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -512,10 +512,15 @@ public CoverableItemHandlerWrapper(IItemHandlerModifiable delegate) {
@NotNull
@Override
public ItemStack insertItem(int slot, @NotNull ItemStack stack, boolean simulate) {
if (io == IO.OUT && manualIOMode == ManualIOMode.DISABLED) {
return stack;
if (io == IO.OUT) {
if (manualIOMode == ManualIOMode.DISABLED) {
return stack;
}
if (manualIOMode == ManualIOMode.UNFILTERED) {
return super.insertItem(slot, stack, simulate);
}
}
if (manualIOMode == ManualIOMode.FILTERED && !filterHandler.test(stack)) {
if (!filterHandler.test(stack)) {
return stack;
}
return super.insertItem(slot, stack, simulate);
Expand All @@ -524,17 +529,19 @@ public ItemStack insertItem(int slot, @NotNull ItemStack stack, boolean simulate
@NotNull
@Override
public ItemStack extractItem(int slot, int amount, boolean simulate) {
if (io == IO.IN && manualIOMode == ManualIOMode.DISABLED) {
return ItemStack.EMPTY;
}
if (manualIOMode == ManualIOMode.FILTERED) {
ItemStack result = super.extractItem(slot, amount, true);
if (result.isEmpty() || !filterHandler.test(result)) {
if (io == IO.IN) {
if (manualIOMode == ManualIOMode.DISABLED) {
return ItemStack.EMPTY;
}
return simulate ? result : super.extractItem(slot, amount, false);
if (manualIOMode == ManualIOMode.UNFILTERED) {
return super.extractItem(slot, amount, simulate);
}
}
ItemStack result = super.extractItem(slot, amount, true);
if (result.isEmpty() || !filterHandler.test(result)) {
return ItemStack.EMPTY;
}
return super.extractItem(slot, amount, simulate);
return simulate ? result : super.extractItem(slot, amount, false);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -103,20 +103,34 @@ public FilteredFluidHandlerWrapper(IFluidHandlerModifiable delegate) {

@Override
public int fill(FluidStack resource, FluidAction action) {
if ((filterMode == FilterMode.FILTER_EXTRACT) && allowFlow == ManualIOMode.UNFILTERED)
return super.fill(resource, action);
if (filterMode != FilterMode.FILTER_EXTRACT && getFluidFilter().test(resource))
return super.fill(resource, action);
return 0;
if (filterMode == FilterMode.FILTER_EXTRACT) {
if (allowFlow == ManualIOMode.DISABLED) {
return 0;
}
if (allowFlow == ManualIOMode.UNFILTERED) {
return super.fill(resource, action);
}
}
if (!getFluidFilter().test(resource)) {
return 0;
}
return super.fill(resource, action);
}

@Override
public FluidStack drain(FluidStack resource, FluidAction action) {
if ((filterMode == FilterMode.FILTER_INSERT) && allowFlow == ManualIOMode.UNFILTERED)
return super.drain(resource, action);
if (filterMode != FilterMode.FILTER_INSERT && getFluidFilter().test(resource))
return super.drain(resource, action);
return FluidStack.EMPTY;
if (filterMode == FilterMode.FILTER_INSERT) {
if (allowFlow == ManualIOMode.DISABLED) {
return FluidStack.EMPTY;
}
if (allowFlow == ManualIOMode.UNFILTERED) {
return super.drain(resource, action);
}
}
if (!getFluidFilter().test(resource)) {
return FluidStack.EMPTY;
}
return super.drain(resource, action);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -116,25 +116,35 @@ public FilteredItemHandlerWrapper(IItemHandlerModifiable delegate) {

@Override
public @NotNull ItemStack insertItem(int slot, @NotNull ItemStack stack, boolean simulate) {
if ((filterMode == FilterMode.FILTER_EXTRACT) && allowFlow == ManualIOMode.UNFILTERED)
return super.insertItem(slot, stack, simulate);
if (filterMode != FilterMode.FILTER_EXTRACT && getItemFilter().test(stack)) {
return super.insertItem(slot, stack, simulate);
if (filterMode == FilterMode.FILTER_EXTRACT) {
if (allowFlow == ManualIOMode.DISABLED) {
return stack;
}
if (allowFlow == ManualIOMode.UNFILTERED) {
return super.insertItem(slot, stack, simulate);
}
}
return stack;
if (!getItemFilter().test(stack)) {
return stack;
}
return super.insertItem(slot, stack, simulate);
}

@Override
public @NotNull ItemStack extractItem(int slot, int amount, boolean simulate) {
ItemStack result = super.extractItem(slot, amount, true);
if (result.isEmpty() && (filterMode == FilterMode.FILTER_INSERT) && allowFlow == ManualIOMode.UNFILTERED) {
return super.extractItem(slot, amount, false);
if (filterMode == FilterMode.FILTER_INSERT) {
if (allowFlow == ManualIOMode.DISABLED) {
return ItemStack.EMPTY;
}
if (allowFlow == ManualIOMode.UNFILTERED) {
return super.extractItem(slot, amount, simulate);
}
}

if (filterMode != FilterMode.FILTER_INSERT && getItemFilter().test(result)) {
return super.extractItem(slot, amount, false);
ItemStack result = super.extractItem(slot, amount, true);
if (result.isEmpty() || !getItemFilter().test(result)) {
return ItemStack.EMPTY;
}
return ItemStack.EMPTY;
return simulate ? result : super.extractItem(slot, amount, false);
}
}
}
22 changes: 16 additions & 6 deletions src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java
Original file line number Diff line number Diff line change
Expand Up @@ -369,21 +369,31 @@ public CoverableFluidHandlerWrapper(IFluidHandlerModifiable delegate) {

@Override
public int fill(FluidStack resource, FluidAction action) {
if (io == IO.OUT && manualIOMode == ManualIOMode.DISABLED) {
return 0;
if (io == IO.OUT) {
if (manualIOMode == ManualIOMode.DISABLED) {
return 0;
}
if (manualIOMode == ManualIOMode.UNFILTERED) {
return super.fill(resource, action);
}
}
if (!filterHandler.test(resource) && manualIOMode == ManualIOMode.FILTERED) {
if (!filterHandler.test(resource)) {
return 0;
}
return super.fill(resource, action);
}

@Override
public FluidStack drain(FluidStack resource, FluidAction action) {
if (io == IO.IN && manualIOMode == ManualIOMode.DISABLED) {
return FluidStack.EMPTY;
if (io == IO.IN) {
if (manualIOMode == ManualIOMode.DISABLED) {
return FluidStack.EMPTY;
}
if (manualIOMode == ManualIOMode.UNFILTERED) {
return super.drain(resource, action);
}
}
if (manualIOMode == ManualIOMode.FILTERED && !filterHandler.test(resource)) {
if (!filterHandler.test(resource)) {
return FluidStack.EMPTY;
}
return super.drain(resource, action);
Expand Down