Troubleshooting
Recipe does not trigger / result slot stays empty
Symptom: You place the correct ingredients but nothing appears in the output slot.
Checklist:
- Run
/ec reloadafter saving any recipe file. Changes are not picked up automatically. - Check the recipe type. A
CRAFTINGrecipe only works in the crafting table (or 2×2 inventory grid). AFURNACErecipe only works in a furnace, etc. - Check the shape. If
typeOfCraftingTableRecipe: MATCH_SHAPE, the slots must match exactly as you defined them. A diamond in slot 1 (top-left) is not the same as a diamond in slot 5 (center). - Enable debug mode to see what the plugin checks for you:
Then put the ingredients in the crafting grid. An
/ec debug[EC debug]line in your chat tells you which EC recipe matches the grid (noneif no recipe matches: check the inputs and theitemCheckers), what is left in the result slot, and the plugins that act on the craft after EC (one of them can empty the result). See /ec debug. - Check
itemCheckers. IfcheckMaterial: falseandcheckDisplayName: falseand all other checks arefalse, the plugin treats every item as matching and your recipe may match unintended inputs (or match nothing because the check-all-false state can be unexpected). At minimum, enablecheckMaterial: true.
Ingredients not recognised (wrong item)
Symptom: You are placing the right material but the recipe still doesn't fire.
Likely causes:
The item has custom data (name, lore, NBT) but itemCheckerType is set to ITEM_MUST_BE_EXACTLY_THE_SAME
When itemCheckerType: ITEM_MUST_BE_EXACTLY_THE_SAME, the plugin compares the full
item stack including display name, lore, NBT, and enchantments. A plain diamond and a
diamond renamed "Power Gem" are not the same.
Fix: Switch to CUSTOM_CHECKS and enable only the checks you actually care about:
itemCheckers:
itemCheckerType: CUSTOM_CHECKS
checkAmount: false
checkDisplayName: false # ignore custom names
checkMaterial: true # only match the material
checkCustomModelData: false
checkLore: false
checkDurability: false
checkExecutableItemID: false
checkExecutableItemUsage: false
checkExecutableItemVariables: false
You want to require a specific ExecutableItems item
If your recipe requires an EI item, enable checkExecutableItemID: true and make sure
the ingredient in the recipe file is the correct EI item (set via the in-game editor —
the item string contains the EI ID in its NBT).
The vanilla recipe book shows a wrong craftable state
Symptom: In the vanilla recipe book, an EC recipe looks craftable when the player only has the plain materials, or not craftable when he has the right custom items (enchanted, renamed, ExecutableItems...).
Cause: The client computes this state by itself with the item types only, and ignores the enchanted, renamed or damaged items.
Fix: On Paper 1.21.2+, set accurateRecipeBook: true in config.yml (only once in the
file), then /ec reload. See
Accurate vanilla recipe book.
Players receive duplicate output / multiple items at once
Symptom: Crafting once produces 2, 4, or more output items.
Cause: The setting castResultAsMaxAmount is enabled in config.yml.
When castResultAsMaxAmount: true, the result quantity is multiplied by however many
times the recipe could be crafted from the items in the grid. For example, if you
have 4 diamonds in the grid and the recipe requires 2, the result is multiplied by 2.
Fix: If you don't want this behaviour, open plugins/ExecutableCrafting/config.yml
and set:
recipeConfig:
craftingTable:
castResultAsMaxAmount: false
Then /ec reload.
Recipe conflicts with vanilla recipes
Symptom: A vanilla recipe overrides your custom one, or vice versa.
Details: ExecutableCrafting's listener runs at the priority set by eventsPriority
in config.yml. The default is NORMAL.
Fix: If another plugin registers recipes at HIGH or HIGHEST priority that
conflict with yours, raise ExecutableCrafting's priority:
recipeConfig:
global:
eventsPriority: HIGH
Options: NORMAL, HIGH, HIGHEST. Reload after changing.
Recipe conflict between two custom recipes
Symptom: Two of your EC recipes share overlapping ingredients and only one fires.
Explanation: ExecutableCrafting iterates all loaded recipes and returns the first match. The order is determined by the file system load order (alphabetical by default).
Fix: Make one recipe more specific (add extra ingredient checks or use MATCH_SHAPE
instead of SHAPELESS) so it doesn't overlap the other.
playerCommands are not executing
Symptom: The recipe works but the commands listed under playerCommands never run.
Checklist:
-
Confirm the recipe is actually triggering (the result appears in the output slot).
-
Commands under
playerCommandsrun when the player takes the crafted item from the output slot — not when the recipe is displayed. Make sure you actually pick up the result. -
Check command syntax. ExecutableCrafting uses SCore command syntax, not plain server commands. To run a vanilla command, prefix it with
[CONSOLE]or useEXECUTE_PLAYER_COMMAND:playerCommands: - SEND_MESSAGE &aYou crafted something! - EXECUTE_PLAYER_COMMAND say Hello from %player%See Custom Commands for the full list.
Recipe group conditions are not applied
Symptom: A recipe group in recipeGroups.yml doesn't seem to apply its conditions.
Checklist:
- Run
/ec reloadafter editingrecipeGroups.yml. - Check the
recipesListpattern. The globbloody_*matches IDs that start withbloody_. Make sure your recipe IDs match the pattern exactly (case-sensitive). - Verify the file is valid YAML (no tab characters — use spaces only).
Errors in logs on startup
If you see errors in logs/latest.log when the plugin loads:
Could not load 'ExecutableCrafting.jar'— likely a missing SCore or version mismatch. Download the latest SCore and restart.Recipe XYZ failed to load— the YAML for that recipe has a syntax error. Open the file, check indentation (2 spaces, no tabs), and ensure all required fields are present.config_update: truewill add missing fields automatically on next load.- Class errors /
NoClassDefFoundError— usually means SCore is outdated relative to EC. Update both at the same time.
Still stuck?
Join the Discord and post in the
#support-ec channel. Include:
- Your Minecraft version
- Your EC and SCore versions (visible in
/pluginsorlogs/latest.log) - The relevant recipe YAML
- The
logs/latest.logsection around the error (or the debug output from/ec debug)
Try it now
Copy this into ExecutableCrafting and reload
Taken from this page. Paste it into a config, run the plugin's reload command, and you have a working starting point to edit.
itemCheckers:
itemCheckerType: CUSTOM_CHECKS
checkAmount: false
checkDisplayName: false # ignore custom names
checkMaterial: true # only match the material
checkCustomModelData: false
checkLore: false
checkDurability: false
checkExecutableItemID: false
checkExecutableItemUsage: false
checkExecutableItemVariables: falsePlugin used on this page
ExecutableCraftingCondition-based crafting, anvil and furnace recipes in YAML.
- 238 servers running it right now (bStats)
- 15 downloads on SPlugins