Interface CustomIngredient
public interface CustomIngredient
Interface that modders can implement to create new behaviors for
Ingredient
s.
This is not directly implemented on vanilla Ingredient
s, but conversions are possible:
toVanilla()
converts a custom ingredient to a vanillaIngredient
.FabricIngredient
can be used to check if a vanillaIngredient
is custom, and retrieve the custom ingredient in that case.
The format for custom ingredients is as follows:
{
"fabric:type": "<identifier of the serializer>",
// extra ingredient data, dependent on the serializer
}
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionReturns the list of stacks that match this ingredient..Returns the serializer for this ingredient.boolean
Returns whether this ingredient always requires direct stack testing.boolean
Checks if a stack matches this ingredient.default SlotDisplay
Returns aSlotDisplay
representing this ingredient, this is synced to the client to display in the recipe book.default Ingredient
Returns a newIngredient
behaving as defined by this custom ingredient.
-
Method Details
-
test
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
-
getMatchingItems
List<RegistryEntry<Item>> getMatchingItems()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
Item
s. - 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
-
toDisplay
Returns aSlotDisplay
representing this ingredient, this is synced to the client to display in the recipe book.- Returns:
- a
SlotDisplay
instance.
-
toVanilla
Returns a newIngredient
behaving as defined by this custom ingredient..- Returns:
- a new
Ingredient
behaving as defined by this custom ingredient
-