❓ Multiple recepies configuration
🧪 How to Create Custom Recipes
Learn how to create and configure custom recipes using the new Shared.MultipleRecipes system. This flexible system allows you to create multiple unique recipes for a single crafting table without using the visual table generator.
🤔 Why Use Custom Recipes?
The Shared.MultipleRecipes system offers several advantages over the traditional table generator:
Benefits:
- Multiple Recipes Per Table: Add 10, 20, or even more different recipes to a single crafting table
- No Visual Configuration Required: Skip the complex prop positioning and animation setup
- Easy Management: Add, remove, or modify recipes with simple configuration changes
- Mix & Match: Combine different recipe types at the same table
- Quick Setup: Create recipes in minutes instead of hours
- Reusable Tables: Use existing table designs with new recipes
Perfect For:
- Alchemy stations with multiple potion types
- Cooking tables with various food recipes
- Weapon crafting benches with different weapons
- Any scenario where you need recipe variety without visual complexity
Understanding the Structure
The custom recipe system consists of two main parts:
1. Recipe Definition (configs/shared.lua)
Shared.MultipleRecipes = {
["your_recipe_uid"] = {
itemsNeeded = { -- Items required to craft
{ name = "item_name", amount = 2 },
{ name = "another_item", amount = 1 },
},
rewards = { -- Items given after successful craft
{ name = "crafted_item", amount = 1 },
},
tableUid = "herbal_table", -- Visual table reference
},
}2. Table Assignment (configs/server.lua)
Config.Tables = {
{
coords = vec4(x, y, z, heading),
recipeUids = { "your_recipe_uid", "another_recipe" }, -- Assign recipes to table
snapToGround = true,
},
}Creating Your First Custom Recipe
Let's create a simple health potion recipe:
Step 1: Add Recipe to configs/shared.lua
Open configs/shared.lua and find or create the Shared.MultipleRecipes section:
Shared.MultipleRecipes = {
["health_potion_basic"] = {
itemsNeeded = {
{
name = "red_herb",
amount = 3,
},
{
name = "water_bottle",
amount = 1,
},
},
rewards = {
{
name = "health_potion",
amount = 1,
},
},
tableUid = "herbal_table", -- This must match a key in Shared.Recepie
},
}Step 2: Configure Table in configs/server.lua
Add or modify a table to use your new recipe:
Config.Tables = {
{
coords = vec4(250.0, -750.0, 34.0, 90.0), -- Your table position
recipeUids = { "health_potion_basic" }, -- Reference your recipe
snapToGround = true,
},
}Adding Multiple Recipes to One Table
Let's create a complete alchemy station with multiple potion types:
Multiple Recipe Example:
Shared.MultipleRecipes = {
-- Health Potions
["health_potion_small"] = {
itemsNeeded = {
{ name = "red_herb", amount = 2 },
{ name = "water_bottle", amount = 1 },
},
rewards = {
{ name = "health_potion_small", amount = 1 },
},
tableUid = "herbal_table",
},
["health_potion_large"] = {
itemsNeeded = {
{ name = "red_herb", amount = 5 },
{ name = "crystal_shard", amount = 1 },
{ name = "water_bottle", amount = 1 },
},
rewards = {
{ name = "health_potion_large", amount = 1 },
},
tableUid = "herbal_table",
},
-- Mana Potions
["mana_potion_small"] = {
itemsNeeded = {
{ name = "blue_herb", amount = 2 },
{ name = "water_bottle", amount = 1 },
},
rewards = {
{ name = "mana_potion_small", amount = 1 },
},
tableUid = "herbal_table",
},
-- Special Potions
["invisibility_potion"] = {
itemsNeeded = {
{ name = "shadow_essence", amount = 1 },
{ name = "blue_herb", amount = 3 },
{ name = "rare_mushroom", amount = 1 },
{ name = "water_bottle", amount = 1 },
},
rewards = {
{ name = "invisibility_potion", amount = 1 },
},
tableUid = "herbal_table",
},
}Assign All Recipes to One Table:
Config.Tables = {
{
coords = vec4(250.0, -750.0, 34.0, 90.0),
recipeUids = {
"health_potion_small",
"health_potion_large",
"mana_potion_small",
"invisibility_potion"
},
snapToGround = true,
},
}Recipe Configuration Options
Required Fields:
| Field | Description | Example |
|---|---|---|
itemsNeeded | Array of required items | { name = "herb", amount = 2 } |
rewards | Array of items given | { name = "potion", amount = 1 } |
tableUid | Visual table reference | "herbal_table" |
Item Structure:
{
name = "item_identifier", -- Must match your inventory system
amount = 5, -- Quantity required/given
}Available Table UIDs created by us:
Use these tableUid values to reference existing table visuals:
"herbal_table"- Alchemy table with cauldron"spices"- Simple crafting table
Advanced Recipe Examples
Cooking Station Example:
-- Cooking Recipes
["grilled_meat"] = {
itemsNeeded = {
{ name = "raw_meat", amount = 1 },
{ name = "salt", amount = 1 },
},
rewards = {
{ name = "grilled_meat", amount = 1 },
},
tableUid = "cooking_station",
},
["meat_stew"] = {
itemsNeeded = {
{ name = "raw_meat", amount = 2 },
{ name = "potato", amount = 3 },
{ name = "carrot", amount = 2 },
{ name = "water_bottle", amount = 1 },
},
rewards = {
{ name = "meat_stew", amount = 1 },
},
tableUid = "cooking_station",
},Weapon Crafting Example:
-- Weapon Recipes
["iron_sword"] = {
itemsNeeded = {
{ name = "iron_ingot", amount = 3 },
{ name = "wood_handle", amount = 1 },
},
rewards = {
{ name = "iron_sword", amount = 1 },
},
tableUid = "smithing_table",
},
["steel_armor"] = {
itemsNeeded = {
{ name = "steel_ingot", amount = 8 },
{ name = "leather", amount = 4 },
{ name = "cloth", amount = 2 },
},
rewards = {
{ name = "steel_chestplate", amount = 1 },
},
tableUid = "smithing_table",
},Testing Your Recipes
1. Restart the Script
After adding your recipes, restart the resource:
restart your_resource_name2. Test In-Game
- Go to your configured table location
- Ensure you have the required items in inventory
- Interact with the table
- Your custom recipes should appear in the crafting menu
3. Troubleshooting
Recipe Not Showing:
- Check that
recipeUidsin server config matches your recipe names exactly - Verify the table coordinates are correct
- Ensure
tableUidreferences an existing table inShared.Recepie
Items Not Working:
- Confirm item names match your inventory system exactly
- Check item amounts are correct
- Verify players have the required items
Best Practices
Recipe Organization:
Shared.MultipleRecipes = {
-- Group similar recipes together
-- === HEALTH POTIONS ===
["health_small"] = { ... },
["health_medium"] = { ... },
["health_large"] = { ... },
-- === MANA POTIONS ===
["mana_small"] = { ... },
["mana_medium"] = { ... },
-- === FOOD RECIPES ===
["bread"] = { ... },
["soup"] = { ... },
}Naming Convention:
- Use descriptive, unique recipe UIDs
- Include category/type in the name:
"weapon_iron_sword","potion_health_large" - Avoid spaces, use underscores:
"my_recipe"not"my recipe"
Recipe Balance:
- Start with simple recipes (2-3 ingredients)
- Gradually add complexity for rare items
- Consider ingredient availability in your server economy
- Test crafting times and player experience
🎯 Quick Start Template
Copy this template to get started quickly:
-- In configs/shared.lua
Shared.MultipleRecipes = {
["your_recipe_name"] = {
itemsNeeded = {
{ name = "ingredient_1", amount = 1 },
{ name = "ingredient_2", amount = 2 },
},
rewards = {
{ name = "crafted_item", amount = 1 },
},
tableUid = "herbal_table", -- Change to your preferred table
},
}
-- In configs/server.lua
Config.Tables = {
{
coords = vec4(0.0, 0.0, 0.0, 0.0), -- Change to your coordinates
recipeUids = { "your_recipe_name" },
snapToGround = true,
},
}Replace the placeholders with your actual values and you're ready to go!
📝 Summary
The custom recipe system gives you the power to create rich, varied crafting experiences without the complexity of visual table generation. Use it to:
- Quickly add multiple recipes to existing tables
- Create themed crafting stations (alchemy, cooking, smithing)
- Experiment with different ingredient combinations
- Scale your crafting system as your server grows
Start simple with a few recipes and expand as you become comfortable with the system. Happy crafting! 🎉