Line 1: |
Line 1: |
− | Recipes can be generated by creating an extension of Minecraft's <code>RecipeProvider</code> class. From there, recipes can be registered by overriding <code>RecipeProvider#registerRecipes</code>. | + | Recipes can be generated by creating an extension of Minecraft's <code>RecipeProvider</code> class. From there, recipes can be registered by overriding <code>RecipeProvider#buildCraftingRecipes</code>. |
| | | |
| {{Colored box|title=Info|content=Remove the <code>super</code> call within the method. Otherwise, you will generate all recipes from Minecraft as well.}} | | {{Colored box|title=Info|content=Remove the <code>super</code> call within the method. Otherwise, you will generate all recipes from Minecraft as well.}} |
Line 5: |
Line 5: |
| == Recipe Builders == | | == Recipe Builders == |
| | | |
− | All recipes need to be formatted as an <code>IFinishedRecipe</code>. Each vanilla recipe has a static constructor builder that can be used to create a finished recipe. These can be built by passing the required parameters and then calling <code><nowiki>#build</nowiki></code>. | + | All recipes need to be formatted as an <code>FinishedRecipe</code>. Each vanilla recipe has a static constructor builder that can be used to create a finished recipe. These can be built by passing the required parameters and then calling <code><nowiki>#save</nowiki></code>. |
| | | |
− | {{Colored box|title=important|content=All recipes must have a different path. If two recipes have the same result, use <code><nowiki>#build(Consumer<IFinishedRecipe>, ResourceLocation)</nowiki></code> instead. This will allow you to specify a different name for the recipe such that it will not override the other.}} | + | {{Colored box|title=important|content=All recipes must have a different path. If two recipes have the same result, use <code><nowiki>#build(Consumer<FinishedRecipe>, ResourceLocation)</nowiki></code> instead. This will allow you to specify a different name for the recipe such that it will not override the other.}} |
| | | |
− | There are six vanilla recipe builders: <code>ShapedRecipeBuilder</code> for shaped recipes, <code>ShapelessRecipeBuilder</code> for shapeless recipes, <code>CookingRecipeBuilder</code> for furnace type recipes, <code>CustomRecipeBuilder</code> for nondeterministic logic, <code>SingleItemRecipeBuilder</code> for stonecutting recipes, and <code>SmithingRecipeBuilder</code> for smithing recipes. | + | There are six vanilla recipe builders: <code>ShapedRecipeBuilder</code> for shaped recipes, <code>ShapelessRecipeBuilder</code> for shapeless recipes, <code>SimpleCookingRecipeBuilder</code> for furnace type recipes, <code>SpecialRecipeBuilder</code> for nondeterministic logic, <code>SingleItemRecipeBuilder</code> for stonecutting recipes, and <code>UpgradeRecipeBuilder</code> for smithing recipes. |
| | | |
− | For any recipe to be valid, a criterion must be met to obtain the recipe within the recipe book. This can be attached via <code><nowiki>#addCriterion</nowiki></code>. The <code>RecipeProvider</code> class has some basic criteria creators to check whether a player's inventory has a certain item or whether a player has entered into a specific block. | + | For any recipe to be valid, a criterion must be met to obtain the recipe within the recipe book. This can be attached via <code><nowiki>#unlocks</nowiki></code>. The <code>RecipeProvider</code> class has some basic criteria creators to check whether a player's inventory has a certain item or whether a player has entered into a specific block. |
| | | |
| == <code>ConditionalRecipe</code> == | | == <code>ConditionalRecipe</code> == |