Interface CustomIngredient


public interface CustomIngredient
Interface that modders can implement to create new behaviors for Ingredients.

This is not directly implemented on vanilla Ingredients, but conversions are possible:

The format for custom ingredients is as follows:


 {
     "fabric:type": "<identifier of the serializer>",
     // extra ingredient data, dependent on the serializer
 }
 
See Also:
  • Method Details

    • test

      boolean test(ItemStack stack)
      Checks if a stack matches this ingredient. The stack must not be modified in any way.
      Parameters:
      stack - the stack to test
      Returns:
      true if the stack matches this ingredient, false otherwise
    • getMatchingStacks

      List<ItemStack> getMatchingStacks()
      Returns the list of stacks that match this ingredient..

      The following guidelines should be followed for good compatibility:

      • These stacks are generally used for display purposes, and need not be exhaustive or perfectly accurate.
      • An exception is ingredients that don't require testing, for which it is important that the returned stacks correspond exactly to all the accepted Items.
      • At least one stack must be returned for the ingredient not to be considered empty.
      • The ingredient should try to return at least one stack with each accepted Item. This allows mods that inspect the ingredient to figure out which stacks it might accept.

      Note: no caching needs to be done by the implementation, this is already handled by the ingredient itself.

      Returns:
      the list of stacks that match this ingredient.
    • requiresTesting

      boolean requiresTesting()
      Returns whether this ingredient always requires direct stack testing.
      Returns:
      false if this ingredient ignores NBT data when matching stacks, true otherwise
      See Also:
    • getSerializer

      CustomIngredientSerializer<?> getSerializer()
      Returns the serializer for this ingredient.

      The serializer must have been registered using CustomIngredientSerializer.register(net.fabricmc.fabric.api.recipe.v1.ingredient.CustomIngredientSerializer<?>).

      Returns:
      the serializer for this ingredient
    • toVanilla

      @NonExtendable default Ingredient toVanilla()
      Returns a new Ingredient behaving as defined by this custom ingredient..
      Returns:
      a new Ingredient behaving as defined by this custom ingredient