MC Toolkit

Guias / Comandos e dados

/execute: por que a ordem de as/at importa e como store realmente funciona

A maioria das cadeias de execute quebradas vem da confusão entre quem executa o comando e onde ele é executado. Veja o que cada subcomando muda e a ordem que corrige isso.

/execute é um comando que se comporta como uma linguagem de script. Quase todas as falhas podem ser rastreadas até dois subcomandos que parecem fazer a mesma coisa, mas não fazem.

as muda QUEM. at muda ONDE.

  • as <target> — troca o executor. @s agora significa aquela entidade. A posição não se move.
  • at <target> — troca a posição, rotação e dimensão. O executor não muda.

Então, isso não faz nada útil:

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

Ele é executado uma vez por zumbi, mas sempre aos seus pés, então ele coloca um bloco repetidamente. A correção é usar ambos:

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

at @s se ancora novamente ao zumbi que as acabou de selecionar. as … at @s é o par mais comum em todo o comando, e esquecer at @s é o bug mais comum.

A ordem é da esquerda para a direita e é cumulativa

Os subcomandos são executados em sequência, cada um modificando o contexto que o próximo vê:

execute as @a at @s positioned ^ ^ ^3 run particle flame
  1. as @a — uma passada por jogador
  2. at @s — move para aquele jogador
  3. positioned ^ ^ ^3 — 3 blocos à frente de onde eles estão olhando

Troque os passos 2 e 3 e o deslocamento do acento circunflexo será medido a partir da sua rotação, em vez da deles.

Acento circunflexo versus til

  • ~ ~ ~ — relativo à posição, alinhado aos eixos do mundo
  • ^ ^ ^ — relativo ao olhar: esquerda, cima, frente

As coordenadas com acento circunflexo são o motivo pelo qual positioned ^ ^ ^3 significa "à frente" e ~ ~ ~3 significa "3 blocos ao sul". Misturar as duas notações em um único trio de coordenadas é um erro de sintaxe.

store é um valor de retorno, não uma variável

store captura o que o comando retorna — geralmente uma contagem de sucesso ou um valor de resultado:

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

Duas coisas que as pessoas erram:

  • result versus success. result é o número que o comando produz; success é 1 ou 0 para indicar se ele foi executado. Contar entidades requer result.
  • store vem antes de run, e se aplica ao comando depois de run, não à cadeia de subcomandos.

if versus unless de curto-circuito

if e unless filtram — a cadeia para ali quando o teste falha. Múltiplas cláusulas if são um E. Não há OU; isso requer dois comandos separados ou um predicado.

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

Construa a cadeia um subcomando por vez, com o contexto mostrado em cada etapa, no Construtor de Comandos Avançados — ele também cobre dados, itens, saques, agendamento, partículas e sons do mesmo formulário.

Gerador de comandos avançados — /execute e /data →

Mais guias

Ver todos →

Procurando mais ferramentas de Minecraft?

Um conjunto de geradores, visualizadores e conversores que rodam no navegador — tudo grátis.