MC Toolkit

Panduan / Perintah & Data

/execute: mengapa urutan as/at penting dan cara kerja store sebenarnya

Sebagian besar rantai execute yang rusak berasal dari kebingungan antara siapa yang menjalankan perintah dan di mana perintah itu dijalankan. Berikut ini apa yang diubah oleh setiap subperintah, dan urutan yang memperbaikinya.

/execute adalah satu perintah yang berpura-pura menjadi bahasa skrip. Hampir semua kegagalan bermuara pada dua subperintah yang terdengar seperti melakukan hal yang sama, padahal tidak.

as mengubah SIAPA. at mengubah DI MANA.

  • as <target> — menukar pelaksana. @s sekarang berarti entitas itu. Posisinya tidak berpindah.
  • at <target> — menukar posisi, rotasi, dan dimensi. Pelaksananya tidak berubah.

Jadi ini tidak melakukan hal yang berguna:

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

Perintah ini berjalan sekali per zombi, tetapi selalu di kaki Anda, jadi ia menempatkan satu blok berulang-ulang. Perbaikannya adalah keduanya:

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

at @s menambatkan ulang ke zombi yang baru saja dipilih oleh as. as … at @s adalah pasangan paling umum di seluruh perintah ini, dan melupakan at @s adalah bug paling umum.

Urutannya dari kiri ke kanan, dan efeknya bertumpuk

Subperintah berjalan berurutan, masing-masing mengubah konteks yang dilihat subperintah berikutnya:

execute as @a at @s positioned ^ ^ ^3 run particle flame
  1. as @a — satu putaran per pemain
  2. at @s — pindah ke pemain itu
  3. positioned ^ ^ ^3 — 3 blok di depan arah pandangan mereka

Tukar langkah 2 dan 3, maka positioned ^ ^ ^3 dihitung dari posisi dan arah hadap Anda — lalu at @s membuangnya dengan kembali ke posisi pemain, sehingga offsetnya hilang sepenuhnya.

Caret versus tilde

  • ~ ~ ~ — relatif terhadap posisi, sejajar dengan sumbu dunia
  • ^ ^ ^ — relatif terhadap arah hadap: kiri, atas, depan

Koordinat caret adalah alasan positioned ^ ^ ^3 berarti "di depan" dan ~ ~ ~3 berarti "3 blok ke selatan". Mencampur kedua notasi dalam satu trio koordinat adalah kesalahan sintaksis.

store adalah nilai kembalian, bukan variabel

store menangkap apa yang dikembalikan oleh perintah — biasanya jumlah keberhasilan atau nilai hasil:

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

Dua hal yang sering disalahpahami orang:

  • result versus success. result adalah angka yang dihasilkan perintah; success adalah 1 atau 0 untuk apakah perintah itu berjalan. Menghitung entitas memerlukan result.
  • store diletakkan sebelum run, dan berlaku untuk perintah setelah run, bukan untuk rantai subperintah.

if versus unless melakukan short-circuit

if dan unless menyaring — rantai berhenti di situ ketika pengujian gagal. Beberapa klausa if bersifat AND. Tidak ada OR; itu memerlukan dua perintah terpisah atau sebuah predikat.

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

Bangun rantai satu subperintah demi satu subperintah, dengan konteks ditampilkan di setiap langkah, di Advanced Command Builder — alat itu juga mencakup data, item, loot, schedule, particle, dan playsound dari formulir yang sama.

Perintah lanjutan — Execute dan Data →

Panduan lainnya

Lihat semua →