RecipeBook Plugin - Complete Wiki
RecipeBook is a powerful and flexible Minecraft plugin for managing custom recipes, crafting menus, and player storage. It supports multiple crafting types, integrates with popular item plugins, and provides advanced menu configuration for an enhanced gameplay experience.
Table of Contents
- Features & Overview
- Installation & Setup
- Recipe Types vs Fake Recipes
- Configuration Guide
- Recipe Types & Examples
- Menu Configuration
- Player Storage System
- Plugin Integration
- Commands & Permissions
- Troubleshooting
- Support & Contact
Features & Overview
Supported Recipe Types:
- Shaped Recipes - Traditional crafting table patterns
- Shapeless Recipes - Any arrangement crafting
- Furnace Recipes - Smelting with custom experience and time
- Blast Furnace Recipes - Fast smelting for ores and armor
- Smoker Recipes - Food cooking with custom parameters
- Campfire Recipes - Outdoor cooking mechanics
- Stonecutter Recipes - Stone cutting with custom ratios
- Smithing Table Recipes - Advanced item upgrading with templates
Advanced Features:
- Asynchronous Processing - Smooth server performance during crafting
- RAM Caching - Lightning-fast recipe lookups
- Batch Processing - Efficient data handling
- Multi-Platform Logging - Console, file, Discord, and JSON formats
- Discord Integration - Real-time crafting notifications via webhooks
- Player Storage System - Secure item management during crafting
- Queue Management - Organized crafting queues per menu type
- Permission System - Granular access control
Plugin Integrations:
- Nexo - Custom items and blocks
- ItemsAdder - Advanced custom items
- Oraxen - Resource pack items
- ZItems - Custom item management
- ZHead - Player head management
- PlaceholderAPI - Dynamic placeholder support
⚡ Installation & Setup
Requirements:
- Minecraft server (Spigot/Paper/Purpur recommended)
- Java 21 or higher
- Optional: Database (MySQL) for multi-server setups
Installation Steps:
- Download RecipeBook.jar and place it in your server's plugins/ folder
- Start your server to generate default configuration files
- Stop your server to edit configurations safely
- Configure config.yml in plugins/RecipeBook/
- Add your recipes in the appropriate recipe files
- Customize menus in the menu configuration files
- Start your server or use /recipebook_zmenu reload
All crafting types:
- CRAFTING_TABLE - Crafting Table
- STONECUTTER - Stonecutter
- SMOKER - Smoker
- SMITHING_TABLE - Smithing Table
- FURNACE - Furnace
- CAMPFIRE - Campfire
- BLAST_FURNACE - Blast Furnace
Generated File Structure:
Code (Text):
plugins/
└── RecipeBook/
├── config.yml # Main configuration
├── menus/ # Menu configurations
│ ├── crafting_table.yml
│ ├── furnace.yml
│ └── ...
├── fake_recipes/
│ ├── shaped.yml
│ ├── shapeless.yml
│ ├── furnace.yml
│ └── ...
├── recipes/ # Recipe definitions
│ ├── shaped.yml
│ ├── shapeless.yml
│ ├── furnace.yml
│ └── ...
└── logs/ # Log files (if enabled)
Recipe Types vs Fake Recipes
Understanding the difference between the
recipes/ and
fake_recipes/ folders is crucial for proper plugin functionality.
Recipes Folder (recipes/):
- Vanilla Integration: These recipes work in both vanilla Minecraft inventories AND RecipeBook menus
- Crafting Tables: Players can craft these items using regular crafting tables
- Furnaces/Smokers/etc: Items can be smelted in vanilla furnaces, smokers, blast furnaces, etc.
- Server Registration: These recipes are registered with the Minecraft server
- Recipe Discovery: Players will see these recipes in their vanilla recipe book
- Full Compatibility: Works with other plugins that interact with vanilla recipes
Example - Regular Recipe:
Code (YAML):
# This recipe works in BOTH vanilla crafting tables AND RecipeBook menus
custom_sword:
result:
item
:
"diamond_sword"
amount
: 1
ingredients:
D:
item
:
"diamond"
amount
: 1
pattern
:
-
" D "
-
" D "
-
" S "
Fake Recipes Folder (fake_recipes/):
- Menu-Only: These recipes ONLY work within RecipeBook menus
- No Vanilla Access: Cannot be crafted using vanilla crafting tables or furnaces
- Custom Control: Perfect for special items that should only be crafted through your custom system
- Advanced Features: Can use crafting delays, special requirements, and custom animations
- Hidden Recipes: Won't appear in vanilla recipe books or discovery systems
- Menu-Specific: Only accessible through the RecipeBook menu interface
Example - Fake Recipe:
Code (YAML):
# This recipe ONLY works in RecipeBook menus, not vanilla crafting
legendary_weapon:
result:
item
:
"itemsadder:legendary_sword"
amount
: 1
ingredients:
L:
item
:
"itemsadder:legendary_crystal"
amount
: 1
D:
item
:
"diamond_sword"
amount
: 1
pattern
:
-
" L "
-
" D "
-
" L "
When to Use Each Type:
Use recipes/ when:
- You want vanilla compatibility
- Players should be able to craft anywhere
- Integration with other recipe plugins is needed
- You want the recipe to appear in vanilla recipe books
Use fake_recipes/ when:
- You want exclusive menu-based crafting
- Creating special/rare items that need controlled access
- Using custom items that vanilla can't handle properly
- Implementing crafting delays or special requirements
- Preventing players from mass-producing items outside your system
Important Notes:
- Recipe IDs must be unique across BOTH folders
- Fake recipes offer more control but less convenience
- Regular recipes provide better player experience for common items
- Both types use identical YAML syntax and configuration
- You can mix both types in your server setup
⚙️ Configuration Guide
Each recipe type has its own YAML file in the
recipes/ folder. Every recipe must have a unique ID across all recipe types.
Main Configuration (config.yml):
Performance Settings:
Code (YAML):
# Debug and performance options
enable-debug
: false
# Enable detailed logging
enable-debug-time
: false
# Show execution times
use-ram-to-store-recipes
: true
# Cache recipes in RAM (recommended)
use-async-crafting
: true
# Use async processing (recommended)
batch-task
: 10
# Batch save interval (seconds)
Database Configuration:
Code (YAML):
# Storage configuration
storage-type
: SQLITE
# SQLITE (local) or MYSQL (remote)
database-configuration:
table-prefix
:
"recipebook_"
# Database table prefix
host
: 192.168.10.10
# MySQL host (if using MYSQL)
port
: 3306
# MySQL port
user
: homestead
# MySQL username
password
: 'secret'
# MySQL password
database
: recipebook
# MySQL database name
debug
: false
# SQL debug mode
Logging Configuration:
Code (YAML):
# Available log types: CONSOLE, JSON, DISCORD, LOGFILE
craft-log-types
:
- CONSOLE
# Server console output
- LOGFILE
# File-based logging
- DISCORD
# Discord webhook (optional)
- JSON
# JSON format logs (optional)
Discord Integration:
Code (YAML):
discord-webhook:
url
:
"https://discord.com/api/webhooks/YOUR_WEBHOOK_URL"
avatar-url
:
""
# Optional webhook avatar
username
:
"RecipeBook"
# Optional webhook username
component
:
[
{
"type":10,
"content":
"Player `%player%` crafted %log_items%"
}
]
Recipe Types & Examples
Each recipe type has its own YAML file in the
recipes/ or
fake_recipes/ folder. Every recipe must have a unique ID across all recipe types.
1. Shaped Recipes (shaped.yml):
Perfect for traditional crafting table patterns.
Code (YAML):
diamond_sword_recipe:
result:
item
:
"diamond_sword"
# Simplified vanilla item format
amount
: 1
ingredients:
D:
item
:
"diamond"
# No "minecraft:" prefix needed
amount
: 1
S:
item
:
"stick"
# Simplified format
amount
: 1
pattern
:
-
" D "
-
" D "
-
" S "
custom_block_recipe:
result:
item
:
"nexo:custom_block"
# Custom items need full format
amount
: 4
ingredients:
A:
item
:
"stone"
# Vanilla items simplified
amount
: 2
B:
item
:
"redstone"
# Simplified format
pattern
:
-
"ABA"
-
"BAB"
-
"ABA"
2. Shapeless Recipes (shapeless.yml):
For recipes where arrangement doesn't matter.
Code (YAML):
magic_dust_recipe:
result:
item
:
"itemsadder:magic_dust"
amount
: 3
ingredients:
A:
item
:
"minecraft:glowstone_dust"
amount
: 2
B:
item
:
"minecraft:redstone"
amount
: 1
C:
item
:
"minecraft:gunpowder"
amount
: 1
simple_conversion:
result:
item
:
"iron_ingot"
# Simplified vanilla format
amount
: 1
ingredients:
A:
item
:
"iron_nugget"
# No minecraft: prefix needed
amount
: 9
3. Furnace Recipes (furnace.yml):
Custom smelting with experience and cooking time control.
Code (YAML):
custom_ore_smelting:
result:
item
:
"oraxen:custom_ingot"
input:
item
:
"oraxen:custom_ore"
experience
: 1.5
# Experience awarded
cooking_time
: 400
# Time in ticks (20 ticks = 1 second)
fast_cobblestone:
result:
item
:
"stone"
# Simplified format
input:
item
:
"cobblestone"
# No minecraft: prefix
experience
: 0.1
cooking_time
: 100
# Faster than vanilla
4. Blast Furnace Recipes (blasting.yml):
For ores and armor processing.
Code (YAML):
super_fast_iron:
result:
item
:
"iron_ingot"
# Simplified format
input:
item
:
"iron_ore"
# No minecraft: prefix
experience
: 0.7
cooking_time
: 50
# Very fast smelting
custom_alloy:
result:
item
:
"zitems:steel_ingot"
input:
item
:
"zitems:steel_ore"
experience
: 2.0
cooking_time
: 200
5. Smoker Recipes (smoking.yml):
Specialized for food items.
Code (YAML):
gourmet_steak:
result:
item
:
"itemsadder:gourmet_steak"
input:
item
:
"beef"
# Simplified vanilla format
experience
: 1.0
cooking_time
: 80
exotic_fish:
result:
item
:
"nexo:cooked_exotic_fish"
input:
item
:
"nexo:exotic_fish"
experience
: 0.8
cooking_time
: 120
6. Campfire Recipes (campfire.yml):
Outdoor cooking mechanics.
Code (YAML):
campfire_bread:
result:
item
:
"bread"
# Simplified format
input:
item
:
"wheat"
# No minecraft: prefix
experience
: 0.3
cooking_time
: 600
# Slower than furnace
survival_meal:
result:
item
:
"itemsadder:survival_ration"
input:
item
:
"itemsadder:raw_ingredients"
experience
: 0.5
cooking_time
: 800
7. Stonecutter Recipes (stonecutting.yml):
Efficient stone processing with custom ratios.
Code (YAML):
efficient_bricks:
result:
item
:
"brick"
# Simplified format
amount
: 6
# Better ratio than vanilla
input:
item
:
"clay_ball"
# No minecraft: prefix
custom_stone_cutting:
result:
item
:
"oraxen:polished_custom_stone"
amount
: 2
input:
item
:
"oraxen:rough_custom_stone"
8. Smithing Table Recipes (smithing.yml):
Advanced upgrading with templates and special options.
Code (YAML):
netherite_custom_sword:
copy_trim
: false
# Don't copy armor trims
keep_durability
: true
# Preserve item durability
copy_pdc
: false
# Copy PersistentDataContainer
copy_enchantments
: true
# Transfer enchantments
result:
item
:
"itemsadder:netherite_custom_sword"
template:
item
:
"netherite_upgrade_smithing_template"
# Simplified format
base:
item
:
"itemsadder:diamond_custom_sword"
addition:
item
:
"netherite_ingot"
# No minecraft: prefix
armor_upgrade:
copy_trim
: true
# Preserve armor trims
keep_durability
: true
copy_pdc
: true
copy_enchantments
: true
result:
item
:
"nexo:legendary_chestplate"
template:
item
:
"nexo:legendary_template"
base:
item
:
"diamond_chestplate"
# Simplified vanilla format
addition:
item
:
"nexo:legendary_crystal"
️ Menu Configuration
Menu configurations are stored in the
menus/ folder and follow zMenu syntax with RecipeBook-specific components.
Essential Menu Components:
1. Output Slot Configuration:
Shows the result item and handles crafting.
Code (YAML):
output_slot:
is-permanent
: true
item:
material
:
"base64:%recipebook_outputItem%"
amount
:
"%recipebook_outputItemAmount%"
lore
:
-
"&7Click to craft!"
- "&7Craftable
:
&e%recipebook_craftableAmount%"
slot
: 13
actions:
- type
: craft
# Execute crafting
- type
: refresh
# Refresh placeholders
2. Input Slots Configuration:
Required for displaying recipe ingredients.
Code (YAML):
# For crafting table (3x3 grid)
input_slots:
is-permanent
: true
type
: RECIPEBOOK_INPUT_SLOTS
slots
:
[14, 15, 16, 23, 24, 25, 32, 33, 34
]
# For furnace-type recipes (single slot)
furnace_input:
is-permanent
: true
type
: RECIPEBOOK_INPUT_SLOTS
slots
:
[14
]
3. Recipe Item Configuration:
Basic recipe display without crafting capability.
Code (YAML):
stone_recipe:
type
: RECIPEBOOK_ITEM
wiki-type
:
"CRAFTING_TABLE"
# Recipe type to display
slot
: 10
item:
material
:
"STONE"
name
:
"&fStone Recipe"
lore
:
-
"&7View the stone crafting recipe"
4. Advanced Recipe with Direct Crafting:
Allows crafting directly from the menu item.
Code (YAML):
diamond_sword_craft:
type
: RECIPEBOOK_ITEM
wiki-type
:
"CRAFTING_TABLE"
allow-direct-crafting
: true
# Enable direct crafting
crafting-time
: 3.0
# Crafting delay (seconds)
slot
: 12
item:
material
:
"DIAMOND_SWORD"
name
:
"&bDiamond Sword"
lore
:
-
"&7Click to craft instantly!"
- "&7Time
:
&e3.0s"
# Requirement system
craft-requirements:
- type
: placeholder
placeholder
: '
%player_level%'
value
: '10'
action
: SUPERIOR_OR_EQUALS
deny:
- type
: message
messages
:
-
"&cYou need level 10 to craft this item!"
- type
: permission
permission
: 'recipebook.craft.diamond'
deny:
- type
: message
messages
:
-
"&cYou don't have permission to craft this!"
# Action messages
requirement-fail-actions:
- type
: message
messages
:
-
"&cRequirements not met!"
allow-craft-actions:
- type
: message
messages
:
-
"&aSuccessfully crafted %item%!"
deny-craft-actions:
- type
: message
messages
:
-
"&cMissing required materials!"
5. Player Storage Configuration:
Manages crafted items and interrupted crafting sessions.
Code (YAML):
player_storage:
type
: RECIPEBOOK_ITEMS_STORAGE
slots
:
[10-16, 19-25, 28-34, 37-43
]
# Multi-row storage
6. Recipe Navigation Buttons:
For items with multiple crafting methods.
Code (YAML):
previous_recipe:
type
: PREVIOUS
isPermanent
: true
slot
: 48
item:
material
: ARROW
name
:
"&f◀ Previous Recipe"
lore
:
-
"&7View previous crafting method"
else:
item:
material
: GRAY_STAINED_GLASS_PANE
name
:
"&7No previous recipe"
next_recipe:
type
: NEXT
isPermanent
: true
slot
: 50
item:
material
: ARROW
name
:
"&fNext Recipe ▶"
lore
:
-
"&7View next crafting method"
else:
item:
material
: GRAY_STAINED_GLASS_PANE
name
:
"&7No next recipe"
7. Smithing Table Special Slots:
Required for smithing table recipes.
Code (YAML):
template_slot:
isPermanent
: true
type
: RECIPEBOOK_TEMPLATE_SLOT_INPUT
slot
: 12
item:
material
: LIGHT_BLUE_STAINED_GLASS_PANE
name
:
"&bTemplate Slot"
base_slot:
isPermanent
: true
type
: RECIPEBOOK_BASE_SLOT_INPUT
slot
: 13
item:
material
: GREEN_STAINED_GLASS_PANE
name
:
"&aBase Item Slot"
addition_slot:
isPermanent
: true
type
: RECIPEBOOK_ADDITION_SLOT_INPUT
slot
: 14
item:
material
: ORANGE_STAINED_GLASS_PANE
name
:
"&6Addition Slot"
Complete Menu Example:
Code (YAML):
# Example: crafting_table.yml
name
:
"&0Crafting Table"
size
: 54
items
:
# Background decoration
background:
isPermanent
: true
slots
:
[0-8, 36-44, 45-53
]
item:
material
: BLACK_STAINED_GLASS_PANE
name
:
" "
# Recipe output
result:
is-permanent
: true
item:
material
:
"base64:%recipebook_outputItem%"
amount
:
"%recipebook_outputItemAmount%"
lore
:
-
"&7Required materials shown below"
- "&7Craftable amount
:
&e%recipebook_craftableAmount%"
-
""
-
"&aClick to craft!"
slot
: 13
actions:
- type
: craft
- type
: refresh
# Recipe ingredients display
ingredients:
is-permanent
: true
type
: RECIPEBOOK_INPUT_SLOTS
slots
:
[19, 20, 21, 28, 29, 30, 37, 38, 39
]
# Player storage
storage:
type
: RECIPEBOOK_ITEMS_STORAGE
slots
:
[9-12, 14-17
]
# Recipe navigation
previous:
type
: PREVIOUS
isPermanent
: true
slot
: 48
item:
material
: ARROW
name
:
"&f◀ Previous"
else:
item:
material
: GRAY_STAINED_GLASS_PANE
next:
type
: NEXT
isPermanent
: true
slot
: 50
item:
material
: ARROW
name
:
"&fNext ▶"
else:
item:
material
: GRAY_STAINED_GLASS_PANE
Player Storage System
The player storage system securely manages items during crafting processes and provides recovery mechanisms.
How It Works:
- When crafting begins, required materials are temporarily locked
- Finished items are automatically sent to player storage
- If a player disconnects during crafting, ingredients are returned instead of the final product
- Multiple withdrawal options provide flexibility
Storage Interactions:
- Left Click: Withdraw 1 item
- Right Click: Withdraw 1 stack (up to stack limit)
- Shift + Left Click: Withdraw all items of that type
- Shift + Right Click: Clear all items (requires recipebook.zmenu.clear.player.storage permission)
Storage Item Configuration:
Code (YAML):
storage_items_settings:
lore_type
:
"APPEND"
# APPEND or REPLACE existing lore
lore:
- "<gray> + Quantity
: <
#FFA500>%quantity%</#FFA500>"
-
"<gray>[<#FFA500>Left click<gray>] Withdraw one item"
-
"<gray>[<#FFA500>Right click<gray>] Withdraw a stack"
-
"<gray>[<#FFA500>Shift + Left click<gray>] Withdraw all items"
# Additional lore for players with clear permission
clear_lore
:
"<gray>[<#FFA500>Shift + Right click<gray>] Clear all items"
Queue Management:
- Crafting queues are synchronized within menu types
- Example: crafting_table and crafting_table_2 share the same queue
- Items from crafting_table_2 will wait for crafting_table to finish
- This prevents conflicts and ensures proper order
Plugin Integration
RecipeBook seamlessly integrates with popular custom item plugins using specific item format syntax.
Supported Item Formats:
- Vanilla Minecraft: item_id or minecraft:item_id (both work)
- Nexo: nexo:item_id
- ItemsAdder: itemsadder:item_id
- Oraxen: oraxen:item_id
- ZItems: zitems:item_id
- ZHead: zhead:item_id
Integration Examples:
Code (YAML):
# Mixed plugin recipe example
advanced_gear_recipe:
result:
item
:
"nexo:legendary_sword"
# Nexo result
amount
: 1
ingredients:
A:
item
:
"itemsadder:mithril_ingot"
# ItemsAdder ingredient
B:
item
:
"oraxen:dragon_scale"
# Oraxen ingredient
C:
item
:
"diamond"
# Vanilla ingredient (simplified)
pattern
:
-
" A "
-
"CBC"
-
" B "
PlaceholderAPI Integration:
RecipeBook provides extensive placeholders for use with other plugins:
- %recipebook_experience% - Experience from clicked recipe
- %recipebook_cookingTime% - Cooking time of recipe
- %recipebook_canCraftDirectly% - Direct crafting availability
- %recipebook_outputItem% - Base64 encoded result item
- %recipebook_outputItemAmount% - Result item quantity
- %recipebook_craftableAmount% - Maximum craftable with current materials
- %recipebook_pendingItems_<menu_name>% - Items in crafting queue
- %recipebook_pendingTime_<menu_name>% - Queue completion time
- %recipebook_currentCraftItem_<menu_name>% - Currently crafting item
⌨️ Commands & Permissions
Main Command:
/recipebook_zmenu - Opens the main RecipeBook menu
Reload Commands:
- /recipebook_zmenu reload - Reloads everything (config, menus, recipes)
- /recipebook_zmenu reload config - Reloads only configuration
- /recipebook_zmenu reload menus - Reloads only menu configurations
- /recipebook_zmenu reload recipes - Reloads only recipes
Permissions:
- recipebook.zmenu.reload - Access to reload commands
- recipebook.zmenu.clear.player.storage - Clear all storage items with Shift+Right Click
Permission Examples:
Code (Text):
# Grant reload permissions to admins
recipebook.zmenu.reload
# Allow clearing storage (potentially destructive)
recipebook.zmenu.clear.player.storage
Troubleshooting
Common Issues & Solutions:
1. Recipes Not Loading:
- Check YAML syntax with an online validator
- Ensure recipe IDs are unique across all recipe types
- Verify item names use correct format (minecraft:item_name)
- Enable debug mode: enable-debug: true
2. Menu Not Displaying Correctly:
- Verify menu YAML syntax
- Check that slot numbers are within menu size (0-53 for size 54)
- Ensure required components are present (output_slot, input_slots)
- Reload menus: /recipebook_zmenu reload menus
3. Integration Plugin Items Not Working:
- Confirm the integration plugin is installed and loaded
- Use correct item format: pluginname:item_id
- Check integration plugin documentation for correct item IDs
- Test with vanilla items first to isolate the issue
4. Database Connection Issues:
- Verify database credentials in config.yml
- Test database connection manually
- Check firewall and port accessibility
- Consider using SQLITE for single-server setups
5. Performance Issues:
- Enable RAM caching: use-ram-to-store-recipes: true
- Enable async crafting: use-async-crafting: true
- Increase batch task interval: batch-task: 15
- Disable unnecessary logging types
6. Discord Webhook Not Working:
- Verify webhook URL is correct and active
- Test webhook manually with curl or online tools
- Check Discord server permissions
- Validate JSON component format at discord.builders
Debug Information:
When reporting issues, please include:
- Server version (Paper/Spigot/etc.)
- Java version
- RecipeBook version
- Integration plugin versions
- Relevant configuration excerpts
- Console error messages
- Steps to reproduce the issue
Log File Locations:
Code (Text):
plugins/RecipeBook/logs/ # RecipeBook logs
logs/latest.log # Server console log
Support & Contact
Getting Help:
For support, bug reports, and feature requests, contact me:
Discord:
kyubi8319