Skip to content

Datapack Murk Transforms

tturnover-home edited this page Oct 3, 2026 · 1 revision

Murk transforms

A fogged:murk_transform recipe converts something under the boundary into something else. It does the same thing as a line in the transforms config option (see Config Boundary), as a file that reloads, syncs to clients and shows in JEI.

Nothing about it is craftable. It never matches in a crafting table and never appears in the recipe book.

Location: data/<namespace>/recipe/<name>.json

Fields

Field Type Default Description
type string required Always "fogged:murk_transform".
from list of strings required What gets converted: ids, #tags, or * globs. You can mix them. Block entries convert placed blocks, item entries convert dropped stacks.
to string required One id, with no tag or glob. A block replaces the placed block and keeps the properties the two share (facing, hinge, waterlogged…). An item that isn't a block makes the placed block break and drop that item. minecraft:air removes the block.
count int 1–64 1 Stack only: how many are taken from a dropped stack per conversion.
result_count int 1–64 1 How many are given back. For an item target on a placed block, this is how many drop.
depth int 0–512 0 Only convert at least this many blocks below the surface. This moves with the boundary.
silent bool false When true, hides the recipe from JEI's "Murk Conversion" category.

When count or result_count is above 1, placed blocks are never touched, because you can't take 4 of a block that is standing in one spot. The exception is an item target, where result_count is the drop count.

Examples

Iron doors rust away deep down:

{
  "type": "fogged:murk_transform",
  "from": ["minecraft:iron_door", "minecraft:iron_trapdoor"],
  "to": "minecraft:air",
  "depth": 30
}

Every log rots into mud, hidden from JEI:

{
  "type": "fogged:murk_transform",
  "from": ["#minecraft:logs"],
  "to": "minecraft:mud",
  "silent": true
}

Dropped gold nuggets fuse into ingots (9 → 1):

{
  "type": "fogged:murk_transform",
  "from": ["minecraft:gold_nugget"],
  "count": 9,
  "to": "minecraft:gold_ingot"
}

A whole modded family with a glob:

{
  "type": "fogged:murk_transform",
  "from": ["create:*_casing"],
  "to": "minecraft:mud",
  "depth": 20
}

Leaves break into sticks:

{
  "type": "fogged:murk_transform",
  "from": ["#minecraft:leaves"],
  "to": "minecraft:stick"
}

Rules and precedence

  • Config wins. If the transforms config list and a recipe name the same block, the config line is used.
  • Transforms beat the scour. A transform runs before the built-in removal, so it overrides it. #fogged:scour_immune doesn't stop transforms.
  • No chains. If a transform's result matches another rule, the result is converted again on the next pass. Don't point one rule at something another rule converts.
  • Master switches. Nothing converts when enableTransforms or enableWorldChanges is off.
  • Optional mods. An id from a mod that isn't installed simply never matches. For a recipe that only makes sense with another mod, add a condition:
"neoforge:conditions": [{ "type": "neoforge:mod_loaded", "modid": "biomesoplenty" }]

Tying a recipe to a built-in pack switch

The mod's own packs use the fogged:pack_enabled condition, so their [datapacks] config switch can turn them off:

"neoforge:conditions": [{ "type": "fogged:pack_enabled", "pack": "copper_oxidation" }]

pack takes one of: grass_scourch, moss_scourch, copper_oxidation, silverfish_suffocation, coal_remover. Any other name always passes.

Run /reload after editing.

Clone this wiki locally