Furnace NBT Recipes

Minecraft datapack library for handling custom furnace recipes with advanced NBT / component support!

123

Furnace NBT Recipes

📖 Furnace NBT Recipes

🔥 Minecraft datapack library for handling custom furnace recipes with advanced NBT / component support!<br> 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.<br> ✅ Each line should check if the `#found` score is 0 and the input matches your recipe.<br> 🔄 If so, it will run a loot table command in the `container.3` slot.

⚡ Taken example from SimplEnergy:

```mcfunction

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 ⚠️<br> Therefore, you should use this function tag to disable them with the following syntax ⬇️:

```mcfunction

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.<br> 🎯 The XP amount can be customized based on the input item and furnace type (🔥 regular furnace, ⚒️ blast furnace, or 🍖 smoker).<br> ✨ Taken example from SimplEnergy:

```mcfunction

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.<br> ⚠️ 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

<a href="https://star-history.com/#Stoupy51/FurnaceNbtRecipes&Date"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=Stoupy51/FurnaceNbtRecipes&type=Date&theme=dark" /> <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=Stoupy51/FurnaceNbtRecipes&type=Date" /> <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=Stoupy51/FurnaceNbtRecipes&type=Date" /> </picture> </a>

ADS