From f046db94220c1b582175f858f07fd64e81e6e864 Mon Sep 17 00:00:00 2001 From: miozune Date: Sun, 4 Jun 2023 19:54:11 +0900 Subject: Fix void protection not working with MB with custom output hatch field (#2051) * Fix void protection not working with MB with custom output hatch field * forgot to filter * Add util method for DT-like structure --- .../java/gregtech/api/util/OutputHatchWrapper.java | 65 ++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 src/main/java/gregtech/api/util/OutputHatchWrapper.java (limited to 'src/main/java/gregtech/api/util/OutputHatchWrapper.java') diff --git a/src/main/java/gregtech/api/util/OutputHatchWrapper.java b/src/main/java/gregtech/api/util/OutputHatchWrapper.java new file mode 100644 index 0000000000..b2e74d24cf --- /dev/null +++ b/src/main/java/gregtech/api/util/OutputHatchWrapper.java @@ -0,0 +1,65 @@ +package gregtech.api.util; + +import java.util.function.Predicate; + +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTankInfo; + +import org.jetbrains.annotations.NotNull; + +import gregtech.api.interfaces.fluid.IFluidStore; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output; + +/** + * Wrapper for output hatch to allow multiblocks to apply specific filter. + */ +public class OutputHatchWrapper implements IFluidStore { + + private final GT_MetaTileEntity_Hatch_Output outputHatch; + private final Predicate filter; + + public OutputHatchWrapper(GT_MetaTileEntity_Hatch_Output outputHatch, Predicate filter) { + this.outputHatch = outputHatch; + this.filter = filter; + } + + @Override + public FluidStack getFluid() { + return outputHatch.getFluid(); + } + + @Override + public int getFluidAmount() { + return outputHatch.getFluidAmount(); + } + + @Override + public int getCapacity() { + return outputHatch.getCapacity(); + } + + @Override + public FluidTankInfo getInfo() { + return outputHatch.getInfo(); + } + + @Override + public int fill(FluidStack resource, boolean doFill) { + return outputHatch.fill(resource, doFill); + } + + @Override + public FluidStack drain(int maxDrain, boolean doDrain) { + return outputHatch.drain(maxDrain, doDrain); + } + + @Override + public boolean isEmptyAndAcceptsAnyFluid() { + return outputHatch.isEmptyAndAcceptsAnyFluid(); + } + + @Override + public boolean canStoreFluid(@NotNull FluidStack fluidStack) { + return outputHatch.canStoreFluid(fluidStack) && filter.test(fluidStack); + } +} -- cgit