# ICustomRecipesManager > Manages custom crafting recipes. `gg.lode.observerapi.api.manager` --- ## Signature ```java public interface ICustomRecipesManager ``` --- ## Methods ### recipesAdded ```java Map<NamespacedKey, Recipe> recipesAdded() ``` **Returns:** `Map<NamespacedKey, Recipe>` - all registered custom recipes --- ### newEmptyShaped ```java ShapedRecipe newEmptyShaped(String id, ItemStack result) ``` Creates a new empty shaped recipe ready for configuration. | Parameter | Type | Description | |-----------|------|-------------| | `id` | `String` | The recipe identifier | | `result` | `ItemStack` | The result item | **Returns:** `ShapedRecipe` - the new shaped recipe --- ### newEmptyShapeless ```java ShapelessRecipe newEmptyShapeless(String id, ItemStack result) ``` Creates a new empty shapeless recipe ready for configuration. | Parameter | Type | Description | |-----------|------|-------------| | `id` | `String` | The recipe identifier | | `result` | `ItemStack` | The result item | **Returns:** `ShapelessRecipe` - the new shapeless recipe --- ### add (ShapedRecipe) ```java void add(ShapedRecipe recipe) throws RecipeAddException ``` Registers a shaped recipe. | Parameter | Type | Description | |-----------|------|-------------| | `recipe` | `ShapedRecipe` | The shaped recipe to register | **Throws:** [[RecipeAddException]] - if the recipe could not be added --- ### add (ShapelessRecipe) ```java void add(ShapelessRecipe recipe) throws RecipeAddException ``` Registers a shapeless recipe. | Parameter | Type | Description | |-----------|------|-------------| | `recipe` | `ShapelessRecipe` | The shapeless recipe to register | **Throws:** [[RecipeAddException]] - if the recipe could not be added --- ### remove ```java void remove(String id) ``` Removes a custom recipe by ID. | Parameter | Type | Description | |-----------|------|-------------| | `id` | `String` | The recipe identifier to remove | --- ### get ```java @Nullable Recipe get(String id) ``` | Parameter | Type | Description | |-----------|------|-------------| | `id` | `String` | The recipe identifier | **Returns:** `@Nullable Recipe` - the recipe, or `null` if not found --- ### reload ```java void reload() ``` Reloads recipes from storage. --- ### save ```java void save() ``` Persists recipes to storage. --- ## Related Pages - [[RecipeAddException]] - [[PlayerCraftRecipeEvent]]