--- a/net/minecraft/world/entity/monster/Strider.java
+++ b/net/minecraft/world/entity/monster/Strider.java
@@ -81,7 +_,7 @@
     private static final EntityDataAccessor<Integer> DATA_BOOST_TIME = SynchedEntityData.defineId(Strider.class, EntityDataSerializers.INT);
     private static final EntityDataAccessor<Boolean> DATA_SUFFOCATING = SynchedEntityData.defineId(Strider.class, EntityDataSerializers.BOOLEAN);
     private static final EntityDataAccessor<Boolean> DATA_SADDLE_ID = SynchedEntityData.defineId(Strider.class, EntityDataSerializers.BOOLEAN);
-    private final ItemBasedSteering steering = new ItemBasedSteering(this.entityData, DATA_BOOST_TIME, DATA_SADDLE_ID);
+    public final ItemBasedSteering steering = new ItemBasedSteering(this.entityData, DATA_BOOST_TIME, DATA_SADDLE_ID);
     @Nullable
     private TemptGoal temptGoal;
 
@@ -309,7 +_,14 @@
                 || blockStateOnLegacy.is(BlockTags.STRIDER_WARM_BLOCKS)
                 || this.getFluidHeight(FluidTags.LAVA) > 0.0;
             boolean flag1 = this.getVehicle() instanceof Strider strider && strider.isSuffocating();
-            this.setSuffocating(!flag || flag1);
+            // CraftBukkit start
+            boolean suffocating = !flag || flag1;
+            if (suffocating ^ this.isSuffocating()) {
+                if (org.bukkit.craftbukkit.event.CraftEventFactory.callStriderTemperatureChangeEvent(this, suffocating)) {
+                    this.setSuffocating(suffocating);
+                }
+            }
+            // CraftBukkit end
         }
 
         super.tick();
@@ -352,7 +_,7 @@
     }
 
     @Override
-    protected SoundEvent getDeathSound() {
+    public SoundEvent getDeathSound() {
         return SoundEvents.STRIDER_DEATH;
     }
 
