diff options
author | miozune <miozune@gmail.com> | 2023-06-04 19:54:11 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-04 12:54:11 +0200 |
commit | f046db94220c1b582175f858f07fd64e81e6e864 (patch) | |
tree | 217d79501c31b76db9d38a75ccaa1ee09d96117e /src/main/java/gregtech/api/util/OutputHatchWrapper.java | |
parent | 9e4456e39709d815ba28064620ff0290ac14151b (diff) | |
download | GT5-Unofficial-f046db94220c1b582175f858f07fd64e81e6e864.tar.gz GT5-Unofficial-f046db94220c1b582175f858f07fd64e81e6e864.tar.bz2 GT5-Unofficial-f046db94220c1b582175f858f07fd64e81e6e864.zip |
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
Diffstat (limited to 'src/main/java/gregtech/api/util/OutputHatchWrapper.java')
-rw-r--r-- | src/main/java/gregtech/api/util/OutputHatchWrapper.java | 65 |
1 files changed, 65 insertions, 0 deletions
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<FluidStack> filter; + + public OutputHatchWrapper(GT_MetaTileEntity_Hatch_Output outputHatch, Predicate<FluidStack> 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); + } +} |