Datapacks

FFEntityDirt has no datapack file format of its own. Instead, tags let you tweak which blocks and mobs take part, and which wound each weapon or mob leaves, without touching the config. Add entries with "replace": false to extend them, and use /reload after changing a datapack.

Tag Type What it does Ships with
ffentitydirt:dirty_surfaces block Extra natural blocks that leave dirt, on top of the vanilla ground tags in the dirt whitelist Gravel, clay, farmland, dirt paths, soul sand and soil, calcite, dripstone, sculk and sculk catalysts, moss carpet, magma and end stone
ffentitydirt:sticky_surfaces block Blocks that smear the feet in their color, faster than walking and even standing still (used by the sticky.blocks setting) Honey and slime blocks
ffentitydirt:mining_blocks block Extra blocks that fling specks when broken, on top of overworld stone and #minecraft:dirt Farmland, dirt paths, short and tall grass, and ferns
ffentitydirt:clean_surfaces block Blocks that never leave dirt Ice, wool, carpets and glass
ffentitydirt:never_dirty entity type Mobs that never get dirty (or snowy) Empty
ffentitydirt:never_damaged entity type Mobs that never get damage marks Empty

Files live at data/ffentitydirt/tags/block/<name>.json and data/ffentitydirt/tags/entity_type/<name>.json.

Wound tags

Each wound has an item tag and an entity type tag, both named ffentitydirt:wounds/<wound>. A melee weapon in the item tag leaves that wound. A projectile in the entity type tag leaves it, and so does a mob that hits with an empty hand (or an item no tag matched). When something is in several wound tags, the trident's three holes beat everything, then the crush, then the rest. Weapons in no tag fall back to Better Combat's weapon type, then words in the item's ID, then a slash for anything with attack damage and a bruise for anything without (all in the damage.wounds settings).

Wound Looks like Items that ship in it Mobs and projectiles that ship in it
slashOne long cut#minecraft:swordsNone
gashA short, thick, ragged cut with a few drops#minecraft:axesNone
cleaveA long, heavy cutNone (claymores and friends come from Better Combat or their names)None
stabA deep hole with a drip running down#minecraft:spears (1.21.11), #c:tools/spear, #c:tools/knife, #c:tools/knivesNone
punctureA round hole#minecraft:pickaxes#minecraft:arrows
triple_punctureThree holes side by sideTridentThrown trident
bruiseA wide, soft, purplish mark#minecraft:shovelsGoat
crushA dark crater with spatterMace, #c:tools/maceIron golem, warden, ravager
scratchTwo thin parallel lines#minecraft:hoes, shears, #c:tools/shearNone
clawThree parallel rakesNoneCat, ocelot, polar bear, panda
biteTwo rows of tooth marksNone#minecraft:zombies, wolf, spider, cave spider, phantom, fox, silverfish, endermite, axolotl, dolphin
goreTwo tusk tearsNoneHoglin, zoglin
lashOne long, thin weltNone (whips come from their names)None
stingA tiny dot in a swollen patchNoneBee
splatterA splat with dropletsNoneLlama spit, slime, magma cube

Mods can add their own wounds with the API; theirs use <their namespace>:wounds/<wound> tags the same way.

Example: a modded weapon

Make a mod's war fork leave three holes like a trident, in data/ffentitydirt/tags/item/wounds/triple_puncture.json:

{
  "replace": false,
  "values": [
    { "id": "somemod:war_fork", "required": false }
  ]
}

"required": false keeps the datapack loading when that mod is not installed.

Example: spotless mobs

Keep armor stands and iron golems spotless:

{
  "replace": false,
  "values": [
    "minecraft:armor_stand",
    "minecraft:iron_golem"
  ]
}

Save it as data/ffentitydirt/tags/entity_type/never_dirty.json in your datapack.

Notes