/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. Aqui está o que cada subcomando muda e a ordem que corrige isso.
/execute é um comando que se disfarça de linguagem de script. Quase todas as falhas se devem a dois subcomandos que parecem fazer a mesma coisa, mas não fazem.
as muda QUEM. at muda ONDE.
as <target>— troca o executor.@sagora significa aquela entidade. **A posição
não muda.**
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
as @a— uma passagem por Jogadorat @s— move para aquele Jogadorpositioned ^ ^ ^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 uma tripla 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:
resultversussuccess.resulté o número que o comando produz;success
é 1 ou 0 para indicar se ele foi executado. Contar entidades requer result.
storevem antes derun, e se aplica ao comando apósrun, 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 AND. Não há OR; 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 Advanced Command Builder — ele também cobre dados, itens, saques, agendamento, partículas e playsound do mesmo formulário.