Tags
Creators
Details
All versions
In-Game Recipe Creator (
0.1.4
Release
LumenSmith 0.1.48 months ago 59
Compatibility
Minecraft: Java Edition
1.21.x
1.20.x
Platforms
Paper
Purpur
Spigot
Changes
LumenSmith v0.1.4 — Major Update
New Features
In-Game Recipe Creator (/ls create <key>)
- Full click-based GUI recipe builder — no YAML editing needed
- Supports all 9 recipe types: shaped, shapeless, furnace, blasting, smoking, campfire, stonecutting, smithing transform, and adjacent pair
- Click a slot, then click any item in your inventory to assign materials
- Type selector — pick your recipe type visually, change it anytime
- Result amount control — set output amount from 1-64 with +/- buttons (always starts at 1 when picking an item)
- Cooking controls — adjust cooking time (+/-50 ticks) and experience (+/-0.1) directly in the GUI
- Fuel selector — restrict which fuels are allowed for cooking recipes (click to add fuels, right-click to clear)
- Direction option — for adjacent pair recipes, choose horizontal, vertical, or both placement directions
- Auto-generates
auto_unlock_onfrom ingredients - Saves directly to
config.ymland reloads instantly
Recipe Editing
- Edit button in recipe detail view (writable book icon) — loads existing recipe into the creator with all data pre-filled
- Supports editing all recipe types including shaped grid layout, cooking settings, fuel restrictions, and direction
- Saves changes in-place (replaces old config entry)
Recipe Deletion
- Delete button in recipe detail view (TNT icon) — removes recipe from config with one click
- Instantly reloads after deletion
Adjacent Pair Direction
- New
directionconfig field for adjacent pair recipes:horizontal,vertical, orboth(default) - Controls which placement orientations are registered
- Fully configurable from both YAML and the in-game creator
Bug Fixes
Smelting Output Fix
- Fixed critical bug where custom cooking recipe outputs were blocked by
remove_by_output - Example: custom "Crying Obsidian -> Obsidian" recipe was blocked because OBSIDIAN was in the blocked outputs list
- Custom recipes now correctly bypass the vanilla output blocker
Fuel Enforcement Fix
- Switched from
FurnaceSmeltEventtoFurnaceBurnEventfor fuel checking FurnaceBurnEventfires before fuel is consumed, makinggetFuel()reliable- Prevents infinite smelting loops when wrong fuel was used
Ingredient Display Deduplication
/ls recipesbrowser and detail view now groups duplicate ingredients- Shows
STONE x9instead of listing STONE nine separate times - Applies to both shapeless and shaped recipe displays
Performance Optimizations
O(1) Fuel Index Lookup
- Pre-built
cookingFuelIndexmap in RecipeLoader (built once during config load) CookingBlockListener.onBurnnow uses direct map lookup instead of iterating all recipes- Reduces furnace burn event processing from O(n) to O(1) where n = total recipe count
Memory Leak Prevention
- Creator sessions are now cleaned up on
PlayerQuitEvent - Prevents session map from growing unbounded when players disconnect without closing the GUI
Existing Optimizations
- Pre-computed static messages in BlockCraftListener (no string processing on hot paths)
- Debounced recipe book rescanning with
pendingRescanset + 2-tick delay boolean[]indexed byMaterial.ordinal()for O(1) material presence checks in UnlockListener- Immutable
List.copyOf/Map.copyOffor cached recipe data
Permissions
| Permission | Description |
|---|---|
lumensmith.admin |
Access to /ls reload, /ls rescan, /ls list, /ls delete |
lumensmith.create |
Access to /ls create, edit, and delete recipes from GUI |
Config Changes
New optional fields for cooking recipes:
custom_recipes:
- key: "my_smelt"
type: "furnace"
input: "CRYING_OBSIDIAN"
experience: 1.0
cooking_time: 200
allowed_fuels: # NEW — restrict fuel types
- COAL
- LAVA_BUCKET
result:
item: "OBSIDIAN"
amount: 1
New optional field for adjacent pair recipes:
- key: "my_pair"
type: "adjacent_pair"
items: ["DIAMOND_BLOCK", "GOLD_BLOCK"]
direction: "horizontal" # NEW — horizontal, vertical, or both (default)
result:
item: "NETHERITE_BLOCK"
amount: 1
Full Changelog: v0.1.3 -> v0.1.4
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:B3BY6f3D:9eeS9Zux"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:B3BY6f3D:9eeS9Zux"
}

