mojira.dev
MCPE-162250

Villagers no longer prioritize walking on path blocks

Before the dirt path's collision was changed, villagers would try to walk over path blocks to get where they want whenever possible, but now they seem to actively avoid them. See the attached videos for a comparison.

Linked issues

MCPE-194888 Villagers are pathfinding through all types of glass Resolved MCPE-189783 Villagers Can Work At Outside Of House Resolved MCPE-189844 villagers don't sleep and work Resolved MCPE-184052 The villagers don't know how to walk in the village! Resolved MCPE-182071 Villagers won't enter the buildings Resolved

Attachments

Comments 9

Perhaps the preferred_pathing AI is calculating a “jump cost” for moving down and up from the path blocks now?

Is it avoiding the path blocks, or just not prioritizing them? For example, If you have two routes of identical length, one of path blocks and one of grass, will the villager always take the grass one, and never take the path one? Or will the villager give them the same priority and take each path approximately half the time?

This seems also applies to Farmland according to my observation (which is that villagers sometimes cannot go to the opposite site of the farm separated by a water path; in the past, villagers went to the other side of the farm by walking onto the logs) since the collision box of the Farmland also changed in 1.19.50.

I did some additional testing and it appears that, for partial blocks, the preferred block costs are calculated based on the block underneath the partial block. I created a test world with a simple village. The village contains one fletcher, one fletching table, and one bed. When time is set to night, the villager will go to his bed. When time is set to day, the villager will go to his workstation. 

Expected Behavior: The villager walks in a straight line between the bed and workstation. Dirt paths all have the same cost (cost of 0) and the best path should be a straight one between the bed and workstation.

Observed behavior: He doesn't take a direct route. Instead he follows the route of the planks below the dirt paths (cost of 1). He avoids walking on the dirt paths that are above blast furnaces (cost of 50).

 

[media]

It seems that the issue is not fixed in 1.21.0 and the latest beta version which is beta-1.21.10. Considering adding 1.21.0 and the latest beta version to the affected version will be better

Still affects 1.19.81

In my village, I noticed that if I replace my dirt paths with wood plank paths, the villagers seem to prefer that as the path and go back to normal – they sleep in their beds, they work at their job blocks, they gather during mid-day meeting, and when they walk, it's usually on that wooden path.

So for me at least, this was the workaround for my village base.  Otherwise, if all homes are connected by a dirt path, they seem to go out of their way to avoid it, and then can't seek a path to their beds or job blocks.

I reproduced this with a setup similar to Reed Cartwrights, but with plain dirt under the dirt path. Villagers will always avoid the dirt path, preferring to hang outside a house as close as possible to a bed rather than cross a dirt path block to get to the door. Likewise for a workstation. But if you replace the dirt path with a full height block (dirt, grass, planks, almost anything) and give them a little time to recalculate, they'll immediately go through the door or the exposed side of a workstation under a shelter.

This is probably one cause (of several) of MCPE-42912.

Affects Preview 1.21.60.23. Obviously, this bug causes villagers to die more often to the night, and makes working with firm very difficult. This problem is exacerbated by the fact that all villages naturally spawn with path blocks. Maybe this should be flagged as a parity issue, as villagers properly utilize paths in Java? 

[Mod] LateLag

(Unassigned)

894038

Confirmed

Multiple

1.20.10.23 Preview, 1.19.40.21 Preview, 1.19.50, 1.19.51, 1.19.62, ..., 1.21.2 Hotfix, 1.21.20, 1.21.21 Hotfix, 1.21.51 Hotfix, 1.21.100

Retrieved