HomeJavaDatapacksFurnace NBT Recipes
Furnace NBT Recipes
DatapacksJava

Furnace NBT Recipes

by Stoupy51 · on Modrinth

Which Minecraft do you have?

Every version of the game needs its own build. Pick yours, then download — the wrong build installs fine and then does nothing in the game. This mod is built for Data pack only.

⬇ Download for 1.21.8–26.1.2⬇ Download for 1.21.7⬇ Download for 1.21.4–1.21.6⬇ Download for 1.21.2–1.21.3
I don't know my version or loader
Open the Minecraft launcher and look at the profile you play on — it names both, like fabric-loader-1.21.4. The version also shows in the bottom-right corner of the game's main menu.
No loader in the profile name? Then it's plain Minecraft, and these mods won't run — you need Fabric or NeoForge installed first.

📖 Furnace NBT Recipes

GitHub Smithed Modrinth PMC Discord Powered by StewBeet

🔥 Minecraft datapack library for handling custom furnace recipes with advanced NBT / component support!
Enables creation of complex smelting recipes using NBT tags / components. 🛠️

📚 How to Use

🔧 Function Tags

The library provides several function tags that you can use to add your custom recipes:

🔨 Smelting, Blasting, Smoking

The function tags are the following:

📝 In any of these function tags, you must add a call to a function you created that will handle the recipe.
✅ Each line should check if the #found score is 0 and the input matches your recipe.
🔄 If so, it will run a loot table command in the container.3 slot.

⚡ Taken example from SimplEnergy:

# Smelt 'Raw Simplunium' into 'Simplunium Ingot'
execute if score #found furnace_nbt_recipes.data matches 0 store result score #found furnace_nbt_recipes.data if data storage furnace_nbt_recipes:main input{"components": {"minecraft:custom_data": {"simplenergy": {"raw_simplunium": true}}}} run loot replace block ~ ~ ~ container.3 loot simplenergy:i/simplunium_ingot

#furnace_nbt_recipes:v1/disable_cooking

🔧 As the library stands on fake recipes, we need to prevent the default vanilla items from smelting ⚠️
Therefore, you should use this function tag to disable them with the following syntax ⬇️:

# For instance, if a custom recipe uses command block as a base item:
execute if score #reset furnace_nbt_recipes.data matches 0 store success score #reset furnace_nbt_recipes.data if data storage furnace_nbt_recipes:main input{"id":"minecraft:command_block"}

#furnace_nbt_recipes:v1/recipes_used

⚡ Configure XP rewards for your custom recipes when a player retrieves items from the furnace.
🎯 The XP amount can be customized based on the input item and furnace type (🔥 regular furnace, ⚒️ blast furnace, or 🍖 smoker).
✨ Taken example from SimplEnergy:

# Give 0.8 XP for smelting 'Raw Simplunium'
execute if score #found furnace_nbt_recipes.data matches 0 store result score #found furnace_nbt_recipes.data if data storage furnace_nbt_recipes:main input{"components": {"minecraft:custom_data": {"simplenergy": {"raw_simplunium": true}}}} run function simplenergy:calls/furnace_nbt_recipes/xp_reward/0.8

📝 Recipe Format

📝 For each custom recipe you make, you'll need to add a recipe that take the base item ingredient as ingredient and result the base item of the result.
⚠️ This part is really wanky and I don't want people to use this library so here is a link to SimplEnergy's example.

⭐ Star History

Star History Chart
Quick facts

Install steps are the general flow for this file type — see the MC Java Mods guides for the full walkthrough.

Verified by MCModsHub

These come from our own check of the pack file, not from the source page.

Explore more