
Villager Brain Configuration
A highly optimized server-sided mod that allows full configuration of villager pathfinding malus
Villager Brain Config
A lightweight, highly optimized mod that makes villager pathfinding behavior fully configurable
Features
-
Per-block malus control
Customize how villagers treat different blocks in pathfinding. Blocks are configurable to any malus, block and item tags supported -
Profession-based malus
Configure different path preferences per villager profession. -
Global block penalty caching
Pathfinding results are cached for maximum efficiency across multiple villagers -
Native modded support The config file supports any modded blocks or professions
Example Use Cases
- Prevent villagers from walking into trap blocks like campfires or magma
- Make water paths viable for fishermen only
- Design custom village layouts with optimized navigation paths
- Prevent villagers from wandering off paths
- Add personality to each profession type
Pathfinding Visualizations
!Smart villager takes the short path to get to his job site
!Stupid villager walks off the screen to get to his job site
Planned features
- Per-villager-type rules (eg. plains villagers, taiga villagers)
Performance
Villager Brain Config is designed to be almost invisible in impact or even faster than vanilla
Test case
- 250 villagers
- Each pathing to a unique workstation in a grid
- Compared vanilla to modded using Spark profiler
Results
Vanilla Logic
!Vanilla: VillagerEntity.tick(): 7.42
Modded Logic
!Modded: VillagerEntity.tick(): 5.68
Mod total
!villager-bran-config: 1.75ms
Configuration
All settings are in a villager-brain-config.json file in the config folder.
{
"walk_on_block_penalties": {
"minecraft:grass_block": 4.0,
"minecraft:dirt_path": 0.0,
"default": 5.0
},
"walk_through_block_penalties": {
"minecraft:lava": -1.0,
"minecraft:tall_grass": 20,
"default": 0.0
},
"actions_penalties": {
"jump": 10.0
},
"professions": {
"minecraft:farmer": {
"walk_on_block_penalties": {
"minecraft:farmland": 0.0,
"minecraft:grass_block": 2.0
}
},
"minecraft:fisherman": {
"walk_on_block_penalties": {
"minecraft:water": 0.0
},
"walk_through_block_penalties": {
"minecraft:water": 0.0
}
}
},
"avoids": [
{
"block": "minecraft:lava",
"radius": 3,
"penalty": -1.0
}
]
}
