Class CombinedStorage<T,S extends Storage<T>>
- Type Parameters:
T- The type of the stored resources.S- The class of every part.? extends Storage<T>can be used if the parts are of different types. Experimental feature, we reserve the right to remove or change it without further notice. The transfer API is a complex addition, and we want to be able to correct possible design mistakes.
- All Implemented Interfaces:
Iterable<StorageView<T>>,Storage<T>
- Direct Known Subclasses:
CombinedSlottedStorage
Storage wrapping multiple storages.
The storages passed to the constructor will be iterated in order.
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionlongextract(T resource, long maxAmount, TransactionContext transaction) Try to extract up to some amount of a resource from this storage.longinsert(T resource, long maxAmount, TransactionContext transaction) Try to insert up to some amount of a resource into this storage.iterator()Iterate through the contents of this storage.booleanReturn false if callingStorage.extract(T, long, net.fabricmc.fabric.api.transfer.v1.transaction.TransactionContext)will absolutely always return 0, or true otherwise or in doubt.booleanReturn false if callingStorage.insert(T, long, net.fabricmc.fabric.api.transfer.v1.transaction.TransactionContext)will absolutely always return 0, or true otherwise or in doubt.toString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliteratorMethods inherited from interface net.fabricmc.fabric.api.transfer.v1.storage.Storage
exactView, getVersion, nonEmptyIterator, nonEmptyViews, simulateExtract, simulateInsert
-
Field Details
-
parts
-
-
Constructor Details
-
CombinedStorage
-
-
Method Details
-
supportsInsertion
public boolean supportsInsertion()Description copied from interface:StorageReturn false if callingStorage.insert(T, long, net.fabricmc.fabric.api.transfer.v1.transaction.TransactionContext)will absolutely always return 0, or true otherwise or in doubt.Note: This function is meant to be used by pipes or other devices that can transfer resources to know if they should interact with this storage at all.
- Specified by:
supportsInsertionin interfaceStorage<T>
-
insert
Description copied from interface:StorageTry to insert up to some amount of a resource into this storage.- Specified by:
insertin interfaceStorage<T>- Parameters:
resource- The resource to insert. May not be blank.maxAmount- The maximum amount of resource to insert. May not be negative.transaction- The transaction this operation is part of.- Returns:
- A non-negative integer not greater than maxAmount: the amount that was inserted.
-
supportsExtraction
public boolean supportsExtraction()Description copied from interface:StorageReturn false if callingStorage.extract(T, long, net.fabricmc.fabric.api.transfer.v1.transaction.TransactionContext)will absolutely always return 0, or true otherwise or in doubt.Note: This function is meant to be used by pipes or other devices that can transfer resources to know if they should interact with this storage at all.
- Specified by:
supportsExtractionin interfaceStorage<T>
-
extract
Description copied from interface:StorageTry to extract up to some amount of a resource from this storage.- Specified by:
extractin interfaceStorage<T>- Parameters:
resource- The resource to extract. May not be blank.maxAmount- The maximum amount of resource to extract. May not be negative.transaction- The transaction this operation is part of.- Returns:
- A non-negative integer not greater than maxAmount: the amount that was extracted.
-
iterator
Description copied from interface:StorageIterate through the contents of this storage. Every visitedStorageViewrepresents a stored resource and an amount. The iterator doesn't guarantee that a single resource only occurs once during an iteration. Calling remove on the iterator is not allowed.Storage.insert(T, long, net.fabricmc.fabric.api.transfer.v1.transaction.TransactionContext)andStorage.extract(T, long, net.fabricmc.fabric.api.transfer.v1.transaction.TransactionContext)may be called safely during iteration. Extractions should be visible to an open iterator, but insertions are not required to. In particular, inventories with a fixed amount of slots may wish to make insertions visible to iterators, but inventories with a dynamic or very large amount of slots should not do that to ensure timely termination of the iteration.If a modification is made to the storage during iteration, the iterator might become invalid at the end of the outermost transaction. In particular, if multiple storage views are extracted from, the entire iteration should be wrapped in a transaction.
-
toString
-