Guides / Commands & Data

/execute: dlaczego kolejność as/at ma znaczenie i jak działa store

Większość błędów w łańcuchach execute wynika z mylenia tego, kto wykonuje polecenie, z tym, gdzie jest ono wykonywane. Oto, co zmienia każde podpolecenie i kolejność, która to naprawia.

/execute to jedno polecenie udające język skryptowy. Prawie każda awaria wynika z dwóch podpoleceń, które brzmią, jakby robiły to samo, a tak nie jest.

as zmienia KTO. at zmienia GDZIE.

  • as <target> — zamienia wykonawcę. @s oznacza teraz ten byt. **Pozycja

nie zmienia się.**

  • at <target> — zamienia pozycję, rotację i wymiar. **Wykonawca nie

zmienia się.**

Więc to nie robi nic użytecznego:

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

Wykonuje się raz na każdego zombie, ale zawsze u twoich stóp, więc umieszcza jeden blok w kółko. Rozwiązaniem jest użycie obu:

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

at @s ponownie zakotwicza się do zombie, którego as właśnie wybrało. as … at @s to najczęstsza para w całym poleceniu, a zapomnienie o at @s to najczęstszy błąd.

Kolejność jest od lewej do prawej i kumuluje się

Podpolecenia wykonują się sekwencyjnie, każde modyfikując kontekst, który widzi następne:

execute as @a at @s positioned ^ ^ ^3 run particle flame
  1. as @a — jedno przejście na każdego Gracza
  2. at @s — przesuń się do tego Gracza
  3. positioned ^ ^ ^3 — 3 bloki przed tym, w co patrzą

Zamień kroki 2 i 3, a przesunięcie karetki będzie mierzone od twojej rotacji zamiast od ich.

Karetka kontra tylda

  • ~ ~ ~ — względem pozycji, wyrównane do osi świata
  • ^ ^ ^ — względem kierunku patrzenia: lewo, góra, przód

Współrzędne karetki są powodem, dla którego positioned ^ ^ ^3 oznacza „przed”, a ~ ~ ~3 oznacza „3 bloki na południe”. Mieszanie obu notacji w jednej trójce współrzędnych jest błędem składniowym.

store to wartość zwracana, a nie zmienna

store przechwytuje to, co polecenie zwraca — zazwyczaj liczbę sukcesów lub wartość wyniku:

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

Dwie rzeczy, które ludzie źle rozumieją:

  • result kontra success. result to liczba, którą polecenie produkuje; success

to 1 lub 0 w zależności od tego, czy się wykonało. Liczenie bytów wymaga result.

  • store idzie przed run, i dotyczy polecenia po run, a nie łańcucha

podpoleceń.

if kontra unless — krótkie spięcia

if i unless filtrują — łańcuch zatrzymuje się tam, gdy test się nie powiedzie. Wiele klauzul if to AND. Nie ma OR; to wymaga dwóch oddzielnych poleceń lub predykatu.

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

Buduj łańcuch podpolecenie po podpoleceniu, z kontekstem pokazanym na każdym kroku, w Zaawansowanym Kreatorze Poleceń — obejmuje on również dane, przedmioty, łupy, harmonogram, cząstki i dźwięki z tego samego formularza.

Komendy zaawansowane — Execute i Data →

More guides

Browse all →

Szukasz innych narzędzi do Minecrafta?

Zestaw generatorów, podglądów i konwerterów działających w przeglądarce — wszystkie za darmo.