diff --git a/common/src/sys/phys.rs b/common/src/sys/phys.rs
index 462e0038f0..6fc9b8a29f 100644
--- a/common/src/sys/phys.rs
+++ b/common/src/sys/phys.rs
@@ -302,6 +302,13 @@ impl<'a> System<'a> for Sys {
             ) && vel.0.z < 0.0
                 && vel.0.z > -1.5
                 && was_on_ground
+                && !terrain
+                    .get(
+                        Vec3::new(pos.0.x, pos.0.y, (pos.0.z - 0.05).floor())
+                            .map(|e| e.floor() as i32),
+                    )
+                    .map(|vox| vox.is_solid())
+                    .unwrap_or(false)
             {
                 pos.0.z = (pos.0.z - 0.05).floor();
                 physics_state.on_ground = true;