Actualizado:

1. Preparación (una vez)

/scoreboard objectives add lucky_break minecraft.mined:minecraft.sponge
/scoreboard objectives add lucky dummy
/give @a minecraft:sponge 16

lucky_break sube uno cuando un jugador rompe una esponja. lucky guarda el número sacado.

2. Sacar un número para quien la rompe

# iterativo, siempre activo
execute as @a[scores={lucky_break=1..}] store result score @s lucky run random value 1..4

Consulta execute store y el comando random.

3. Elegir el premio

# en cadena, siempre activo (todos los bloques de abajo)
execute as @a[scores={lucky_break=1..,lucky=1}] run give @s minecraft:diamond 5
execute as @a[scores={lucky_break=1..,lucky=2}] at @s run summon minecraft:zombie ~2 ~ ~
execute as @a[scores={lucky_break=1..,lucky=3}] at @s run summon minecraft:tnt ~ ~1 ~ {fuse:60}
execute as @a[scores={lucky_break=1..,lucky=4}] run effect give @s minecraft:speed 30 1

Diamantes, un zombi, TNT que explota a los 3 segundos o velocidad. Consulta el comando de TNT para los tiempos de mecha.

4. Quitar lo soltado y reiniciar

execute as @e[type=item] if items entity @s contents minecraft:sponge run kill @s
scoreboard players set @a[scores={lucky_break=1..}] lucky_break 0

Quitar la esponja soltada impide que los jugadores vuelvan a colocar el mismo bloque. La línea de reinicio debe ir la última, para que cada rotura dé un solo sorteo.

5. Más premios

Cambia el sorteo a 1..10 y añade líneas para el 5 al 10. Dos líneas con el mismo premio lo hacen más frecuente.

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.