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.MTEHatchOutput; /** * Wrapper for output hatch to allow multiblocks to apply specific filter. */ public class OutputHatchWrapper implements IFluidStore { private final MTEHatchOutput outputHatch; private final Predicate filter; public OutputHatchWrapper(MTEHatchOutput 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); } @Override public int getAvailableSpace() { return outputHatch.getAvailableSpace(); } }