LamCrafting
LamCrafting allows you to create multiple crafting stations, each with their own unique recipes and requirements. Full Folia Support!
LamCrafting
LamCrafting: Advanced Custom Crafting System
Key Features Overview

LamCrafting is a feature-rich custom crafting system for Minecraft servers with:
- Complete Folia support with customizable GUIs - Complete Folia support with various requirement types - Complete Folia support (money, points, XP) - Complete Folia support control - Complete Folia support - Complete Folia support (important for highly optimized servers)
How It Works
The plugin allows server administrators to create customized crafting stations where players can craft unique items by providing specific resources, currency, or experience levels. Each station can have its own set of recipes with unique requirements.
Core Functionality
1. Multiple Requirement Types: Create different stations for specialized crafting (e.g., blacksmith, enchanter, alchemist) 2. Multiple Requirement Types: Define what players can craft at each station 3. Multiple Requirement Types:
- Regular items - Custom items (via ItemEdit) - Money (via Vault) - Points (via PlayerPoints) - Experience levels
4. Command Integration: Restrict access to stations and recipes 5. Command Integration: Run commands when items are crafted
Technical Requirements
Dependencies
- Optional: Optional - Optional: - %%MD1%% (for custom items) - %%MD2%% (for money costs) - %%MD3%% (for points costs)
Configuration
The plugin is highly configurable with:
1. Main Config: Control debug levels, GUI layouts, and messages
Spoiler
```yaml
======================================================
LAMCRAFTING CONFIGURATION
======================================================
Debug level (0-3)
0 = Critical errors only
1 = Warnings and errors
2 = Info messages
3 = Debug messages
debug: 3
======================================================
GUI CONFIGURATION
======================================================
gui:
----------------------
CRAFTING GUI SETTINGS
----------------------
crafting:
Whether to show currency requirements in separate slots
true = currency shown in X slots
false = currency shown with other requirements
separate_currency_requirements: true
GUI layout pattern
Each character represents a slot type:
# = Border item
O = Output item (recipe result)
X = Currency requirements
R = Item requirements
C = Craft button
B = Back button
pattern: - "########B" # Must be exactly 9 characters per row - "# O #" # O = Output slot (recipe result) - "##X#X#X##" # X = Currency requirement slots - "#RRRRRRR#" # R = Item requirement slots - "#RRRRRRR#" - "####C####" # C = Craft button
Item definitions for each slot type
items: '#': # Border item material: GRAY_STAINED_GLASS_PANE name: " " # Empty name (just a space) 'O': # Output slot material: AIR # Will be replaced with recipe result 'R': # Requirement slots material: AIR # Will be replaced with requirements 'X': # Currency slots material: AIR # Will be replaced with currency 'C': # Craft button material: ANVIL name: "&aClick to Craft!" lore: - "&7Click to craft if you have" - "&7the required materials!" 'B': # Back button material: BARRIER name: "&cBack to Recipes"
Suffix added to station title when in crafting GUI
title_suffix: " - Crafting"
Currency display settings
currency:
Money currency (requires Vault)
money: material: GOLD_INGOT # Icon for money requirements name: "&6Money Requirement" symbol: "$" # Currency symbol has_enough: "&a" # Color when player has enough not_enough: "&c" # Color when player doesn't have enough lore: - "&7Required: {has_enough}{symbol}{balance}&7/&e{symbol}{amount}"
Points currency (requires PlayerPoints)
points: material: DIAMOND name: "&aPlayer Points Requirement" symbol: "" has_enough: "&a" not_enough: "&c" lore: - "&7Required: {has_enough}{balance}&7/&e{amount} points"
XP level currency
xp_level: material: EXPERIENCE_BOTTLE name: "&eExperience Level Requirement" symbol: "" has_enough: "&a" not_enough: "&c" lore: - "&7Required: {has_enough}{balance}&7/&e{amount} levels"
Item requirement display format
requirement_display: format: "&7Required: {has_enough}{current} &7/ &f{amount}" has_enough: "&a" # Color when player has enough not_enough: "&c" # Color when player doesn't have enough
----------------------
RECIPE BROWSE GUI SETTINGS
----------------------
browse:
GUI layout pattern
# = Border item
R = Recipe slots
P = Previous page button
N = Next page button
pattern: - "#########" # Must be exactly 9 characters per row - "#RRRRRRR#" # R = Recipe slots - "#RRRRRRR#" - "#RRRRRRR#" - "#P#####N#" # P = Previous page, N = Next page
Item definitions for each slot type
items: '#': # Border item material: LIGHT_BLUE_STAINED_GLASS_PANE name: " " 'R': # Recipe slots material: AIR # Will be replaced with recipes 'P': # Previous page button material: ARROW name: "&ePrevious Page" 'N': # Next page button material: ARROW name: "&eNext Page"
Suffix added to station title when in browse GUI
title_suffix: " - Recipes"
----------------------
LOCKED RECIPE SETTINGS
----------------------
Display for recipes the player doesn't have permission to craft
locked_recipe: material: RED_STAINED_GLASS_PANE name: "&c&lLocked Recipe: &7{original_name}" lore: - "&7This recipe is locked!" - "&7You need permission:" - "&8{permission}"
----------------------
STATION SELECTION GUI SETTINGS
----------------------
stations:
Whether the station selection GUI is enabled
enabled: true
Title of the station selection GUI
title: "&8Crafting Stations"
GUI layout pattern
# = Border item
S = Station slots
pattern: - "#########" - "#SSS SSS#" # S = Station slots - "#SSS SSS#" - "#########"
Item definitions for each slot type
items: '#': # Border item material: BLACK_STAINED_GLASS_PANE name: " " 'S': # Station slots material: AIR # Will be replaced with station icons
======================================================
MESSAGE CONFIGURATION
======================================================
All plugin messages (supports color codes with &)
messages:
Prefix for all plugin messages
prefix: "&8[&6LamCrafting&8] "
General messages
no_recipes: "&cNo recipes available!" no_permission: "&cYou don't have permission to do that!" too_many_requirements: "&cError: Recipe has too many requirements ({count}) for available slots ({slots})"
Crafting messages
missing_items: "&cThis recipe cannot be crafted due to missing items!" missing_materials: "&cYou don't have the required materials or currency!" craft_success: "&aSuccessfully crafted the item!" reload_close: "&cThe crafting menu was closed due to a recipe reload."
Station messages
no_station_permission: "&cYou don't have permission to use this station!" station_not_found: "&cStation not found!" station_disabled: "&cThis station is currently disabled!" station_gui_disabled: "&cStation GUI is disabled!"
Admin command messages
player_not_found: "&cPlayer not found!" no_admin_permission: "&cYou don't have permission to open stations for other players!" console_specify_player: "&cConsole must specify a player name!" station_opened: "&aOpened station &e{station} &afor &e{player}{force}" force_suffix: " &7(Forced)"
```
2. Station Configs: Define each crafting station's appearance, permissions, and recipes
Spoiler
```yaml
======================================================
BASIC CRAFTING STATION CONFIGURATION
======================================================
Title shown at the top of the station's GUI (supports color codes)
gui_title: "&8Basic Crafting"
Permission required to access this station
If not specified, no permission is required.
permission: "lamcrafting.station.basic"
Whether this station is enabled and accessible
enabled: true
Sorting weight in the station selection GUI
Higher numbers appear first in the list
GUI-weight: 10
Icon shown in the station selection GUI
Can be a vanilla material or ItemEdit item (itemedit:item_id)
GUI-icon: CRAFTING_TABLE
Whether to hide this station in the station selection GUI
Set to true to make it accessible only via direct command
GUI-hidden: false
======================================================
RECIPES
======================================================
recipes:
----------------------
BASIC MATERIAL RECIPE
----------------------
Simple recipe with vanilla materials
diamond_block: material: DIAMOND_BLOCK # Result item material
Requirements list - what's needed to craft this item
requirements: - material: DIAMOND amount: 9
----------------------
CUSTOM NAMED ITEM
----------------------
Recipe with custom name and lore
super_diamond_block: material: DIAMOND_BLOCK name: "&b&lSuper Diamond Block" # Custom name with color codes lore: # Custom lore with color codes - "&7Triple compressed" - "&7Worth triple the diamonds" - "" # Empty line in lore - "&eRight-click to break into diamonds" requirements: - material: DIAMOND amount: 27
----------------------
CUSTOM ITEM RECIPE
----------------------
Recipe using ItemEdit custom item as result
kings_sword: custom_item: "itemedit:king_sword" # ItemEdit item ID
or custom_item: "custom_item_id" # Custom item ID from local items.yml or ysklib/shareditems.yml if using YSKLib shared items.
requirements: - material: DIAMOND # Vanilla material requirement amount: 5 - custom_item: "itemedit:king_helmet" # Custom item requirement amount: 1
----------------------
ECONOMY COST RECIPE
----------------------
Recipe with money cost (requires Vault)
expensive_sword: material: DIAMOND_SWORD name: "&6Expensive Sword" lore: - "&7Costs: &6$1000" requirements: - material: DIAMOND amount: 2 - money: 1000 # Money cost (requires Vault)
----------------------
POINTS COST RECIPE
----------------------
Recipe with points cost (requires PlayerPoints)
special_sword: material: GOLDEN_SWORD name: "&eSpecial Sword" lore: - "&7A special sword" - "&7Costs: &b100 points" requirements: - material: GOLD_INGOT amount: 3 - player_points: 100 # Points cost (requires PlayerPoints)
----------------------
XP LEVEL COST RECIPE
----------------------
Recipe with experience level cost
enchanted_sword: material: NETHERITE_SWORD name: "&dEnchanted Sword" lore: - "&7Requires 30 levels of experience" requirements: - material: NETHERITE_INGOT amount: 2 - xp_level: 30 # Experience level cost
----------------------
MULTI-CURRENCY RECIPE
----------------------
Recipe with multiple currency costs
legendary_sword: material: NETHERITE_SWORD name: "&6Legendary Sword" lore: - "&7A legendary weapon" - "&7forged with ancient magic" - "&7Costs: &6$1000 &7and &b500 points" requirements: - material: NETHERITE_INGOT amount: 4 - custom_item: "itemedit:magic_crystal" amount: 2 - money: 1000 # Money cost - player_points: 500 # Points cost - xp_level: 30 # XP level cost
----------------------
CUSTOM REQUIREMENT DISPLAY
----------------------
Recipe with custom display name for requirement
custom_display_recipe: material: DIAMOND_PICKAXE name: "&bMiner's Pickaxe" requirements: - material: DIAMOND amount: 64 display_name: "&bPure Diamonds" # Custom name for requirement
----------------------
COMMAND-ONLY RECIPE
----------------------
Recipe that only runs commands (no item given)
command_only_reward: material: NETHER_STAR # Display item in GUI only name: "&6Special Reward" give_item: false # Don't give the item, only run commands commands: # Commands to run when crafted (supports placeholders)
Commands are Console Commands. Use {player} to refer to the player crafting the item.
- "give {player} diamond 5" # {player} = player's name - "eco give {player} 1000" # Economy command - "pp give {player} 100" # PlayerPoints command requirements: - material: GOLD_INGOT amount: 10
----------------------
HYBRID RECIPE
----------------------
Recipe that gives both item and runs commands
hybrid_reward: material: DIAMOND_SWORD name: "&cFiery Sword" give_item: true # Give the item (default is true) commands: # Commands run in addition to giving the item - "effect give {player} strength 60 1" - "broadcast {player} has crafted a Fiery Sword!" requirements: - material: DIAMOND amount: 2 - material: BLAZE_ROD amount: 4
----------------------
PERMISSION-RESTRICTED RECIPE
----------------------
Recipe that requires a specific permission
admin_item: material: BEDROCK name: "&4Admin Block" lore: - "&7Only admins can craft this" permission: "lamcrafting.recipe.basic.admin" # Permission required to craft this recipe. If not specified, no permission is required. requirements: - material: OBSIDIAN amount: 64 ```
Sample Configuration
The configuration allows you to customize:
- GUI appearance and layout - Requirements display - Crafting buttons - Currency display - Message formatting - Station access permissions
Recipe Types
You can create various recipe types:
- Basic material recipes - Custom named items - Custom item recipes (ItemEdit integration) - Economy cost recipes - Points cost recipes - XP level cost recipes - Multi-currency recipes - Command-only rewards - Permission-restricted recipes
Commands
```javascript /lamcraft (aliases: lmc) ├── help - Shows help menu ├── station - Opens station GUI │ ├── <name> - Opens specific station │ ├── <name> <player> - Opens for others │ └── <name> <player> -f - Force opens ├── reload - Reloads config └── items - Manages custom items ```
Permissions
```javascript lamcrafting.use - Basic usage lamcrafting.admin - Admin commands lamcrafting.items - Item management lamcrafting.station - GUI access lamcrafting.station.<station_id> - Station access lamcrafting.recipe.<station>.<recipe> - Recipe access ```
Support
If you need help with the plugin:
- Join the YusakiDev Discord: https://discord.gg/AjEh3dMPfq
``` LamCrafting Plugin - © 2025 YusakiDev. All Rights Reserved.
USAGE TERMS: 1. You may download and use this plugin on any Minecraft server. 2. You may NOT decompile, modify, or redistribute this plugin. 3. You may NOT sell or monetize this plugin.
This plugin is provided "as is" without warranty of any kind. ```