--- a/net/minecraft/world/entity/monster/Skeleton.java
+++ b/net/minecraft/world/entity/monster/Skeleton.java
@@ -8,11 +8,15 @@
 import net.minecraft.sounds.SoundEvent;
 import net.minecraft.sounds.SoundEvents;
 import net.minecraft.world.damagesource.DamageSource;
+import net.minecraft.world.entity.Entity;
 import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.entity.player.Player;
 import net.minecraft.world.item.Items;
+import net.minecraft.world.level.ItemLike;
 import net.minecraft.world.level.Level;
 
 public class Skeleton extends AbstractSkeleton {
+
     private static final int TOTAL_CONVERSION_TIME = 300;
     public static final EntityDataAccessor<Boolean> DATA_STRAY_CONVERSION_ID = SynchedEntityData.defineId(Skeleton.class, EntityDataSerializers.BOOLEAN);
     public static final String CONVERSION_TAG = "StrayConversionTime";
@@ -26,15 +30,15 @@
     @Override
     protected void defineSynchedData(SynchedEntityData.Builder builder) {
         super.defineSynchedData(builder);
-        builder.define(DATA_STRAY_CONVERSION_ID, false);
+        builder.define(Skeleton.DATA_STRAY_CONVERSION_ID, false);
     }
 
     public boolean isFreezeConverting() {
-        return this.getEntityData().get(DATA_STRAY_CONVERSION_ID);
+        return (Boolean) this.getEntityData().get(Skeleton.DATA_STRAY_CONVERSION_ID);
     }
 
     public void setFreezeConverting(boolean converting) {
-        this.entityData.set(DATA_STRAY_CONVERSION_ID, converting);
+        this.entityData.set(Skeleton.DATA_STRAY_CONVERSION_ID, converting);
     }
 
     @Override
@@ -47,12 +51,12 @@
         if (!this.level().isClientSide && this.isAlive() && !this.isNoAi()) {
             if (this.isInPowderSnow) {
                 if (this.isFreezeConverting()) {
-                    this.conversionTime--;
+                    --this.conversionTime;
                     if (this.conversionTime < 0) {
                         this.doFreezeConversion();
                     }
                 } else {
-                    this.inPowderSnowTime++;
+                    ++this.inPowderSnowTime;
                     if (this.inPowderSnowTime >= 140) {
                         this.startFreezeConversion(300);
                     }
@@ -78,6 +82,7 @@
         if (nbt.contains("StrayConversionTime", 99) && nbt.getInt("StrayConversionTime") > -1) {
             this.startFreezeConversion(nbt.getInt("StrayConversionTime"));
         }
+
     }
 
     public void startFreezeConversion(int time) {
@@ -86,10 +91,16 @@
     }
 
     protected void doFreezeConversion() {
-        this.convertTo(EntityType.STRAY, true);
+        Stray stray = this.convertTo(EntityType.STRAY, true, org.bukkit.event.entity.EntityTransformEvent.TransformReason.FROZEN, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.FROZEN); // CraftBukkit - add spawn and transform reasons // Paper - Fix issues with mob conversion
         if (!this.isSilent()) {
-            this.level().levelEvent(null, 1048, this.blockPosition(), 0);
+            this.level().levelEvent((Player) null, 1048, this.blockPosition(), 0);
+        }
+        // Paper start - Fix issues with mob conversion; reset conversion time to prevent event spam
+        if (stray == null) {
+            this.conversionTime = 300;
         }
+        // Paper end - Fix issues with mob conversion
+
     }
 
     @Override
@@ -120,9 +131,14 @@
     @Override
     protected void dropCustomDeathLoot(ServerLevel world, DamageSource source, boolean causedByPlayer) {
         super.dropCustomDeathLoot(world, source, causedByPlayer);
-        if (source.getEntity() instanceof Creeper creeper && creeper.canDropMobsSkull()) {
-            creeper.increaseDroppedSkulls();
-            this.spawnAtLocation(Items.SKELETON_SKULL);
+        Entity entity = source.getEntity();
+
+        if (entity instanceof Creeper entitycreeper) {
+            if (entitycreeper.canDropMobsSkull()) {
+                entitycreeper.increaseDroppedSkulls();
+                this.spawnAtLocation((ItemLike) Items.SKELETON_SKULL);
+            }
         }
+
     }
 }
