Возможно проблема такая:
if keys[pygame.K_SPACE] and self.rect.bottom >=
block.rect.top - 5: ограничено лишь одним блоком block.
Нужно переписать условие прыжка, чтобы проверять, стоит ли игрок на любом блоке вообще. Вот как можно это сделать:
# Прыжок (с небольшой toleranc)
if keys[pygame.K_SPACE] and self.on_ground:
self.vel_y = -self.jump_power