Class IngredientComponentStorageWrapperHandlerResourceHandler.ComponentStorageWrapper<R extends net.neoforged.neoforge.transfer.resource.Resource,T,M>

java.lang.Object
org.cyclops.commoncapabilities.ingredient.storage.IngredientComponentStorageWrapperHandlerResourceHandler.ComponentStorageWrapper<R,T,M>
All Implemented Interfaces:
Iterable<T>, IIngredientComponentStorage<T,M>, IIngredientComponentStorageSlotted<T,M>
Direct Known Subclasses:
IngredientComponentStorageWrapperHandlerItemStack.ComponentStorageWrapperCombined
Enclosing class:
IngredientComponentStorageWrapperHandlerResourceHandler<C,R extends net.neoforged.neoforge.transfer.resource.Resource,T,M>

public static class IngredientComponentStorageWrapperHandlerResourceHandler.ComponentStorageWrapper<R extends net.neoforged.neoforge.transfer.resource.Resource,T,M> extends Object implements IIngredientComponentStorageSlotted<T,M>
  • Constructor Summary

    Constructors
    Constructor
    Description
    ComponentStorageWrapper(IngredientComponent<T,M> ingredientComponent, net.neoforged.neoforge.transfer.ResourceHandler<R> storage, IResourceConverter<R,T> resourceConverter)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    extract(int slot, long maxQuantity, net.neoforged.neoforge.transfer.transaction.TransactionContext transaction)
    Extract the at most the given quantity from the ingredient from the given slot in the storage.
    extract(long maxQuantity, net.neoforged.neoforge.transfer.transaction.TransactionContext transaction)
    Extract any ingredient, but the given maximum amount from the storage.
    extract(T prototype, M matchFlags, net.neoforged.neoforge.transfer.transaction.TransactionContext transaction)
    Extract an ingredient matching the given prototype from the storage.
    protected T
    finalizeExtractionForAmount(T instancePrototype, org.apache.commons.lang3.tuple.Pair<org.cyclops.cyclopscore.datastructure.Wrapper<Integer>,List<Integer>> value, int requiredQuantity, net.neoforged.neoforge.transfer.transaction.TransactionContext transaction)
     
     
    long
     
    long
    getMaxQuantity(int slot)
    Get the maximum allowed quantity in the given slot.
    getSlotContents(int slot)
    Get the ingredient that is contained in the given slot.
    int
     
    insert(int slot, T ingredient, net.neoforged.neoforge.transfer.transaction.TransactionContext transaction)
    Inserts an ingredient into the storage in the given slot and return the remainder.
    insert(T ingredient, net.neoforged.neoforge.transfer.transaction.TransactionContext transaction)
    Inserts an ingredient into the storage and return the remainder.
    Get all ingredients in this storage.
    iterator(T prototype, M matchFlags)
    Find all ingredients matching the given prototype from the storage.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.cyclops.commoncapabilities.api.ingredient.storage.IIngredientComponentStorage

    extract, extract, insert

    Methods inherited from interface org.cyclops.commoncapabilities.api.ingredient.storage.IIngredientComponentStorageSlotted

    extract, insert

    Methods inherited from interface java.lang.Iterable

    forEach, spliterator
  • Constructor Details

  • Method Details

    • getComponent

      public IngredientComponent<T,M> getComponent()
      Specified by:
      getComponent in interface IIngredientComponentStorage<R extends net.neoforged.neoforge.transfer.resource.Resource,T>
      Returns:
      The ingredient component type this storage applies to.
    • iterator

      public Iterator<T> iterator()
      Description copied from interface: IIngredientComponentStorage
      Get all ingredients in this storage.
      Specified by:
      iterator in interface IIngredientComponentStorage<R extends net.neoforged.neoforge.transfer.resource.Resource,T>
      Specified by:
      iterator in interface Iterable<R extends net.neoforged.neoforge.transfer.resource.Resource>
      Returns:
      An iterator over all available ingredients in this storage.
    • iterator

      public Iterator<T> iterator(@Nonnull T prototype, M matchFlags)
      Description copied from interface: IIngredientComponentStorage
      Find all ingredients matching the given prototype from the storage. Calling this method will not modify the storage in any way. Results from this method MUST NOT be modified.
      Specified by:
      iterator in interface IIngredientComponentStorage<R extends net.neoforged.neoforge.transfer.resource.Resource,T>
      Parameters:
      prototype - The ingredient to search for.
      matchFlags - The flags to compare the given prototype by according to IngredientComponent.getMatcher().
      Returns:
      An iterator over ingredients that match the given prototype, which may potentially be empty.
    • getMaxQuantity

      public long getMaxQuantity()
      Specified by:
      getMaxQuantity in interface IIngredientComponentStorage<R extends net.neoforged.neoforge.transfer.resource.Resource,T>
      Returns:
      The maximum allowed quantity over all instances.
    • insert

      public T insert(@Nonnull T ingredient, net.neoforged.neoforge.transfer.transaction.TransactionContext transaction)
      Description copied from interface: IIngredientComponentStorage
      Inserts an ingredient into the storage and return the remainder. The ingredient should not be modified in this function!
      Specified by:
      insert in interface IIngredientComponentStorage<R extends net.neoforged.neoforge.transfer.resource.Resource,T>
      Parameters:
      ingredient - Ingredient to insert.
      transaction - The transaction context.
      Returns:
      The remaining ingredient that was not inserted (if the entire ingredient is accepted, then return IIngredientMatcher.getEmptyInstance()). May be the same as the input ingredient if unchanged, otherwise a new ingredient.
    • extract

      public T extract(@Nonnull T prototype, M matchFlags, net.neoforged.neoforge.transfer.transaction.TransactionContext transaction)
      Description copied from interface: IIngredientComponentStorage
      Extract an ingredient matching the given prototype from the storage. Note that only the extracted ingredient must match the prototype under the given condition. Internally, ingredients can be combined and matched in any way. For example, an exact match could be produced by combining several ingredients. If the primary quantifier (as identified by IngredientComponent.getPrimaryQuantifier()) IS NOT part of the match condition, then the quantity of the given prototype MUST be interpreted as the maximum quantity that must be extracted. If the primary quantifier (as identified by IngredientComponent.getPrimaryQuantifier()) IS part of the match condition, then the quantity of the given prototype MUST be interpreted as the exact quantity that must be extracted. If the storage has a HIGHER OR EQUAL available quantity, then the storage MUST allow the given quantity to be extracted. If the storage on the other hand has a LOWER available quantity, then extraction is not allowed.
      Specified by:
      extract in interface IIngredientComponentStorage<R extends net.neoforged.neoforge.transfer.resource.Resource,T>
      Parameters:
      prototype - The ingredient to search for.
      matchFlags - The flags to compare the given prototype by according to IngredientComponent.getMatcher().
      transaction - The transaction context.
      Returns:
      Ingredient extracted from the slot, must be IIngredientMatcher.getEmptyInstance(), if nothing can be extracted
    • finalizeExtractionForAmount

      protected T finalizeExtractionForAmount(T instancePrototype, org.apache.commons.lang3.tuple.Pair<org.cyclops.cyclopscore.datastructure.Wrapper<Integer>,List<Integer>> value, int requiredQuantity, net.neoforged.neoforge.transfer.transaction.TransactionContext transaction)
    • extract

      public T extract(long maxQuantity, net.neoforged.neoforge.transfer.transaction.TransactionContext transaction)
      Description copied from interface: IIngredientComponentStorage
      Extract any ingredient, but the given maximum amount from the storage.
      Specified by:
      extract in interface IIngredientComponentStorage<R extends net.neoforged.neoforge.transfer.resource.Resource,T>
      Parameters:
      maxQuantity - The maximum amount to extract.
      transaction - The transaction context.
      Returns:
      Ingredient extracted from the slot, must be IIngredientMatcher.getEmptyInstance(), if nothing can be extracted
    • getSlots

      public int getSlots()
      Specified by:
      getSlots in interface IIngredientComponentStorageSlotted<R extends net.neoforged.neoforge.transfer.resource.Resource,T>
      Returns:
      The number of available slots.
    • getSlotContents

      public T getSlotContents(int slot)
      Description copied from interface: IIngredientComponentStorageSlotted
      Get the ingredient that is contained in the given slot. Note: The returned ingredient MUST NOT not be modified by the caller.
      Specified by:
      getSlotContents in interface IIngredientComponentStorageSlotted<R extends net.neoforged.neoforge.transfer.resource.Resource,T>
      Parameters:
      slot - A slot number.
      Returns:
      The contained ingredient.
    • getMaxQuantity

      public long getMaxQuantity(int slot)
      Description copied from interface: IIngredientComponentStorageSlotted
      Get the maximum allowed quantity in the given slot.
      Specified by:
      getMaxQuantity in interface IIngredientComponentStorageSlotted<R extends net.neoforged.neoforge.transfer.resource.Resource,T>
      Parameters:
      slot - A slot number.
      Returns:
      The maximum allowed in the given slot.
    • insert

      public T insert(int slot, @Nonnull T ingredient, net.neoforged.neoforge.transfer.transaction.TransactionContext transaction)
      Description copied from interface: IIngredientComponentStorageSlotted
      Inserts an ingredient into the storage in the given slot and return the remainder. The ingredient should not be modified in this function!
      Specified by:
      insert in interface IIngredientComponentStorageSlotted<R extends net.neoforged.neoforge.transfer.resource.Resource,T>
      Parameters:
      slot - A slot number to insert to.
      ingredient - Ingredient to insert.
      transaction - The transaction context.
      Returns:
      The remaining ingredient that was not inserted (if the entire ingredient is accepted, then return IIngredientMatcher.getEmptyInstance()). May be the same as the input ingredient if unchanged, otherwise a new ingredient.
    • extract

      public T extract(int slot, long maxQuantity, net.neoforged.neoforge.transfer.transaction.TransactionContext transaction)
      Description copied from interface: IIngredientComponentStorageSlotted
      Extract the at most the given quantity from the ingredient from the given slot in the storage.
      Specified by:
      extract in interface IIngredientComponentStorageSlotted<R extends net.neoforged.neoforge.transfer.resource.Resource,T>
      Parameters:
      slot - A slot number to extract from.
      maxQuantity - The maximum amount to extract.
      transaction - The transaction context.
      Returns:
      Ingredient extracted from the slot, must be IIngredientMatcher.getEmptyInstance(), if nothing can be extracted