Luke100000 / minecraft-comes-alive

Replaces Minecraft's villagers with humans, who can be interacted with.
GNU General Public License v3.0
70 stars 49 forks source link

Villagers will never marry each by default #777

Closed jriesen closed 8 months ago

jriesen commented 9 months ago

I started a new map with MCA for the first time, and noticed that nobody, ever, gets married to one another, despite the marriageChancePerMinute option in the config. Sure, I can play matchmaker and force it, but it seemed weird that everyone is just perpetual orphan bachelors and bachelorettes. I admit the possibility that this may be intentional, e.g. everyone is meant to be a marriageable prospect for player characters until late in village development? But it seems odd to me.

In the VillageMarriageManager there is a check against the marriage threshold:

if (availableVillagers.size() <= 1 || availableVillagers.size() > allVillagers.size() * village.getMarriageThreshold()) {
    return; // The village is too small.
}

In a new village, all of the villagers are single and available (none are babies, promised, engaged or married), so availableVillagers.size() == allVillagers.size() and, unless the marriage threshold is set to 100%, nobody will ever marry.

I believe that, by default, the marriage threshold is set to 50% for a new village:

private float marriageThreshold = 0.5f;

...and changing the marriage threshold is restricted to players of the highest ranks. They're all forced to be fun-loving hippies until you become their ruler and decide to allow them to finally settle down.

To Reproduce

  1. Create a map and visit a village
  2. Everyone is a single orphan and will never marry each other, even if you turn up marriageChancePerMinute to 1.00
  3. This can only presumably be resolved by becoming a monarch and changing the Marriage Threshold for the village to 100%

Version MCA 7.5.8+1.19.2, Minecraft 1.19.2, Fabric 0.14.22

Luke100000 commented 8 months ago

Thanks for this detailed report, the check is indeed inverted.