Hello, the community. I looked throughout the Internet and found little information about the villager population cap in Java 1.19. I studied the Fandom Wiki a bit and found it controversial in my game.
In Villager/Mechanics, Fandom wiki,
Population of a village is never measured. Villager breeding succeeds if the birthing parent can path to an unclaimed bed with at least two empty blocks over its head.
So the population of villagers can be as much as the beds in the village in 1.19 and the population is no longer 35% of the beds/doors as stated in previous versions.
However, in my world, two willing villagers emit heart particles but in the end, they emit angry particles and fail to breed. I have enough beds with 2-block space above.
My guesses are that
1. the constructed villager is too big so that the villager cannot pathfind the new beds that are a little far from the gathering site.
1x. But this turns out to be false as one new villager sleeping on the other side of the gathering site is able to claim a job site near the bed I intended to breed villagers.
2. Beds are not unclaimed for some reason.
2x. What I did is destroy the bed and place it at its original place without claiming it as a respawn point myself. Based on my limited observation, this doesn't solve the problem.
Is there something else preventing the breeding from happening? Thank you in advance!
Okay guys. I found a way to solve this problem although I don't know the mechanism. I place a bed near villagers when they are breeding. Then villagers can realize available beds and do breed. I then sleep on/break it to destroy their connection to the bed so they can pathfind a bed in the village even far. I just breed some villagers using this method but haven't checked the outcome yet. Hope these newborns are okay. /crossfingers
Probably the pathfinding code for beds in the case of breeding is different in the case of a villager serarching a new bed. I don't know if baby villagers have limitations about block heights or whatever different from adults.
Thanks Palin. I think the mechanism is rather unclear, especially on newer versions like 1.19. The best code-based interpretation I found is on 1.14 though the mechanism might not changed too much since then.
For any followers on this post... I searched a bit about the same problem and my conclusion is that issue 1 in the OP might be the dominating issue.
When two villagers are breeding, they search for available/unclaimed beds within a radius of 48 blocks (taxicab distance) to the breeding coordinate. If there are no available beds, either because they are all claimed or because they are too far away, breeding becomes unsuccessful and angry particles are emitted from those villagers.
Q: Does placing a bed near them and breaking it work?
A: Yes but not aesthetically. They do breed under this circumstance but breaking the bed doesn't make the newborn claim a bed far away. The mechanism is the same. When night comes and the newborn starts pathfinding his bed, he walks to where the bed was originally placed (pillow coordinate) and cannot find it because it is destroyed. Then, at that exact moment, the newborn starts pathfinding again. I don't know if this is specific to this version but weird things happen here. (Sources from many reddit posts)
A villager is now able to claim a bed/job site that has already been claimed by another villager.
By this rule, the newborn will locate the closest bed even if a villager or I have slept on it. He doesn't push you or the villager off but stands on the bed doing nothing. I believe if the newborn reaches the bed earlier than the original owner, the original owner will stand on the bed instead. (This also explains my other post recently). Therefore, they only pathfind beds within 48 blocks. If it is too far away, they don't see it.
Note: I have to admit that I might have done a thing wrong here. I throw breads to villagers when they are gossiping at the gathering site for convenience every time so they breed at the gathering site. This is quite limiting because the newborn will pathfind in the proximity of the gathering site, ignoring the beds and houses on the edges. I should correct this method by feeding villagers when they are wandering to see if things get improved.
Villager mechanics are weird. The makeshift solution with just shoving a bed (or job block, door, etc) next to a villager is usually the only one that works.
Rollback Post to RevisionRollBack
Quote me if you need me to reply to something. DM me if I don't answer that.
Contacts on other sites currently disabled, if you want me to add you on steam, discord, or PMC, ask me and pass me your name so I add you.
Hello, the community. I looked throughout the Internet and found little information about the villager population cap in Java 1.19. I studied the Fandom Wiki a bit and found it controversial in my game.
In Villager/Mechanics, Fandom wiki,
Retrieved on May 25th, 2023, https://minecraft.fandom.com/wiki/Village_mechanics
So the population of villagers can be as much as the beds in the village in 1.19 and the population is no longer 35% of the beds/doors as stated in previous versions.
However, in my world, two willing villagers emit heart particles but in the end, they emit angry particles and fail to breed. I have enough beds with 2-block space above.
My guesses are that
1. the constructed villager is too big so that the villager cannot pathfind the new beds that are a little far from the gathering site.
1x. But this turns out to be false as one new villager sleeping on the other side of the gathering site is able to claim a job site near the bed I intended to breed villagers.
2. Beds are not unclaimed for some reason.
2x. What I did is destroy the bed and place it at its original place without claiming it as a respawn point myself. Based on my limited observation, this doesn't solve the problem.
Is there something else preventing the breeding from happening? Thank you in advance!
Okay guys. I found a way to solve this problem although I don't know the mechanism. I place a bed near villagers when they are breeding. Then villagers can realize available beds and do breed. I then sleep on/break it to destroy their connection to the bed so they can pathfind a bed in the village even far. I just breed some villagers using this method but haven't checked the outcome yet. Hope these newborns are okay. /crossfingers
Probably the pathfinding code for beds in the case of breeding is different in the case of a villager serarching a new bed. I don't know if baby villagers have limitations about block heights or whatever different from adults.
Thanks Palin. I think the mechanism is rather unclear, especially on newer versions like 1.19. The best code-based interpretation I found is on 1.14 though the mechanism might not changed too much since then.
For any followers on this post... I searched a bit about the same problem and my conclusion is that issue 1 in the OP might be the dominating issue.
When two villagers are breeding, they search for available/unclaimed beds within a radius of 48 blocks (taxicab distance) to the breeding coordinate. If there are no available beds, either because they are all claimed or because they are too far away, breeding becomes unsuccessful and angry particles are emitted from those villagers.
Q: Does placing a bed near them and breaking it work?
A: Yes but not aesthetically. They do breed under this circumstance but breaking the bed doesn't make the newborn claim a bed far away. The mechanism is the same. When night comes and the newborn starts pathfinding his bed, he walks to where the bed was originally placed (pillow coordinate) and cannot find it because it is destroyed. Then, at that exact moment, the newborn starts pathfinding again. I don't know if this is specific to this version but weird things happen here. (Sources from many reddit posts)
By this rule, the newborn will locate the closest bed even if a villager or I have slept on it. He doesn't push you or the villager off but stands on the bed doing nothing. I believe if the newborn reaches the bed earlier than the original owner, the original owner will stand on the bed instead. (This also explains my other post recently). Therefore, they only pathfind beds within 48 blocks. If it is too far away, they don't see it.
Note: I have to admit that I might have done a thing wrong here. I throw breads to villagers when they are gossiping at the gathering site for convenience every time so they breed at the gathering site. This is quite limiting because the newborn will pathfind in the proximity of the gathering site, ignoring the beds and houses on the edges. I should correct this method by feeding villagers when they are wandering to see if things get improved.
Villager mechanics are weird. The makeshift solution with just shoving a bed (or job block, door, etc) next to a villager is usually the only one that works.
Quote me if you need me to reply to something. DM me if I don't answer that.
Contacts on other sites currently disabled, if you want me to add you on steam, discord, or PMC, ask me and pass me your name so I add you.