Configuration Guide
Complete reference for plugins/LumenSmith/config.yml.
Global Settings
update_checker: true
cooldown_storage: file
| Key | Type | Default | Description |
|---|---|---|---|
update_checker |
boolean | true |
Check for new versions on startup |
cooldown_storage |
string | "file" |
"file" = persistent across restarts, "session" = memory-only (resets on restart) |
World Filter
Control which worlds LumenSmith's rules apply in.
world_filter:
whitelistworldoff: true
worlds:
- world
- world_nether
- world_the_end
| Key | Type | Default | Description |
|---|---|---|---|
whitelistworldoff |
boolean | true |
true = features active in ALL worlds. false = only in listed worlds. |
worlds |
list | none | World names where rules apply (only used when whitelistworldoff: false) |
Most servers should keep
whitelistworldoff: true to apply rules everywhere. Only change this if you need per-world control.
Blocked Outputs
Any material listed under remove_by_output will be completely uncraftable.
The recipe book shows no output, clicks are blocked, and ingredients are not consumed.
remove_by_output:
- TNT
- TNT_MINECART
# - ENDER_CHEST
# - TRIDENT
Material names use Bukkit's Material enum. See the Spigot JavaDocs for a complete list.
Deny Message
Shown when a player tries to craft a blocked output. Supports color codes and the %item% placeholder.
deny_message: '&cCrafting of &e%item% &cis disabled on this server.'
Custom Recipes
Each recipe is an entry under the custom_recipes list. Here are all available fields:
Required Fields
| Field | Type | Description |
|---|---|---|
key | string | Unique recipe ID (letters, numbers, underscores only) |
type | string | Recipe type (see Recipe Types) |
result | object | The output item (see below) |
Result Object
| Field | Type | Default | Description |
|---|---|---|---|
item | string | none | Material name (required) |
amount | int | 1 | Output amount (1–64) |
name | string | none | Custom display name (supports & color codes) |
lore | list | none | Lore lines (supports & color codes) |
enchantments | list | none | Enchantments in "NAME:LEVEL" format |
custom_model_data | int | none | Custom model data for resource packs |
potion_type | string | none | (Brewing only) Bukkit PotionType enum value, e.g. STRENGTH, LONG_FIRE_RESISTANCE, STRONG_REGENERATION. Only meaningful when item is POTION / SPLASH_POTION / LINGERING_POTION. |
Optional Fields
| Field | Type | Default | Description |
|---|---|---|---|
auto_unlock_on | list | (auto) | Materials that trigger recipe book unlock. If omitted, the plugin auto-derives the list from the recipe's ingredients. Provide your own list to override; you can list as many materials as you like. |
replace_existing | boolean | true | Replace conflicting vanilla recipes |
permission | string | none | Permission required to craft |
permission_deny_message | string | none | Message shown when permission is missing |
cooldown | int | none | Seconds between crafts (per-player) |
max_crafts | int | none | Lifetime craft limit (per-player) |
cooldown_message | string | none | Message on cooldown (%remaining% placeholder) |
max_crafts_message | string | none | Message when limit is reached |
Effects (Optional)
Play a sound and/or particle effect when the recipe is successfully crafted.
effects:
sound: "ENTITY_PLAYER_LEVELUP"
sound_volume: 1.0
sound_pitch: 1.2
particle: "ENCHANT"
particle_count: 50
| Field | Type | Description |
|---|---|---|
sound | string | Bukkit Sound enum name |
sound_volume | float | Volume (0.0 – 1.0) |
sound_pitch | float | Pitch (0.5 – 2.0) |
particle | string | Bukkit Particle enum name |
particle_count | int | Number of particles |
Brewing-Specific Fields NEW v0.1.5
Brewing recipes use a different ingredient layout than crafting/cooking. Instead of ingredients or
input, they take two separate fields plus a potion-aware result.
| Field | Type | Description |
|---|---|---|
ingredient | Material | What goes in the brewing stand's top slot. Any material is allowed; the plugin handles non-vanilla pairs by driving the brewing process itself. |
input | Material | The bottle material in the bottom slots. Must be POTION, SPLASH_POTION, or LINGERING_POTION. |
result.item | Material | Must also be one of the three potion materials. |
result.potion_type | string | Bukkit PotionType: the potion effect on the resulting bottle. See Brewing. |
Full Example Config
# ── Global ──────────────────────────────────────────────────────────────
update_checker: true
cooldown_storage: "file" # "file" = persistent, "session" = memory-only
# ── World filter ────────────────────────────────────────────────────────
# whitelistworldoff: true -> features run in every world
# whitelistworldoff: false -> only the worlds listed below
world_filter:
whitelistworldoff: true
worlds: ["world", "world_nether", "world_the_end"]
# ── Blocked outputs ─────────────────────────────────────────────────────
# Any result listed here is uncraftable. Recipe book hides the output,
# clicks are blocked, ingredients are NOT consumed.
remove_by_output:
- TNT
- TNT_MINECART
# ── Custom recipes ──────────────────────────────────────────────────────
custom_recipes:
# SHAPED — every-option showcase
- key: "excalibur"
type: "shaped"
shape: [" D ", " D ", " S "]
ingredients:
D: "DIAMOND"
S: "STICK"
result:
item: "DIAMOND_SWORD"
amount: 1
name: "&6Excalibur"
lore:
- "&7A blade of legend"
- "&5+10 Attack Damage"
enchantments:
- "SHARPNESS:5"
- "UNBREAKING:3"
- "FIRE_ASPECT:2"
custom_model_data: 1001
permission: "lumensmith.craft.excalibur"
permission_deny_message: "&cYou need VIP rank to forge Excalibur!"
cooldown: 3600
max_crafts: 3
cooldown_message: "&cExcalibur needs &e%remaining%s &cto recharge."
max_crafts_message: "&cYou have forged all the Excaliburs fate allows."
effects:
sound: "ENTITY_PLAYER_LEVELUP"
sound_volume: 1.0
sound_pitch: 1.2
particle: "ENCHANT"
particle_count: 50
auto_unlock_on: ["DIAMOND"]
# SHAPELESS
- key: "cheap_torch"
type: "shapeless"
ingredients: ["STICK", "COAL"]
result: { item: "TORCH", amount: 8 }
auto_unlock_on: ["COAL", "CHARCOAL"]
# ADJACENT PAIR — two items next to each other in any 2x2 area
- key: "glowing_ink_sac_craft"
type: "adjacent_pair"
items: ["GLOWSTONE_DUST", "INK_SAC"]
result: { item: "GLOW_INK_SAC", amount: 1 }
auto_unlock_on: ["GLOWSTONE_DUST", "INK_SAC"]
# FURNACE / BLASTING / SMOKING / CAMPFIRE all share the same shape
- key: "blast_raw_iron"
type: "blasting"
input: "RAW_IRON"
result:
item: "IRON_INGOT"
amount: 2
name: "&fRefined Iron"
experience: 1.0
cooking_time: 100 # ticks
auto_unlock_on: ["RAW_IRON"]
# STONECUTTING
- key: "cut_stone_bricks"
type: "stonecutting"
input: "STONE"
result: { item: "STONE_BRICKS", amount: 2 }
auto_unlock_on: ["STONE"]
# SMITHING TRANSFORM
- key: "infernal_pickaxe"
type: "smithing_transform"
template: "NETHERITE_UPGRADE_SMITHING_TEMPLATE"
base: "DIAMOND_PICKAXE"
addition: "NETHERITE_INGOT"
result:
item: "NETHERITE_PICKAXE"
amount: 1
name: "&4Infernal Pickaxe"
enchantments: ["EFFICIENCY:5"]
auto_unlock_on: ["NETHERITE_INGOT"]
# BREWING — works even with ingredients vanilla normally refuses
# `input` can be a plain string ("POTION") or a map that pins the base
# potion type (WATER, AWKWARD, etc.). `result` carries the new potion.
- key: "spruce_night_vision"
type: "brewing"
ingredient: "SPRUCE_LOG"
input:
item: "POTION"
potion_type: "AWKWARD"
result:
item: "POTION"
potion_type: "NIGHT_VISION"
name: "&9Sylvan Night Vision"
auto_unlock_on: ["SPRUCE_LOG"]
# ── Deny message ────────────────────────────────────────────────────────
# Shown when a blocked output is attempted. Only %item% is supported.
deny_message: "&cCrafting of &e%item% &cis disabled on this server."
LumenSmith