Community listing page, reviews here may not be monitored by the author.
Furnace NBT Recipes
No reviews yet
Minecraft datapack library for handling custom furnace recipes with advanced NBT / component support!
Community voices
Reviews
No reviews yet. Be the first to review this project!
Get it on
Available Platforms
About
Project Details
For authors
Embed Badge
If you're the author of this project, you can embed a live badge anywhere that supports HTML or Markdown. It updates automatically whenever ratings change.
Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.
Identifiers
Platform IDs
About
Description
📖 Furnace NBT Recipes
🔥 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:
#furnace_nbt_recipes:v1/smelting_recipes: 🔥 Recipes in a classic furnace#furnace_nbt_recipes:v1/blasting_recipes: ⚒️ Recipes in a blast furnace (e.g. ores)#furnace_nbt_recipes:v1/smoking_recipes: 🍖 Recipes in a smoker (e.g. food)
📝 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
#furnace_nbt_recipes:v1/configure_furnace
⚡ Configure a furnace once, the tick the library starts tracking it, so a configured furnace costs nothing extra afterwards.
🏃 It runs as the furnace's marker entity, at the furnace, and sets furnace_nbt_recipes.speed, given per thousand: 1000 is the vanilla pace, 8000 cooks eight times faster, and 1200 cooks 1.2 times faster.
🧮 Thousandths exist so a furnace can cook at a fraction of a tick per tick; the leftover is carried between ticks, so even 1050 stays exact over a whole recipe.
🔄 The progress arrow stays smooth at any speed, because the library scales progress onto the clock it holds rather than onto the recipe duration.
✨ Example, an electric smelter that smelts eight times faster:
# Run as the marker, at the furnace: check whatever identifies your block
execute if entity @e[tag=simplenergy.electric_smelter,distance=..1] run scoreboard players set @s furnace_nbt_recipes.speed 8000
📝 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.
⏱️ The cookingtime field is mandatory, and the game divides it by the speed multiplier of the fuel: write 200 and a furnace takes ten seconds, while a blast furnace or a smoker on vanilla fuel takes five.
⚠️ This part is really wanky and I don't want people to use this library so here is a link to SimplEnergy's example.
⚙️ How the cooking is driven
🕐 The library owns the furnace clock: it holds the cooking time high enough that the vanilla recipe can never complete on its own, and swaps in your result once the recipe has had its full duration.
⛽ The pace comes from the fuel, whatever it is: a custom fuel with a speed_multiplier of 10 cooks ten times faster, exactly as it would for a vanilla recipe.
🔥 Vanilla refuses to light a furnace whose output slot holds an item its own recipe result cannot stack with. The library hands it a free slot for one tick so it lights itself and burns its fuel normally, then puts the item back.
🧱 Two custom results never merge: while the output slot holds a different item, the furnace stops instead of stacking them, and resumes once the slot is cleared.
⭐ Star History
Screenshots
Gallery
Versions
Files
Relations
Project Relations
More like this
Similar Mods
Suggestions use data such as tags, dependencies, dependents, descriptions, titles, and more to rank how much they overlap with this mod.
On ModDex
Community snapshot
By the numbers
Statistics
Want to reach Minecraft players?
We're looking for a server hosting partner to feature here and other parts of the site. Interested? Send us a message!
Get in touchGet it on
Available Platforms
On ModDex
Community snapshot
By the numbers