The Best Resource for Minecraft
The Best Resource for Minecraft

/execute: perché l'ordine di as/at è importante e come funziona davvero store

/execute: perché l'ordine di as/at è importante e come funziona davvero store

La maggior parte delle catene execute non funzionanti deriva dal confondere chi esegue il comando con dove viene eseguito. Ecco cosa cambia ogni sottocomando e l'ordine per risolvere il problema.

/execute is one command pretending to be a scripting language. Almost every failure traces to two subcommands that sound like they do the same thing and do not.

as cambia CHI. at cambia DOVE.

  • as <target> — scambia l'esecutore. @s now means that entity. **The position does

non si muove.**

  • at <target> — scambia la posizione, la rotazione e la dimensione. **L'esecutore non

cambia.**

Quindi questo non fa nulla di utile:

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

Viene eseguito una volta per zombi, ma sempre ai tuoi piedi, quindi piazza un blocco ripetutamente. La soluzione è entrambi:

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

at @s re-anchors to the zombie that as just selected. as … at @s is the single most common pairing in the whole command, e dimenticare at @s is the single most common bug.

L'ordine è da sinistra a destra e si accumula

I sottocomandi vengono eseguiti in sequenza, ciascuno modificando il contesto visto dal successivo:

execute as @a at @s positioned ^ ^ ^3 run particle flame
  1. as @a — one pass per player
  2. at @s — move to that player
  3. positioned ^ ^ ^3 — 3 blocks in front of where they are guardando

Scambia i passaggi 2 e 3 e l'offset del caret viene misurato dalla tua rotazione invece che dalla loro.

Caret contro tilde

  • ~ ~ ~ — relative to posizione, allineato agli assi del mondo
  • ^ ^ ^ — relative to orientamento: sinistra, su, avanti

Le coordinate caret sono il motivo per cui positioned ^ ^ ^3 means "in front of" and ~ ~ ~3 means "3 blocks south". Mixing the two notations in one coordinate triple is a syntax error.

store è un valore restituito, non una variabile

store captures what the command restituisce — di solito un conteggio dei successi o un valore di risultato:

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

Due cose su cui si sbaglia:

  • result versus success. result is the number the command produces; success

è 1 o 0 a seconda che sia stato eseguito. Per contare le entità serve result.

  • store goes before run, e si applica al comando dopo run, not to the

la catena di sottocomandi.

Cortocircuiti di if rispetto a unless

if and unless filter — the chain stops there when the test fails. Multiple if clauses are an AND. There is no OR; that needs two separate commands or a predicate.

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

Costruisci la catena un sottocomando alla volta, con il contesto mostrato a ogni passaggio, nel Generatore di comandi avanzato — copre anche data, item, loot, schedule, particle e playsound dallo stesso modulo.

Prova lo strumento: Advanced Command Builder — Execute & Data →