Class DelegatingGroupedFluidInv
- All Implemented Interfaces:
FluidExtractable
,FluidInsertable
,FluidTransferable
,GroupedFluidInv
,GroupedFluidInvView
,LimitedConsumer<FluidVolume>
- Direct Known Subclasses:
SimpleLimitedGroupedFluidInv
public class DelegatingGroupedFluidInv extends java.lang.Object implements GroupedFluidInv
-
Nested Class Summary
Nested classes/interfaces inherited from interface alexiil.mc.lib.attributes.fluid.GroupedFluidInvView
GroupedFluidInvView.FluidInvStatistic
-
Field Summary
Fields Modifier and Type Field Description protected GroupedFluidInv
delegate
-
Constructor Summary
Constructors Constructor Description DelegatingGroupedFluidInv(GroupedFluidInv delegate)
-
Method Summary
Modifier and Type Method Description ListenerToken
addListener_F(FluidInvAmountChangeListener_F listener, ListenerRemovalToken removalToken)
Adds the given listener to this inventory, such that theFluidInvAmountChangeListener.onChange(GroupedFluidInvView, FluidKey, int, int)
will be called every time that this inventory changes.FluidVolume
attemptAnyExtraction(FluidAmount maxAmount, Simulation simulation)
FluidVolume
attemptExtraction(FluidFilter filter, FluidAmount maxAmount, Simulation simulation)
FluidVolume
attemptInsertion(FluidVolume fluid, Simulation simulation)
Inserts the given stack into this insertable, and returns the excess.FluidFilter
getInsertionFilter()
Returns anFluidFilter
to determine ifFluidInsertable.attemptInsertion(FluidVolume, Simulation)
could ever accept a fluid.GroupedFluidInvView.FluidInvStatistic
getStatistics(FluidFilter filter)
java.util.Set<FluidKey>
getStoredFluids()
FluidAmount
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, 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, getAmount, getAmount, getAmount_F, getAmount_F, getCapacity, getCapacity_F, getGroupedView, getSpace, getSpace_F, getStatistics, getTotalCapacity
-
Field Details
-
Constructor Details
-
Method Details
-
getStoredFluids
- Specified by:
getStoredFluids
in interfaceGroupedFluidInvView
- Returns:
- a set containing all of the
FluidKey
's that are stored in the inventory.
-
getTotalCapacity_F
- Specified by:
getTotalCapacity_F
in interfaceGroupedFluidInvView
- Returns:
- The total capacity for every
FluidKey
that can be stored in this inventory.NOTE: This value might not be equal to the sum of
GroupedFluidInvView.getCapacity(FluidKey)
overGroupedFluidInvView.getStoredFluids()
!
-
getStatistics
- Specified by:
getStatistics
in interfaceGroupedFluidInvView
- Parameters:
filter
- The filter to check on.- Returns:
- Statistics about the currently stored amount, capacity, and space for everything that matches the given filter.
-
addListener_F
public ListenerToken addListener_F(FluidInvAmountChangeListener_F listener, ListenerRemovalToken removalToken)Description copied from interface:GroupedFluidInvView
Adds the given listener to this inventory, such that theFluidInvAmountChangeListener.onChange(GroupedFluidInvView, FluidKey, int, int)
will be called every time that this inventory changes. However if this inventory doesn't support listeners then this will return a nulltoken
.- Specified by:
addListener_F
in interfaceGroupedFluidInvView
removalToken
- A token that will be called whenever the given listener is removed from this inventory (or if this inventory itself is unloaded or otherwise invalidated).- Returns:
- A token that represents the listener, or null if the listener could not be added.
-
attemptInsertion
Description copied from interface:FluidInsertable
Inserts the given stack into this insertable, and returns the excess.- Specified by:
attemptInsertion
in interfaceFluidInsertable
- 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
- Returns:
- A filter to determine if the given fluid could ever be inserted.
-
attemptExtraction
public FluidVolume attemptExtraction(FluidFilter filter, FluidAmount maxAmount, Simulation simulation)Description copied from interface:FluidExtractable
- Specified by:
attemptExtraction
in interfaceFluidExtractable
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.
-
attemptAnyExtraction
Description copied from interface:FluidExtractable
- Specified by:
attemptAnyExtraction
in interfaceFluidExtractable
-