Skip to content
Snissac edited this page Oct 30, 2026 · 2 revisions

Mazu's Furnaces: datapacks and KubeJS

Everything in Mazu's Furnaces that a modpack usually wants to change is data: recipes, recycling and fuels. You can change it with a datapack or with KubeJS.

Page What it covers
Kiln recipes mazusfurnaces:kiln: Pit Kiln and Clay Kiln
Charge recipes mazusfurnaces:bloomery, mazusfurnaces:iron_furnace, mazusfurnaces:nether_forge
Recycling recipes mazusfurnaces:recycling: melting tools and armor by durability
Kiln fuels Burn time, max temperature and heat rate of each fuel
Furnaces Temperature limits, accepted fuels, tags and config

Where the files go

Minecraft Recipes Fuels
1.20.1 data/<namespace>/recipes/ data/mazusfurnaces/data_maps/item/kiln_fuels.json
1.21.1 data/<namespace>/recipe/ data/mazusfurnaces/data_maps/item/kiln_fuels.json (NeoForge only)
26.x data/<namespace>/recipe/ data/mazusfurnaces/data_maps/item/kiln_fuels.json (NeoForge; Forge and Fabric 26.3)

Use your own namespace for new recipes. To replace a built-in recipe, use the same path as the original (for example data/mazusfurnaces/recipe/kiln/brick.json). The built-in recipes are in the mod jar, under the same folders.

With KubeJS, the kubejs/data/ folder works as a datapack, so the same files can go there.

Item and ingredient format

The JSON shape of items and ingredients follows Minecraft, so it changes between versions. The examples in these pages use 1.21.1; for other versions, change only these parts:

1.20.1 1.21.1 26.x
Item { "item": "minecraft:iron_ore" } { "item": "minecraft:iron_ore" } "minecraft:iron_ore"
Tag { "tag": "minecraft:logs" } { "tag": "minecraft:logs" } "#minecraft:logs"
Any of several [ { "item": "a" }, { "item": "b" } ] [ { "item": "a" }, { "item": "b" } ] [ "a", "b" ]
Result { "item": "minecraft:brick", "count": 2 } { "id": "minecraft:brick", "count": 2 } { "id": "minecraft:brick", "count": 2 }

Temperatures are in °C and times are in ticks (20 ticks = 1 second).

KubeJS

Mazu's Furnaces has no KubeJS plugin; use event.custom with the same JSON as the datapack.

ServerEvents.recipes(event => {
  event.custom({
    type: 'mazusfurnaces:kiln',
    ingredient: { item: 'minecraft:clay_ball' },
    result: { id: 'minecraft:brick' },
    cookingtime: 300,
    min_temperature: 600
  })

  event.remove({ id: 'mazusfurnaces:kiln/brick' })
  event.remove({ type: 'mazusfurnaces:bloomery' })
})

Recipe ids follow the file path: data/mazusfurnaces/recipe/bloomery/iron_ingot.json is mazusfurnaces:bloomery/iron_ingot. With JEI and advanced tooltips (F3 + H) on, the id shows when you hover over a recipe output.

Disabling a recipe with a datapack

On NeoForge, override the recipe with a file that never loads:

{
  "neoforge:conditions": [ { "type": "neoforge:false" } ]
}

On other loaders, use KubeJS (event.remove) or a recipe with different values at the same path.

Clone this wiki locally