# 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]]