Create new villager professions and change existing ones, including textures, workstations, day plans, behaviours and village buildings, from simple JSON files or directly in the in-game editor GUI, no coding required.
No Java, no fork, no resource pack. One file per profession.
Versions: 1.20.1, 1.21.1, 1.21.8
Loader: Fabric, NeoForge (1.21.1, 1.21.8), Forge (1.20.1)
Support my work on
Requirements
- On Fabric you need Fabric API. On Forge and NeoForge you do not.
- For trades, install VillagersTradingPlus. Without it your professions work, but they have nothing to sell.
What you can do with it
- New professions bound to a block of your choice, from vanilla or from other mods.
- Your own look: a profession texture, a zombie-villager texture and the hat setting. You need no resource pack. On a server, the images go to every player automatically.
- Change vanilla professions with
overrides. For example, put the farmer on the night shift in four lines. - Day plans:
"schedule": "night"or your own switch-over times for work, idle, meet and rest. - Behaviour:
farmwork: harvest, replant and use bone meal like the farmer.flees_from: extra mobs to run from.attacks: guards that fight zombies and skeletons.health: more health for the profession.villages: keep a job in desert or snowy villages only.
- Village buildings: your own
.nbthouse appears in generated villages. Or give only a workstation, and the mod builds a stall in each village style: oak, sandstone, acacia or spruce. - Custom villager types, tied to biomes, with their own clothing.
- Hero of the Village gifts from your own loot table.
- In-game editor:
/ddv editopens a GUI with every field. Save writes the file and reloads it. - Live reload:
/ddv reloadapplies textures, hats, gifts, workstations, behaviour and day plans without a restart. New day plans reach villagers that already stand in the world.
Quick start
- Start the game once. The mod writes an example into
config/datadrivenvillagers/professions/. - Edit
example_baker.json(or open/ddv edit), then restart. - Get a structure block with
/give @s minecraft:structure_blockand place it next to an unemployed villager. The villager becomes a baker. The example uses a structure block so it takes no block away from a normal world.
{
"workstation": "minecraft:structure_block",
"display_name": "Baker",
"texture": "example_baker.png",
"hat": "none",
"work_sound": "minecraft:entity.villager.work_farmer",
"gatherable_items": ["minecraft:wheat", "minecraft:bread"],
"secondary_job_sites": ["minecraft:cake"]
}
The file name is the id: baker.json becomes datadrivenvillagers:baker. Put baker.png next to
the json and the texture loads at runtime.
Why a config folder and not a datapack? Professions and job sites are registries that Minecraft freezes before any datapack loads. Everything that can be a datapack still is one: trades, gifts, tags and translations.
On a server, every player needs the mod and the same profession files, because the game
refuses a client that does not know a registered profession. /ddv export <name> packs one
profession into a zip that you can give to your players.
Commands
| Command | Does |
|---|---|
/ddv edit [<name>] |
Opens the editor GUI on a profession, or on a new one. |
/ddv why <name> |
Checks the complete chain for one profession and shows where it breaks. |
/ddv why villager |
The same for the villager in front of you: job, station, bed, plan, why it does not work or sleep. |
/ddv blocks [text] |
Shows which blocks are still free to be a workstation. |
/ddv reload |
Reads the config folder again without a restart. |
/ddv scaffold <name> |
Writes the trade file, gift loot table, language file and a village stall, ready to edit. |
/ddv export <name> |
Packs a profession with its files into one zip that you can share. |
/ddv doctor |
Writes every report into doctor.txt, to paste into a bug report. |
/ddv list / /ddv errors |
All loaded professions / every rejected file and why. |
/ddv help |
Shows this table in the chat. |
list, errors, why, blocks and help need permission level 2. edit, reload, scaffold,
export and doctor write files and need level 3. In a singleplayer or LAN world, only the host can
use them.
Trades
Trades come from VillagersTradingPlus.
Put a trade file into a datapack at data/<namespace>/default_villager_trades/baker.json with
"profession": "datadrivenvillagers:baker". Or press Create default trades in /ddv edit, and
the mod writes a starting file into the world's datapacks for you. The full trade format is on the
VillagersTradingPlus page.
Good to know
- Minecraft allows one job site per block. The thirteen vanilla workstation blocks, such as the
composter and the lectern, are taken.
/ddv blocksshows what is still free. - On Fabric, blocks from mods that register after DataDrivenVillagers are skipped with a warning. Vanilla blocks are always available.
- Blocks that world generation places in bulk (stone, dirt, sand, logs, leaves, ores and a few more)
are refused as workstations, because every natural one would become a job site. Set
"allow_natural_block": trueto use one anyway. Air, fluids and blocks without collision are never allowed. - If a file has an error, the mod does not load it and does not crash.
/ddv errorsand/ddv whytell you what is wrong.
More mods by LithiumPlus
- VillagersPlus: new villager types, trades and new workstations. Forge version: VillagersPlus (Forge).
- VillagersTradingPlus: add, replace or delete the trades of any villager, change the currency and gate trades behind conditions, all from a datapack.
- Nyctophobia: dark, foggy biomes for the Overworld. Forge version: Nyctophobia (Forge).
- The Graveyard (Fabric) and The Graveyard (Forge/NeoForge): structures, mobs, bosses and blocks with a graveyard theme.



