--- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java
+++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java
@@ -62,8 +_,8 @@
     private static final boolean DEFAULT_CANNOT_BE_HUNTED = false;
     public static final int CONVERSION_TIME = 300;
     private int attackAnimationRemainingTicks;
-    private int timeInOverworld = 0;
-    private boolean cannotBeHunted = false;
+    public int timeInOverworld = 0;
+    public boolean cannotBeHunted = false;
     protected static final ImmutableList<? extends SensorType<? extends Sensor<? super Hoglin>>> SENSOR_TYPES = ImmutableList.of(
         SensorType.NEAREST_LIVING_ENTITIES, SensorType.NEAREST_PLAYERS, SensorType.NEAREST_ADULT, SensorType.HOGLIN_SPECIFIC_SENSOR
     );
@@ -265,7 +_,12 @@
     }
 
     private void finishConversion() {
-        this.convertTo(EntityType.ZOGLIN, ConversionParams.single(this, true, false), mob -> mob.addEffect(new MobEffectInstance(MobEffects.NAUSEA, 200, 0)));
+        final Entity converted = this.convertTo(EntityType.ZOGLIN, ConversionParams.single(this, true, false), mob -> {mob.addEffect(new MobEffectInstance(MobEffects.NAUSEA, 200, 0));}, org.bukkit.event.entity.EntityTransformEvent.TransformReason.PIGLIN_ZOMBIFIED, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.PIGLIN_ZOMBIFIED); // CraftBukkit - add spawn and transform reasons
+        // Paper start - Fix issues with mob conversion; reset to prevent event spam
+        if (converted == null) {
+            this.timeInOverworld = 0;
+        }
+        // Paper end - Fix issues with mob conversion
     }
 
     @Override
@@ -303,7 +_,7 @@
         this.getEntityData().set(DATA_IMMUNE_TO_ZOMBIFICATION, immuneToZombification);
     }
 
-    private boolean isImmuneToZombification() {
+    public boolean isImmuneToZombification() {
         return this.getEntityData().get(DATA_IMMUNE_TO_ZOMBIFICATION);
     }
 
@@ -341,27 +_,27 @@
     }
 
     @Override
-    protected SoundEvent getAmbientSound() {
+    public SoundEvent getAmbientSound() {
         return this.level().isClientSide() ? null : HoglinAi.getSoundForCurrentActivity(this).orElse(null);
     }
 
     @Override
-    protected SoundEvent getHurtSound(DamageSource damageSource) {
+    public SoundEvent getHurtSound(DamageSource damageSource) {
         return SoundEvents.HOGLIN_HURT;
     }
 
     @Override
-    protected SoundEvent getDeathSound() {
+    public SoundEvent getDeathSound() {
         return SoundEvents.HOGLIN_DEATH;
     }
 
     @Override
-    protected SoundEvent getSwimSound() {
+    public SoundEvent getSwimSound() {
         return SoundEvents.HOSTILE_SWIM;
     }
 
     @Override
-    protected SoundEvent getSwimSplashSound() {
+    public SoundEvent getSwimSplashSound() {
         return SoundEvents.HOSTILE_SPLASH;
     }
 
