Class SimpleLimitedGroupedFluidInv
java.lang.Object
alexiil.mc.lib.attributes.fluid.impl.DelegatingGroupedFluidInv
alexiil.mc.lib.attributes.fluid.impl.SimpleLimitedGroupedFluidInv
- All Implemented Interfaces:
FluidExtractable
,FluidInsertable
,FluidTransferable
,GroupedFluidInv
,GroupedFluidInvView
,LimitedGroupedFluidInv
,LimitedConsumer<FluidVolume>
public class SimpleLimitedGroupedFluidInv
extends DelegatingGroupedFluidInv
implements LimitedGroupedFluidInv
-
Nested Class Summary
Nested classes/interfaces inherited from interface alexiil.mc.lib.attributes.fluid.GroupedFluidInvView
GroupedFluidInvView.FluidInvStatistic
Nested classes/interfaces inherited from interface alexiil.mc.lib.attributes.fluid.LimitedGroupedFluidInv
LimitedGroupedFluidInv.FluidLimitRule
-
Field Summary
Fields inherited from class alexiil.mc.lib.attributes.fluid.impl.DelegatingGroupedFluidInv
delegate
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
attemptExtraction(FluidFilter filter, FluidAmount maxAmount, Simulation simulation)
attemptInsertion(FluidVolume fluid, Simulation simulation)
Inserts the given stack into this insertable, and returns the excess.copy()
Creates a copy of thisLimitedGroupedFluidInv
(with the same backing inventory and the same rules), but not marked as final.Returns anFluidFilter
to determine ifFluidInsertable.attemptInsertion(FluidVolume, Simulation)
could ever accept a fluid.getRule(FluidFilter filter)
Marks this object as final, and disallows any further changes to this.Methods inherited from class alexiil.mc.lib.attributes.fluid.impl.DelegatingGroupedFluidInv
addListener_F, attemptAnyExtraction, getStatistics, getStoredFluids, getTotalCapacity_F
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface alexiil.mc.lib.attributes.fluid.FluidExtractable
attemptAnyExtraction, attemptAnyExtraction, attemptExtraction, couldExtractAnything, extract, extract, extract, extract, extract, extract, getPureExtractable
Methods inherited from interface alexiil.mc.lib.attributes.fluid.FluidInsertable
getMinimumAcceptedAmount, getPureInsertable, insert, offer, offer, wouldAccept
Methods inherited from interface alexiil.mc.lib.attributes.fluid.GroupedFluidInv
createLimitedGroupedInv, filtered
Methods inherited from interface alexiil.mc.lib.attributes.fluid.GroupedFluidInvView
addListener, addListener_F, getAmount, getAmount, getAmount_F, getAmount_F, getCapacity, getCapacity_F, getGroupedView, getSpace, getSpace_F, getStatistics, getStatistics, getStoredFluids, getTotalCapacity, getTotalCapacity_F
Methods inherited from interface alexiil.mc.lib.attributes.fluid.LimitedGroupedFluidInv
asUnmodifiable, getAllRule, getRule, reset
-
Constructor Details
-
SimpleLimitedGroupedFluidInv
-
-
Method Details
-
markFinal
Description copied from interface:LimitedGroupedFluidInv
Marks this object as final, and disallows any further changes to this. If this is called thenLimitedGroupedFluidInv.asUnmodifiable()
will return this object.- Specified by:
markFinal
in interfaceLimitedGroupedFluidInv
- Returns:
- this.
-
assertMutable
protected void assertMutable() -
copy
Description copied from interface:LimitedGroupedFluidInv
Creates a copy of thisLimitedGroupedFluidInv
(with the same backing inventory and the same rules), but not marked as final.- Specified by:
copy
in interfaceLimitedGroupedFluidInv
-
attemptExtraction
public FluidVolume attemptExtraction(FluidFilter filter, FluidAmount maxAmount, Simulation simulation)Description copied from interface:FluidExtractable
- Specified by:
attemptExtraction
in interfaceFluidExtractable
- Overrides:
attemptExtraction
in classDelegatingGroupedFluidInv
maxAmount
- The maximum amount of fluid that can be extracted. Negative numbers throw an exception.simulation
- IfSimulation.SIMULATE
then this should return the same result that the exact same call withSimulation.ACTION
would 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:
FluidExtractable
from = // Some extractable
FluidVolume
attempted = from.attemptAnyExtraction
(Integer.MAX_VALUE
,Simulation.SIMULATE
);
if (attempted.isEmpty()
) return;
FluidVolume
extracted = 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
FluidVolume
that was extracted.
-
attemptInsertion
Description copied from interface:FluidInsertable
Inserts the given stack into this insertable, and returns the excess.- Specified by:
attemptInsertion
in interfaceFluidInsertable
- Overrides:
attemptInsertion
in classDelegatingGroupedFluidInv
- Parameters:
fluid
- The incoming fluid. Must not be modified by this call.simulation
- IfSimulation.SIMULATE
then this shouldn't modify anything.- Returns:
- the excess
FluidVolume
that wasn't accepted. This will be independent of this insertable, however it might be the given object instead of a completely new object.
-
getInsertionFilter
Description copied from interface:FluidInsertable
Returns anFluidFilter
to 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:
getInsertionFilter
in interfaceFluidInsertable
- Overrides:
getInsertionFilter
in classDelegatingGroupedFluidInv
- Returns:
- A filter to determine if the given fluid could ever be inserted.
-
getRule
- Specified by:
getRule
in interfaceLimitedGroupedFluidInv
- Returns:
- An
LimitedGroupedFluidInv.FluidLimitRule
that applies to every fluid that matches the given filter.
-