Interface Recipe<C extends Inventory>

All Known Subinterfaces:
CraftingRecipe, SmithingRecipe
All Known Implementing Classes:
AbstractCookingRecipe, ArmorDyeRecipe, BannerDuplicateRecipe, BlastingRecipe, BookCloningRecipe, CampfireCookingRecipe, CraftingDecoratedPotRecipe, CuttingRecipe, FireworkRocketRecipe, FireworkStarFadeRecipe, FireworkStarRecipe, MapCloningRecipe, MapExtendingRecipe, RepairItemRecipe, ShapedRecipe, ShapelessRecipe, ShieldDecorationRecipe, ShulkerBoxColoringRecipe, SmeltingRecipe, SmithingTransformRecipe, SmithingTrimRecipe, SmokingRecipe, SpecialCraftingRecipe, StonecuttingRecipe, SuspiciousStewRecipe, TippedArrowRecipe

public interface Recipe<C extends Inventory>
A recipe is an arrangement of item stacks in an inventory that can yield a product item stack.

Recipes are loaded by and stored in the RecipeManager. They are part of the server's data packs and are sent to the client, governed by their serializers. Hence, recipes should not be stored, as they may become obsolete after reloads.

A few of the methods in this class are dedicated to crafting recipes or recipe books. Users can have stub implementations if they do not use those functionalities.

Mappings:
Namespace Name
named net/minecraft/recipe/Recipe
intermediary net/minecraft/class_1860
official cyw
  • Field Details

    • CODEC

      static final com.mojang.serialization.Codec<Recipe<?>> CODEC
      Mappings:
      Namespace Name Mixin selector
      named CODEC Lnet/minecraft/recipe/Recipe;CODEC:Lcom/mojang/serialization/Codec;
      intermediary field_47319 Lnet/minecraft/class_1860;field_47319:Lcom/mojang/serialization/Codec;
      official h Lcyw;h:Lcom/mojang/serialization/Codec;
    • PACKET_CODEC

      static final PacketCodec<RegistryByteBuf,Recipe<?>> PACKET_CODEC
      Mappings:
      Namespace Name Mixin selector
      named PACKET_CODEC Lnet/minecraft/recipe/Recipe;PACKET_CODEC:Lnet/minecraft/network/codec/PacketCodec;
      intermediary field_48356 Lnet/minecraft/class_1860;field_48356:Lnet/minecraft/class_9139;
      official i Lcyw;i:Lzn;
  • Method Details

    • matches

      boolean matches(C inventory, World world)
      Returns whether this recipe matches the contents inside the inventory in the given world.

      The world currently is only used by the map cloning recipe to prevent duplication of explorer maps.

      Parameters:
      inventory - the input inventory
      world - the input world
      Returns:
      whether this recipe matches the contents inside the inventory in the given world
      Mappings:
      Namespace Name Mixin selector
      named matches Lnet/minecraft/recipe/Recipe;matches(Lnet/minecraft/inventory/Inventory;Lnet/minecraft/world/World;)Z
      intermediary method_8115 Lnet/minecraft/class_1860;method_8115(Lnet/minecraft/class_1263;Lnet/minecraft/class_1937;)Z
      official a Lcyw;a(Lbqo;Ldbz;)Z
    • craft

      ItemStack craft(C inventory, RegistryWrapper.WrapperLookup lookup)
      Crafts this recipe.

      This method does not perform side effects on the inventory.

      This method should return a new item stack on each call.

      Parameters:
      inventory - the input inventory
      Returns:
      the resulting item stack
      Mappings:
      Namespace Name Mixin selector
      named craft Lnet/minecraft/recipe/Recipe;craft(Lnet/minecraft/inventory/Inventory;Lnet/minecraft/registry/RegistryWrapper$WrapperLookup;)Lnet/minecraft/item/ItemStack;
      intermediary method_8116 Lnet/minecraft/class_1860;method_8116(Lnet/minecraft/class_1263;Lnet/minecraft/class_7225$class_7874;)Lnet/minecraft/class_1799;
      official a Lcyw;a(Lbqo;Ljk$a;)Lcuq;
    • fits

      boolean fits(int width, int height)
      Returns whether this recipe will fit into the given grid size.

      This is currently only used by recipe book.

      Parameters:
      width - the width of the input inventory
      height - the height of the input inventory
      Returns:
      whether this recipe will fit into the given grid size
      Mappings:
      Namespace Name Mixin selector
      named fits Lnet/minecraft/recipe/Recipe;fits(II)Z
      intermediary method_8113 Lnet/minecraft/class_1860;method_8113(II)Z
      official a Lcyw;a(II)Z
    • getResult

      ItemStack getResult(RegistryWrapper.WrapperLookup registriesLookup)
      Returns a preview of the recipe's output.

      The returned stack should not be modified. To obtain the actual output, call craft(Inventory, DynamicRegistryManager).

      Returns:
      a preview of the recipe's output
      Mappings:
      Namespace Name Mixin selector
      named getResult Lnet/minecraft/recipe/Recipe;getResult(Lnet/minecraft/registry/RegistryWrapper$WrapperLookup;)Lnet/minecraft/item/ItemStack;
      intermediary method_8110 Lnet/minecraft/class_1860;method_8110(Lnet/minecraft/class_7225$class_7874;)Lnet/minecraft/class_1799;
      official a Lcyw;a(Ljk$a;)Lcuq;
    • getRemainder

      default DefaultedList<ItemStack> getRemainder(C inventory)
      Returns the remaining stacks to be left in the inventory after the recipe is used. At each index, the remainder item stack in the list should correspond to the original item stack in the inventory.
      Parameters:
      inventory - the input inventory
      Returns:
      the remaining stacks to be left in the inventory after the recipe is used
      Implementation Requirements:
      The default implementation returns a list of the same size as the inventory. At each index, the list contains the remainder of the item stack at the same index in the inventory, or is empty if the stack has no remainder.
      Mappings:
      Namespace Name Mixin selector
      named getRemainder Lnet/minecraft/recipe/Recipe;getRemainder(Lnet/minecraft/inventory/Inventory;)Lnet/minecraft/util/collection/DefaultedList;
      intermediary method_8111 Lnet/minecraft/class_1860;method_8111(Lnet/minecraft/class_1263;)Lnet/minecraft/class_2371;
      official a Lcyw;a(Lbqo;)Ljr;
    • getIngredients

      default DefaultedList<Ingredient> getIngredients()
      Returns the ingredients accepted as inputs for this recipe. Used by the recipe book when displaying a ghost form of this recipe on the crafting grid as well as for previewing the possible inputs in the book itself.
      Returns:
      the ingredients accepted as inputs for this recipe
      Mappings:
      Namespace Name Mixin selector
      named getIngredients Lnet/minecraft/recipe/Recipe;getIngredients()Lnet/minecraft/util/collection/DefaultedList;
      intermediary method_8117 Lnet/minecraft/class_1860;method_8117()Lnet/minecraft/class_2371;
      official a Lcyw;a()Ljr;
    • isIgnoredInRecipeBook

      default boolean isIgnoredInRecipeBook()
      Returns whether this recipe is ignored by the recipe book. If a recipe is ignored by the recipe book, it will be never displayed. In addition, it won't be restricted by the doLimitedCrafting game rule.
      Returns:
      whether this recipe is ignored by the recipe book
      Mappings:
      Namespace Name Mixin selector
      named isIgnoredInRecipeBook Lnet/minecraft/recipe/Recipe;isIgnoredInRecipeBook()Z
      intermediary method_8118 Lnet/minecraft/class_1860;method_8118()Z
      official an_ Lcyw;an_()Z
    • showNotification

      default boolean showNotification()
      Mappings:
      Namespace Name Mixin selector
      named showNotification Lnet/minecraft/recipe/Recipe;showNotification()Z
      intermediary method_49188 Lnet/minecraft/class_1860;method_49188()Z
      official h Lcyw;h()Z
    • getGroup

      default String getGroup()
      Returns a group this recipe belongs in, or an empty string. This is only used by the recipe book.

      The group string is arbitrary, and is not rendered anywhere; in the recipe book, recipes with the same group will belong to the same cell in the grid of recipes. If the string is empty, this recipe will belong to its own cell.

      Returns:
      a group this recipe belongs in, or an empty string
      Mappings:
      Namespace Name Mixin selector
      named getGroup Lnet/minecraft/recipe/Recipe;getGroup()Ljava/lang/String;
      intermediary method_8112 Lnet/minecraft/class_1860;method_8112()Ljava/lang/String;
      official c Lcyw;c()Ljava/lang/String;
    • createIcon

      default ItemStack createIcon()
      Returns an item rendered on the top left of the output preview on the recipe toast when a new recipe is unlocked. This can be interpreted as a catalyst for the recipe.
      Returns:
      an item rendered on the top left of the output preview on the recipe toast when a new recipe is unlocked
      Mappings:
      Namespace Name Mixin selector
      named createIcon Lnet/minecraft/recipe/Recipe;createIcon()Lnet/minecraft/item/ItemStack;
      intermediary method_17447 Lnet/minecraft/class_1860;method_17447()Lnet/minecraft/class_1799;
      official g Lcyw;g()Lcuq;
    • getSerializer

      RecipeSerializer<?> getSerializer()
      Returns the serializer associated with this recipe.
      Returns:
      the serializer associated with this recipe
      Mappings:
      Namespace Name Mixin selector
      named getSerializer Lnet/minecraft/recipe/Recipe;getSerializer()Lnet/minecraft/recipe/RecipeSerializer;
      intermediary method_8119 Lnet/minecraft/class_1860;method_8119()Lnet/minecraft/class_1865;
      official ao_ Lcyw;ao_()Lcza;
    • getType

      RecipeType<?> getType()
      Returns the type of this recipe.

      The type in the recipe JSON format is the serializer instead.

      Returns:
      the type of this recipe
      Mappings:
      Namespace Name Mixin selector
      named getType Lnet/minecraft/recipe/Recipe;getType()Lnet/minecraft/recipe/RecipeType;
      intermediary method_17716 Lnet/minecraft/class_1860;method_17716()Lnet/minecraft/class_3956;
      official e Lcyw;e()Lczb;
    • isEmpty

      default boolean isEmpty()
      Returns whether this recipe has no ingredient or has any empty ingredient. The recipe book uses this to ignore recipes for display.
      Returns:
      whether this recipe has no ingredient or has any empty ingredient
      Mappings:
      Namespace Name Mixin selector
      named isEmpty Lnet/minecraft/recipe/Recipe;isEmpty()Z
      intermediary method_31584 Lnet/minecraft/class_1860;method_31584()Z
      official i Lcyw;i()Z