MC Toolkit

Guías / Comandos y datos

/execute: por qué importa el orden as/at y cómo funciona realmente store

La mayoría de las cadenas de execute rotas vienen de confundir quién ejecuta el comando con dónde se ejecuta. Esto es lo que cambia cada subcomando, y el orden que lo soluciona.

/execute es un solo comando que pretende ser un lenguaje de scripting. Casi todos los fallos se remontan a dos subcomandos que suenan como si hicieran lo mismo, y no lo hacen.

as cambia QUIÉN. at cambia DÓNDE.

  • as <target> — intercambia el ejecutor. @s ahora significa esa entidad. La posición no se mueve.
  • at <target> — intercambia la posición, la rotación y la dimensión. El ejecutor no cambia.

Así que esto no hace nada útil:

execute as @e[type=zombie] run setblock ~ ~ ~ stone

Se ejecuta una vez por zombi, pero siempre a tus pies, así que coloca un bloque una y otra vez. La solución es usar ambos:

execute as @e[type=zombie] at @s run setblock ~ ~ ~ stone

at @s vuelve a anclarse al zombi que as acaba de seleccionar. as … at @s es la combinación más común de todo el comando, y olvidar at @s es el error más frecuente.

El orden es de izquierda a derecha, y se acumula

Los subcomandos se ejecutan en secuencia, y cada uno modifica el contexto que ve el siguiente:

execute as @a at @s positioned ^ ^ ^3 run particle flame
  1. as @a — una pasada por jugador
  2. at @s — muévete a ese jugador
  3. positioned ^ ^ ^3 — 3 bloques delante de donde está mirando

Si intercambias los pasos 2 y 3, positioned ^ ^ ^3 se calcula desde tu posición y orientación — y luego at @s lo descarta al volver a ajustar al jugador, así que el desplazamiento se pierde por completo.

Caret frente a tilde

  • ~ ~ ~ — relativo a la posición, alineado con los ejes del mundo
  • ^ ^ ^ — relativo a la orientación: izquierda, arriba, adelante

Las coordenadas caret son la razón de que positioned ^ ^ ^3 signifique "delante de" y ~ ~ ~3 signifique "3 bloques al sur". Mezclar las dos notaciones en una misma terna de coordenadas es un error de sintaxis.

store es un valor de retorno, no una variable

store captura lo que el comando devuelve — normalmente un recuento de éxitos o un valor de resultado:

execute store result score @s Count run data get entity @s Inventory

Dos cosas que la gente suele hacer mal:

  • result frente a success. result es el número que produce el comando; success es 1 o 0 según si se ejecutó. Para contar entidades hace falta result.
  • store va antes de run, y se aplica al comando que va después de run, no a la cadena de subcomandos.

if frente a unless cortocircuitan

if y unless filtran — la cadena se detiene ahí cuando la comprobación falla. Varias cláusulas if son un AND. No hay OR; eso requiere dos comandos separados o un predicado.

execute as @a if entity @s[gamemode=survival] if score @s Lives matches 1.. run ...

Construye la cadena subcomando a subcomando, con el contexto mostrado en cada paso, en el Advanced Command Builder — también cubre data, item, loot, schedule, particle y playsound desde el mismo formulario.

Constructor de comandos avanzados — Execute y Data →

Más guías

Ver todas →