I created a mod for personal use that modifies some attributes of certain mobs including zombies but when a villager transforms into a zombievillager the attributes that my mod modifies do not apply to the zombievillager they only apply when I re-enter the world.
Here is my HandlerEvents file:
public class HandlerEvents {
@SubscribeEvent
public static void onLivingSpawned(EntityJoinWorldEvent event) {
if (event.getEntity() instanceof Zombie zombie) {
zombie.setCanBreakDoors(true);
zombie.setCanPickUpLoot(true);
AttributeInstance attackDamage = zombie.getAttribute(Attributes.ATTACK_DAMAGE);
if (attackDamage != null)
attackDamage.setBaseValue(3.0);
}
if (event.getEntity() instanceof AbstractSkeleton abstractSkeleton) {
abstractSkeleton.setCanPickUpLoot(true);
}
if (event.getEntity() instanceof Pillager pillager) {
pillager.setCanPickUpLoot(true);
}
if (event.getEntity() instanceof Skeleton skeleton) {
AttributeInstance attackDamage = skeleton.getAttribute(Attributes.ATTACK_DAMAGE);
if (attackDamage != null)
attackDamage.setBaseValue(1.0);
}
if (event.getEntity() instanceof WitherSkeleton witherskeleton) {
AttributeInstance attackDamage = witherskeleton.getAttribute(Attributes.ATTACK_DAMAGE);
if (attackDamage != null)
attackDamage.setBaseValue(2.0);
}
if (event.getEntity() instanceof Piglin piglin) {
AttributeInstance maxHealth = piglin.getAttribute(Attributes.MAX_HEALTH);
if (maxHealth != null)
maxHealth.setBaseValue(18.0);
if (piglin.getHealth() < piglin.getMaxHealth())
piglin.setHealth(piglin.getMaxHealth());
AttributeInstance attackDamage = piglin.getAttribute(Attributes.ATTACK_DAMAGE);
if (attackDamage != null)
attackDamage.setBaseValue(1.0);
}
if (event.getEntity() instanceof PiglinBrute piglinBrute) {
AttributeInstance attackDamage = piglinBrute.getAttribute(Attributes.ATTACK_DAMAGE);
if (attackDamage != null)
attackDamage.setBaseValue(2.0);
}
if (event.getEntity() instanceof Vindicator vindicator) {
AttributeInstance attackDamage = vindicator.getAttribute(Attributes.ATTACK_DAMAGE);
if (attackDamage != null)
attackDamage.setBaseValue(2.0);
}
if (event.getEntity() instanceof AbstractIllager illager) {
illager.setPersistenceRequired();
}
}
}