Class SingleFluidTank
- All Implemented Interfaces:
FluidExtractable
,FluidInsertable
,FluidTransferable
,LimitedConsumer<FluidVolume>
,Reference<FluidVolume>
FixedFluidInv
.-
Method Summary
Modifier and TypeMethodDescriptionattemptExtraction(FluidFilter filter, int maxAmount, Simulation simulation)
Deprecated, for removal: This API element is subject to removal in a future version.attemptExtraction(FluidFilter filter, FluidAmount maxAmount, Simulation simulation)
attemptInsertion(FluidVolume fluid, Simulation simulation)
Inserts the given stack into this insertable, and returns the excess.void
forceSet(FluidVolume to)
Sets the stack in the given slot to the given stack, or throws an exception if it was not permitted.Returns anFluidFilter
to determine ifFluidInsertable.attemptInsertion(FluidVolume, Simulation)
could ever accept a fluid.boolean
isValid(FluidVolume value)
void
modify(Function<FluidVolume,FluidVolume> function)
Applies the given function to the stack held in the slot, and usesforceSet(FluidVolume)
on the result (Which will throw an exception if the returned stack is not valid for this tank).boolean
set(FluidVolume value)
boolean
set(FluidVolume to, Simulation simulation)
Delegates toReference.set(Object)
if the simulation isSimulation.ACTION
, otherwise it delegates toReference.isValid(Object)
.Methods inherited from class alexiil.mc.lib.attributes.fluid.SingleFluidTankView
addListener, get, getFilter, getIndex, getMaxAmount, getMaxAmount_F, getSpace, isValid
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, 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.FluidTransferable
filtered
Methods inherited from interface alexiil.mc.lib.attributes.misc.Reference
asDestroyable, get
-
Method Details
-
getBackingInv
- Overrides:
getBackingInv
in classSingleFluidTankView
-
set
Description copied from interface:Reference
Delegates toReference.set(Object)
if the simulation isSimulation.ACTION
, otherwise it delegates toReference.isValid(Object)
.- Specified by:
set
in interfaceReference<FluidVolume>
-
forceSet
Sets the stack in the given slot to the given stack, or throws an exception if it was not permitted. -
modify
Applies the given function to the stack held in the slot, and usesforceSet(FluidVolume)
on the result (Which will throw an exception if the returned stack is not valid for this tank). -
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.
-
attemptExtraction
@Deprecated(since="0.6.0", forRemoval=true) public FluidVolume attemptExtraction(FluidFilter filter, int maxAmount, Simulation simulation)Deprecated, for removal: This API element is subject to removal in a future version.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.
-
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.
-
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.
-
set
- Specified by:
set
in interfaceReference<FluidVolume>
- Returns:
- True if the new value was accepted, false otherwise.
-
isValid
- Specified by:
isValid
in interfaceReference<FluidVolume>
- Returns:
- True if
Reference.set(Object)
was called with the same value.
-
attemptExtraction(FluidFilter, FluidAmount, Simulation)
.