mojira.dev
MC-183860

Zombie villager converted from villager gets PersistenceRequired depending on whether attacking zombie had it

The bug

When a villager is killed by a zombie and converts to a zombie villager, the zombie villager will have PersistenceRequired set depending on whether the attacking zombie had it.
This is incorrect, it should be set depending on whether the villager which was killed had it set.

Reproduction steps

  1. Summon a villager with PersistenceRequired:0b (encase it, to make the next steps easier)

    /summon villager ~ ~ ~ {PersistenceRequired:0b,Health:1f}
  2. Set the difficult to Normal or Hard

  3. Summon a zombie or subtype which has PersistenceRequired:1b

    /summon husk ~ ~ ~ {PersistenceRequired:1b}
  4. Wait until the villager was killed

  5. Inspect the NBT data of the new zombie villager

    /data get entity @e[type=zombie_villager,limit=1,sort=nearest] PersistenceRequired

    ❌ It has PersistenceRequired:1b

Code analysis

20w19a, Mojang names

The check in Zombie.killed(LivingEntity) is incorrect:

if (this.isPersistenceRequired()) {
    zombieVillager.setPersistenceRequired();
}

This should be if (villager.isPersistenceRequired()) instead.

Linked issues

Comments

No comments.

marcono1234

coschevi

Plausible

Normal

Mob behaviour, Mob spawning

20w20a

20w22a

Retrieved