Actualizado:

1. Preparación (una vez)

/scoreboard objectives add jump minecraft.custom:minecraft.jump
/scoreboard objectives add sneak minecraft.custom:minecraft.sneak_time

jump sube uno con cada salto; sneak cuenta los ticks que pasas agachado. Consulta detectar cuando te agachas.

2. Colocar los bloques de hierro

Apila bloques de hierro en una columna, a 5 bloques de distancia: por ejemplo en Y 64, 69 y 74. Cada uno está en un piso.

3. Saltar para subir

# iterativo, siempre activo
execute as @a[scores={jump=1..}] at @s if block ~ ~-0.5 ~ minecraft:iron_block if block ~ ~4.5 ~ minecraft:iron_block run tp @s ~ ~5 ~
# en cadena, siempre activo (todos los bloques de abajo)
execute as @a[scores={jump=1..}] at @s if block ~ ~-0.5 ~ minecraft:iron_block run playsound minecraft:entity.enderman.teleport master @s ~ ~ ~ 1 1.5
scoreboard players reset @a[scores={jump=1..}] jump

El jugador solo sube cuando hay hierro debajo y otro 5 bloques más arriba. La comprobación usa ~-0.5 porque en el tick del salto el jugador está un poco separado del suelo (coordenadas relativas).

4. Agacharse para bajar

execute as @a[scores={sneak=10..}] at @s if block ~ ~-0.5 ~ minecraft:iron_block if block ~ ~-5.5 ~ minecraft:iron_block run tp @s ~ ~-5 ~
scoreboard players reset @a[scores={sneak=10..}] sneak
execute as @a at @s unless block ~ ~-0.5 ~ minecraft:iron_block run scoreboard players reset @s sneak

Agacharse medio segundo sobre el hierro baja un piso. La última línea borra el tiempo agachado en cualquier otro sitio.

Solución de problemas

Comprueba tu comando

El Command Error Doctor (en inglés) revisa en tu navegador los errores de sintaxis más comunes.