Class SimpleLimitedFixedFluidInv
java.lang.Object
alexiil.mc.lib.attributes.fluid.impl.DelegatingFixedFluidInv
alexiil.mc.lib.attributes.fluid.impl.SimpleLimitedFixedFluidInv
- All Implemented Interfaces:
Convertible
,FixedFluidInv
,FixedFluidInvView
,LimitedFixedFluidInv
public class SimpleLimitedFixedFluidInv extends DelegatingFixedFluidInv implements LimitedFixedFluidInv
-
Nested Class Summary
Nested classes/interfaces inherited from interface alexiil.mc.lib.attributes.fluid.LimitedFixedFluidInv
LimitedFixedFluidInv.FluidTankLimitRule
-
Field Summary
Fields Modifier and Type Field Description protected FluidFilter[]
insertionFilters
protected FluidAmount[]
maxInsertionAmounts
Array of maximum amounts that can be inserted up to.protected FluidAmount[]
minimumAmounts
Array of minimum amounts that can be extracted down to. -
Constructor Summary
Constructors Constructor Description SimpleLimitedFixedFluidInv(FixedFluidInv delegate)
-
Method Summary
Modifier and Type Method Description protected void
assertMutable()
LimitedFixedFluidInv
copy()
Creates a copy of thisLimitedFixedItemInv
(with the same backing inventory and the same rules).FluidFilter
getFilterForTank(int tank)
ExposesFixedFluidInvView.isFluidValidForTank(int, FluidKey)
as a (potentially) readable filter.GroupedFluidInv
getGroupedInv()
FluidAmount
getMaxAmount_F(int tank)
LimitedFixedFluidInv.FluidTankLimitRule
getRule(int tank)
LimitedFixedFluidInv.FluidTankLimitRule
getSubRule(int from, int to)
boolean
isFluidValidForTank(int tank, FluidKey fluid)
Checks to see if the given fluid would be valid for this tank, ignoring current contents.LimitedFixedFluidInv
markFinal()
Marks this object as final, and disallows any further changes to this.boolean
setInvFluid(int tank, FluidVolume to, Simulation simulation)
Sets the fluid in the given tank to the given fluid.Methods inherited from class alexiil.mc.lib.attributes.fluid.impl.DelegatingFixedFluidInv
addListener, getInvFluid, getMaxAmount, getTankCount
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.FixedFluidInv
createLimitedFixedInv, extractFluid, forceSetInvFluid, getExtractable, getInsertable, getMappedInv, getSubInv, getTank, getTransferable, insertFluid, modifyTank, tankIterable
Methods inherited from interface alexiil.mc.lib.attributes.fluid.FixedFluidInvView
addListener, convertTo, fluidIterable, getFixedView, getInvFluid, getMaxAmount, getTankCount, offerSelfAsAttribute
Methods inherited from interface alexiil.mc.lib.attributes.fluid.LimitedFixedFluidInv
asUnmodifiable, getAllRule, reset
-
Field Details
-
insertionFilters
-
maxInsertionAmounts
Array of maximum amounts that can be inserted up to. Null entries are (confusingly) equal to "MAX_VALUE", and not zero. -
minimumAmounts
Array of minimum amounts that can be extracted down to. Null entries are equal to zero.
-
-
Constructor Details
-
Method Details
-
markFinal
Description copied from interface:LimitedFixedFluidInv
Marks this object as final, and disallows any further changes to this. If this is called thenLimitedFixedFluidInv.asUnmodifiable()
will return this object.- Specified by:
markFinal
in interfaceLimitedFixedFluidInv
- Returns:
- this.
-
assertMutable
protected void assertMutable() -
copy
Description copied from interface:LimitedFixedFluidInv
Creates a copy of thisLimitedFixedItemInv
(with the same backing inventory and the same rules).- Specified by:
copy
in interfaceLimitedFixedFluidInv
-
getGroupedInv
- Specified by:
getGroupedInv
in interfaceFixedFluidInv
- Specified by:
getGroupedInv
in interfaceFixedFluidInvView
- Returns:
- A statistical view of this inventory.
-
isFluidValidForTank
Description copied from interface:FixedFluidInv
Checks to see if the given fluid would be valid for this tank, ignoring current contents. Note that this method should adhere to the requirements ofFluidFilter.matches(FluidKey)
, so passingempty
fluids will generally not return useful results.Note that just because an
FluidKey
passes this validity test, and is mergable with the current fluid, does not mean that you can insert the fluid into this inventory.- Specified by:
isFluidValidForTank
in interfaceFixedFluidInv
- Specified by:
isFluidValidForTank
in interfaceFixedFluidInvView
- Overrides:
isFluidValidForTank
in classDelegatingFixedFluidInv
- Parameters:
tank
- The tank index. Must be a value between 0 (inclusive) andFixedFluidInvView.getTankCount()
(exclusive) to be valid. (Like in arrays, lists, etc).
-
getFilterForTank
Description copied from interface:FixedFluidInvView
ExposesFixedFluidInvView.isFluidValidForTank(int, FluidKey)
as a (potentially) readable filter.- Specified by:
getFilterForTank
in interfaceFixedFluidInvView
- Overrides:
getFilterForTank
in classDelegatingFixedFluidInv
- Parameters:
tank
- The tank index. Must be a value between 0 (inclusive) andFixedFluidInvView.getTankCount()
(exclusive) to be valid. (Like in arrays, lists, etc).- Returns:
- An
FluidFilter
for this tank. If this tank is filtered by anFluidFilter
internally then it is highly recommended that this be overridden to return that filter rather than the default opaque wrapper aroundFixedFluidInvView.isFluidValidForTank(int, FluidKey)
.
-
setInvFluid
Description copied from interface:FixedFluidInv
Sets the fluid in the given tank to the given fluid.- Specified by:
setInvFluid
in interfaceFixedFluidInv
- Overrides:
setInvFluid
in classDelegatingFixedFluidInv
- Returns:
- True if the modification was allowed, false otherwise. (For example if the given stack doesn't pass the
FixedFluidInvView.isFluidValidForTank(int, FluidKey)
test).
-
getMaxAmount_F
- Specified by:
getMaxAmount_F
in interfaceFixedFluidInvView
- Overrides:
getMaxAmount_F
in classDelegatingFixedFluidInv
- Parameters:
tank
- The tank index. Must be a value between 0 (inclusive) andFixedFluidInvView.getTankCount()
(exclusive) to be valid. (Like in arrays, lists, etc).- Returns:
- The maximum amount that the given tank can hold of the given fluid. This method will ignore the current
stack in
FixedFluidInvView.getInvFluid(int)
. Note that any setters that this object implements (likeFixedFluidInv.setInvFluid(int, FluidVolume, Simulation)
should reject stacks that are greater than this value. (and callers should only call this if they need to check the amounts separately. Note that it is meaningless to return values greater than the maximum amount an fluid can be stacked to here, and callers are free to throw an exception if this is violated. (Basically huge single-tank inventories shouldn't implement this interface).
-
getRule
- Specified by:
getRule
in interfaceLimitedFixedFluidInv
- Returns:
- A rule for the single tank.
-
getSubRule
- Specified by:
getSubRule
in interfaceLimitedFixedFluidInv
- Parameters:
from
- The first tank (inclusive)to
- The last tank (exclusive).- Returns:
- A rule that applies to every tank between from and to.
-