Class FilteredFluidTransferable
java.lang.Object
alexiil.mc.lib.attributes.fluid.impl.FilteredFluidTransferable
- All Implemented Interfaces:
FluidExtractable,FluidInsertable,FluidTransferable,LimitedConsumer<FluidVolume>
public final class FilteredFluidTransferable extends java.lang.Object implements FluidTransferable
-
Field Summary
Fields Modifier and Type Field Description FluidFilterfilter -
Constructor Summary
Constructors Constructor Description FilteredFluidTransferable(FluidTransferable real, FluidFilter filter) -
Method Summary
Modifier and Type Method Description FluidVolumeattemptExtraction(FluidFilter filter, FluidAmount maxAmount, Simulation simulation)FluidVolumeattemptInsertion(FluidVolume fluid, Simulation simulation)Inserts the given stack into this insertable, and returns the excess.FluidTransferablefiltered(FluidFilter filter)FluidFiltergetInsertionFilter()Returns anFluidFilterto determine ifFluidInsertable.attemptInsertion(FluidVolume, Simulation)could ever accept a fluid.FluidAmountgetMinimumAcceptedAmount()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface alexiil.mc.lib.attributes.fluid.FluidExtractable
attemptAnyExtraction, attemptAnyExtraction, attemptExtraction, couldExtractAnything, extract, extract, extract, extract, extract, extract, getPureExtractableMethods inherited from interface alexiil.mc.lib.attributes.fluid.FluidInsertable
getPureInsertable, insert, offer, offer, wouldAccept
-
Field Details
-
Constructor Details
-
Method Details
-
attemptExtraction
public FluidVolume attemptExtraction(FluidFilter filter, FluidAmount maxAmount, Simulation simulation)Description copied from interface:FluidExtractable- Specified by:
attemptExtractionin interfaceFluidExtractablemaxAmount- The maximum amount of fluid that can be extracted. Negative numbers throw an exception.simulation- IfSimulation.SIMULATEthen this should return the same result that the exact same call withSimulation.ACTIONwould do, except that the filter can be made more specific between calls if the previously simulated extracted fluid is used as a filter.For example the following code snippet should never throw an exception:
FluidExtractablefrom = // Some extractable
FluidVolumeattempted = from.attemptAnyExtraction(Integer.MAX_VALUE,Simulation.SIMULATE);
if (attempted.isEmpty()) return;
FluidVolumeextracted = from.extract(attempted.getFluidKey(), attempted.getAmount());
assert !extracted.isEmpty;
assert attempted.getAmount()== extracted.getAmount();
assert attempted.getFluidKet()== extracted.getFluidKet();
assert attempted.equals(extracted);- Returns:
- A new, independent
FluidVolumethat was extracted.
-
getInsertionFilter
Description copied from interface:FluidInsertableReturns anFluidFilterto determine ifFluidInsertable.attemptInsertion(FluidVolume, Simulation)could ever accept a fluid. The default implementation is to returnConstantFluidFilter.ANYTHING, and so it is recommended that custom insertables override this to return a more accurate filter.- Specified by:
getInsertionFilterin interfaceFluidInsertable- Returns:
- A filter to determine if the given fluid could ever be inserted.
-
getMinimumAcceptedAmount
- Specified by:
getMinimumAcceptedAmountin interfaceFluidInsertable- Returns:
- The minimum amount of fluid that
FluidInsertable.attemptInsertion(FluidVolume, Simulation)will actually accept. Note that this only provides a guarantee thatfluid volumeswith anamountless than this will never be accepted.A null return value indicates that there is no minimum value.
-
attemptInsertion
Description copied from interface:FluidInsertableInserts the given stack into this insertable, and returns the excess.- Specified by:
attemptInsertionin interfaceFluidInsertable- Parameters:
fluid- The incoming fluid. Must not be modified by this call.simulation- IfSimulation.SIMULATEthen this shouldn't modify anything.- Returns:
- the excess
FluidVolumethat wasn't accepted. This will be independent of this insertable, however it might be the given object instead of a completely new object.
-
filtered
- Specified by:
filteredin interfaceFluidExtractable- Specified by:
filteredin interfaceFluidInsertable- Specified by:
filteredin interfaceFluidTransferable- Returns:
- A new
FluidTransferablethat has an additional filter applied to the fluid extracted from it or inserted into it.
-