Class RecipeManager

All Implemented Interfaces:
ResourceReloader

public class RecipeManager extends JsonDataLoader
A recipe manager allows easier use of recipes, such as finding matches and remainders. It is also integrated with a recipe loader, which loads recipes from data packs' JSON files.
Mappings:
Namespace Name
official cml
intermediary net/minecraft/class_1863
named net/minecraft/recipe/RecipeManager
  • Field Details

    • GSON

      private static final Gson GSON
      Mappings:
      Namespace Name Mixin selector
      official a Lcml;a:Lcom/google/gson/Gson;
      intermediary field_19359 Lnet/minecraft/class_1863;field_19359:Lcom/google/gson/Gson;
      named GSON Lnet/minecraft/recipe/RecipeManager;GSON:Lcom/google/gson/Gson;
    • LOGGER

      private static final Logger LOGGER
      Mappings:
      Namespace Name Mixin selector
      official b Lcml;b:Lorg/slf4j/Logger;
      intermediary field_9027 Lnet/minecraft/class_1863;field_9027:Lorg/slf4j/Logger;
      named LOGGER Lnet/minecraft/recipe/RecipeManager;LOGGER:Lorg/slf4j/Logger;
    • recipes

      private Map<RecipeType<?>,Map<Identifier,RecipeEntry<?>>> recipes
      Mappings:
      Namespace Name Mixin selector
      official c Lcml;c:Ljava/util/Map;
      intermediary field_9023 Lnet/minecraft/class_1863;field_9023:Ljava/util/Map;
      named recipes Lnet/minecraft/recipe/RecipeManager;recipes:Ljava/util/Map;
    • recipesById

      private Map<Identifier,RecipeEntry<?>> recipesById
      Mappings:
      Namespace Name Mixin selector
      official d Lcml;d:Ljava/util/Map;
      intermediary field_36308 Lnet/minecraft/class_1863;field_36308:Ljava/util/Map;
      named recipesById Lnet/minecraft/recipe/RecipeManager;recipesById:Ljava/util/Map;
    • errored

      private boolean errored
      This isn't quite indicating an errored state; its value is only set to false and is never true, and isn't used anywhere.
      Mappings:
      Namespace Name Mixin selector
      official e Lcml;e:Z
      intermediary field_9024 Lnet/minecraft/class_1863;field_9024:Z
      named errored Lnet/minecraft/recipe/RecipeManager;errored:Z
  • Constructor Details

    • RecipeManager

      public RecipeManager()
  • Method Details

    • apply

      protected void apply(Map<Identifier,JsonElement> map, ResourceManager resourceManager, Profiler profiler)
      Description copied from class: SinglePreparationResourceReloader
      Handles the prepared intermediate object.

      This method is called in the apply executor, or the game engine, in a reload.

      Specified by:
      apply in class SinglePreparationResourceReloader<Map<Identifier,JsonElement>>
      Parameters:
      map - the prepared object
      resourceManager - the resource manager
      profiler - the apply profiler
      Mappings:
      Namespace Name Mixin selector
      official a Lcml;a(Ljava/util/Map;Lant;Lbdp;)V
      intermediary method_20705 Lnet/minecraft/class_1863;method_20705(Ljava/util/Map;Lnet/minecraft/class_3300;Lnet/minecraft/class_3695;)V
      named apply Lnet/minecraft/recipe/RecipeManager;apply(Ljava/util/Map;Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/util/profiler/Profiler;)V
    • isErrored

      public boolean isErrored()
      Returns the errored field. This is unused in vanilla and will only return false without mods.
      Returns:
      the errored field
      Mappings:
      Namespace Name Mixin selector
      official a Lcml;a()Z
      intermediary method_35227 Lnet/minecraft/class_1863;method_35227()Z
      named isErrored Lnet/minecraft/recipe/RecipeManager;isErrored()Z
    • getFirstMatch

      public <C extends Inventory, T extends Recipe<C>> Optional<RecipeEntry<T>> getFirstMatch(RecipeType<T> type, C inventory, World world)
      Returns a recipe of the given type that match the given inventory and world.

      If there are multiple matching recipes, the result is arbitrary, but this method will return the same result unless the recipes in this manager are updated.

      Parameters:
      type - the desired recipe type
      inventory - the input inventory
      world - the input world
      Returns:
      a recipe of the given type that match the given inventory and world
      Mappings:
      Namespace Name Mixin selector
      official a Lcml;a(Lcmn;Lbgr;Lcpv;)Ljava/util/Optional;
      intermediary method_8132 Lnet/minecraft/class_1863;method_8132(Lnet/minecraft/class_3956;Lnet/minecraft/class_1263;Lnet/minecraft/class_1937;)Ljava/util/Optional;
      named getFirstMatch Lnet/minecraft/recipe/RecipeManager;getFirstMatch(Lnet/minecraft/recipe/RecipeType;Lnet/minecraft/inventory/Inventory;Lnet/minecraft/world/World;)Ljava/util/Optional;
    • getFirstMatch

      public <C extends Inventory, T extends Recipe<C>> Optional<com.mojang.datafixers.util.Pair<Identifier,RecipeEntry<T>>> getFirstMatch(RecipeType<T> type, C inventory, World world, @Nullable @Nullable Identifier id)
      Mappings:
      Namespace Name Mixin selector
      official a Lcml;a(Lcmn;Lbgr;Lcpv;Laew;)Ljava/util/Optional;
      intermediary method_42299 Lnet/minecraft/class_1863;method_42299(Lnet/minecraft/class_3956;Lnet/minecraft/class_1263;Lnet/minecraft/class_1937;Lnet/minecraft/class_2960;)Ljava/util/Optional;
      named getFirstMatch Lnet/minecraft/recipe/RecipeManager;getFirstMatch(Lnet/minecraft/recipe/RecipeType;Lnet/minecraft/inventory/Inventory;Lnet/minecraft/world/World;Lnet/minecraft/util/Identifier;)Ljava/util/Optional;
    • listAllOfType

      public <C extends Inventory, T extends Recipe<C>> List<RecipeEntry<T>> listAllOfType(RecipeType<T> type)
      Creates a list of all recipes of the given type. The list has an arbitrary order.

      This list does not update with this manager. Modifications to the returned list do not affect this manager.

      Parameters:
      type - the desired recipe type
      Returns:
      the created list of recipes of the given type
      Mappings:
      Namespace Name Mixin selector
      official a Lcml;a(Lcmn;)Ljava/util/List;
      intermediary method_30027 Lnet/minecraft/class_1863;method_30027(Lnet/minecraft/class_3956;)Ljava/util/List;
      named listAllOfType Lnet/minecraft/recipe/RecipeManager;listAllOfType(Lnet/minecraft/recipe/RecipeType;)Ljava/util/List;
    • getAllMatches

      public <C extends Inventory, T extends Recipe<C>> List<RecipeEntry<T>> getAllMatches(RecipeType<T> type, C inventory, World world)
      Creates a list of all recipes of the given type that match the given inventory and world. The list is ordered by the translation key of the output item stack of each recipe.

      This list does not update with this manager. Modifications to the returned list do not affect this manager.

      Parameters:
      type - the desired recipe type
      inventory - the input inventory
      world - the input world
      Returns:
      the created list of matching recipes
      Mappings:
      Namespace Name Mixin selector
      official b Lcml;b(Lcmn;Lbgr;Lcpv;)Ljava/util/List;
      intermediary method_17877 Lnet/minecraft/class_1863;method_17877(Lnet/minecraft/class_3956;Lnet/minecraft/class_1263;Lnet/minecraft/class_1937;)Ljava/util/List;
      named getAllMatches Lnet/minecraft/recipe/RecipeManager;getAllMatches(Lnet/minecraft/recipe/RecipeType;Lnet/minecraft/inventory/Inventory;Lnet/minecraft/world/World;)Ljava/util/List;
    • getAllOfType

      private <C extends Inventory, T extends Recipe<C>> Map<Identifier,RecipeEntry<T>> getAllOfType(RecipeType<T> type)
      Mappings:
      Namespace Name Mixin selector
      official c Lcml;c(Lcmn;)Ljava/util/Map;
      intermediary method_17717 Lnet/minecraft/class_1863;method_17717(Lnet/minecraft/class_3956;)Ljava/util/Map;
      named getAllOfType Lnet/minecraft/recipe/RecipeManager;getAllOfType(Lnet/minecraft/recipe/RecipeType;)Ljava/util/Map;
    • getRemainingStacks

      public <C extends Inventory, T extends Recipe<C>> DefaultedList<ItemStack> getRemainingStacks(RecipeType<T> type, C inventory, World world)
      Returns the remainder of a recipe of the given type that match the given inventory and world, or a shallow copy of the inventory.

      This retrieves the remainders of getFirstMatch(type, inventory, world) if the match exists.

      Parameters:
      type - the desired recipe type
      inventory - the input inventory
      world - the input world
      Returns:
      the remainder of a recipe of the given type that match the given inventory and world, or a shallow copy of the inventory
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official c Lcml;c(Lcmn;Lbgr;Lcpv;)Lhn;
      intermediary method_8128 Lnet/minecraft/class_1863;method_8128(Lnet/minecraft/class_3956;Lnet/minecraft/class_1263;Lnet/minecraft/class_1937;)Lnet/minecraft/class_2371;
      named getRemainingStacks Lnet/minecraft/recipe/RecipeManager;getRemainingStacks(Lnet/minecraft/recipe/RecipeType;Lnet/minecraft/inventory/Inventory;Lnet/minecraft/world/World;)Lnet/minecraft/util/collection/DefaultedList;
    • get

      public Optional<RecipeEntry<?>> get(Identifier id)
      Returns a recipe with the given id, or empty if there is no such recipe.
      Parameters:
      id - the ID of the desired recipe
      Returns:
      a recipe with the given id, or empty if there is no such recipe
      Mappings:
      Namespace Name Mixin selector
      official a Lcml;a(Laew;)Ljava/util/Optional;
      intermediary method_8130 Lnet/minecraft/class_1863;method_8130(Lnet/minecraft/class_2960;)Ljava/util/Optional;
      named get Lnet/minecraft/recipe/RecipeManager;get(Lnet/minecraft/util/Identifier;)Ljava/util/Optional;
    • values

      public Collection<RecipeEntry<?>> values()
      Returns all recipes in this manager.

      The returned set does not update with the manager. Modifications to the returned set does not affect this manager.

      Returns:
      all recipes in this manager
      Mappings:
      Namespace Name Mixin selector
      official b Lcml;b()Ljava/util/Collection;
      intermediary method_8126 Lnet/minecraft/class_1863;method_8126()Ljava/util/Collection;
      named values Lnet/minecraft/recipe/RecipeManager;values()Ljava/util/Collection;
    • keys

      public Stream<Identifier> keys()
      Returns a stream of IDs of recipes in this manager.

      The returned stream does not update after setRecipes(Iterable) call.

      Returns:
      a stream of IDs of recipes in this manager
      API Note:
      This is used by the command sources to suggest recipe IDs for command arguments.
      Mappings:
      Namespace Name Mixin selector
      official d Lcml;d()Ljava/util/stream/Stream;
      intermediary method_8127 Lnet/minecraft/class_1863;method_8127()Ljava/util/stream/Stream;
      named keys Lnet/minecraft/recipe/RecipeManager;keys()Ljava/util/stream/Stream;
    • deserialize

      protected static RecipeEntry<?> deserialize(Identifier id, JsonObject json)
      Reads a recipe from a JSON object.
      Parameters:
      id - the recipe's ID
      json - the recipe JSON
      Returns:
      the read recipe
      Throws:
      JsonParseException - if the recipe JSON is invalid
      See Also:
      Implementation Note:
      Even though a recipe's serializer is stored in a type field in the JSON format and referred so in this method, its registry has key minecraft:root/minecraft:recipe_serializer and is thus named.
      Mappings:
      Namespace Name Mixin selector
      official a Lcml;a(Laew;Lcom/google/gson/JsonObject;)Lcmk;
      intermediary method_17720 Lnet/minecraft/class_1863;method_17720(Lnet/minecraft/class_2960;Lcom/google/gson/JsonObject;)Lnet/minecraft/class_8786;
      named deserialize Lnet/minecraft/recipe/RecipeManager;deserialize(Lnet/minecraft/util/Identifier;Lcom/google/gson/JsonObject;)Lnet/minecraft/recipe/RecipeEntry;
    • setRecipes

      public void setRecipes(Iterable<RecipeEntry<?>> recipes)
      Sets the recipes for this recipe manager. Used by the client to set the server side recipes.
      Parameters:
      recipes - the recipes to set
      Mappings:
      Namespace Name Mixin selector
      official a Lcml;a(Ljava/lang/Iterable;)V
      intermediary method_20702 Lnet/minecraft/class_1863;method_20702(Ljava/lang/Iterable;)V
      named setRecipes Lnet/minecraft/recipe/RecipeManager;setRecipes(Ljava/lang/Iterable;)V
    • createCachedMatchGetter

      public static <C extends Inventory, T extends Recipe<C>> RecipeManager.MatchGetter<C,T> createCachedMatchGetter(RecipeType<T> type)
      Creates a cached match getter. This is optimized for getting matches of the same recipe repeatedly, such as furnaces.
      Mappings:
      Namespace Name Mixin selector
      official b Lcml;b(Lcmn;)Lcml$a;
      intermediary method_42302 Lnet/minecraft/class_1863;method_42302(Lnet/minecraft/class_3956;)Lnet/minecraft/class_1863$class_7266;
      named createCachedMatchGetter Lnet/minecraft/recipe/RecipeManager;createCachedMatchGetter(Lnet/minecraft/recipe/RecipeType;)Lnet/minecraft/recipe/RecipeManager$MatchGetter;