Actualizado:

Ejecutar una función dentro de cinco segundos

/schedule function mypack:explode 5s

mypack:explode es la función de data/mypack/function/explode.mcfunction (la carpeta se llamaba functions antes de la 1.21).

Unidades de tiempo

EscrituraSignificado
20t o 2020 ticks (1 segundo)
5s5 segundos (100 ticks)
1dUn día del juego (24000 ticks, unos 20 minutos)

Un bucle que se repite

# data/mypack/function/loop.mcfunction
effect give @a minecraft:regeneration 3 0 true
schedule function mypack:loop 10s

La función se vuelve a programar al final. Ejecuta /function mypack:loop una vez y se repetirá cada 10 segundos, algo más ligero que ejecutar algo cada tick.

Cancelar una programación

/schedule clear mypack:loop

Las programaciones se guardan con el mundo, así que continúan tras recargar hasta que las canceles.

replace y append

ComandoSi la función ya está programada
/schedule function mypack:a 5s replaceSustituye la programación anterior (por defecto)
/schedule function mypack:a 5s appendMantiene la anterior y añade otra

Quién ejecuta la función

Una función programada se ejecuta como el servidor, en el punto de aparición del mundo, no como el jugador que la programó. Por tanto, @s y ~ ~ ~ no apuntan a un jugador. Usa execute as @a at @s run … dentro de la función para actuar sobre cada jugador.

Una cuenta atrás 3-2-1

# data/mypack/function/start.mcfunction
title @a title "3"
schedule function mypack:count2 1s
# data/mypack/function/count2.mcfunction
title @a title "2"
schedule function mypack:count1 1s
# data/mypack/function/count1.mcfunction
title @a title "1"
schedule function mypack:go 1s
# data/mypack/function/go.mcfunction
title @a title {"text":"¡YA!","color":"green"}

Cada función muestra un número y programa la siguiente un segundo después. Para empezar la ronda solo hace falta /function mypack:start.

Retrasar una acción para un jugador

Como la función programada no sabe quién la empezó, marca antes al jugador con una etiqueta:

# cuando el jugador pisa la trampa
tag @s add trapped
schedule function mypack:release 5s
# data/mypack/function/release.mcfunction
tp @a[tag=trapped] 0 64 0
tag @a remove trapped

Si un segundo jugador la activa en menos de cinco segundos, el replace por defecto reinicia el temporizador y los dos jugadores se liberan a la vez. Para un temporizador distinto por jugador, cuenta ticks en un scoreboard.

Bedrock Edition

Bedrock tiene /function y /schedule, pero su /schedule funciona de otra forma (se creó para ejecutar funciones cuando se carga una zona) y no acepta la sintaxis de esta página. Contar ticks con un scoreboard es la forma fiable de retrasar acciones en Bedrock.

Problemas frecuentes

Comprueba tu comando

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