|
|
| Linia 1: |
Linia 1: |
| Komenda '''{{Cmd|execute}}''' pozwala na operowanie na zmiennych oraz manipulację warunkami i sposobem wykonania innego polecenia.
| | #PATRZ [[Execute(komenda)]] |
| | |
| == Java Edition ==
| |
| | |
| === Składnia ===
| |
| Polecenie <code>/execute</code> posiada dwanaście instrukcji i każda z nich trzyma się swojej określonej składni. Oto one:
| |
| | |
| * <code>/execute</code> [...]
| |
| **<code>… '''align''' <''osie''> -> ''wykon.''</code>
| |
| **<code>… '''anchored''' (''eyes|feet'') -> ''wykon.''</code>
| |
| **<code>… '''as''' <''cele''> -> ''wykon.''</code>
| |
| **<code>… '''at''' <''cele''> -> ''wykon.''</code>
| |
| **<code>… '''facing''' (<''poz''>|entity <''cele''> (''eyes|feet'')) -> ''wykon.''</code>
| |
| **<code>… '''in''' <wymiar> -> ''wykon.''</code>
| |
| **<code>… '''positioned''' (<''poz''>|as <''cele''>) -> ''wykon.''</code>
| |
| **<code>… '''rotated''' (<''obr''>|as <''cele''>) -> ''wykon.''</code>
| |
| **<code>… '''store''' (''result|success'')</code> [...]
| |
| ***<code>… block <''pozDocel''> <''ścieżka''> (''byte|short|int|long|float|double'') <''skala''> -> ''wykon.''</code>
| |
| ***<code>… bossbar <''id''> (''max|value'') -> ''wykon.''</code>
| |
| ***<code>… entity <''cel''> <''ścieżka''> (''byte|short|int|long|float|double'') <''skala''> -> ''wykon.''</code>
| |
| ***<code>… score <''targets''> <''objective''> -> ''wykon.''</code>
| |
| ***<code>… storage <''cel''> <''ścieżka''> (''byte|short|int|long|float|double'') <''skala''> -> ''wykon.''</code>
| |
| **<code>… ('''if'''|'''unless'''])</code> [...]
| |
| ***<code>… block <''poz''> <''blok''> -> [''wykon.'']</code>
| |
| ***<code>… blocks <''początek''> <''koniec''> <''miejsceDocel''> (''all|masked'') -> [''wykon.'']</code>
| |
| ***<code>… data</code> [...]
| |
| ****<code>… block <''pozŹródł''> <''ścieżka''> -> [''wykon.'']</code>
| |
| ****<code>… entity <''źródło''> <''ścieżka''> -> [''wykon.'']</code>
| |
| ****<code>… storage <''źródło''> <''ścieżka''> -> [''wykon.'']</code>
| |
| ***<code>… entity <''byty''> -> [''wykon.'']</code>
| |
| ***<code>… predicate <''predykat''> -> [''wykon.'']</code>
| |
| ***<code>… score <''cel''> <''celDocel''></code> [...]
| |
| ****<code>… (''<|<=|=|>|>='') <''źródło''> <''celŹródł''> -> [''wykon.'']</code>
| |
| ****<code>… matches <''zasięg''> -> [''wykon.'']</code>
| |
| **<code>… '''run''' <''polecenie''></code>
| |
| | |
| <code>-> wykon.</code> oznacza tu kolejną instrukcję komendy <code>execute</code>. Instrukcje mogą łączyć, jedna za drugą, bez ograniczeń, jednak polecenie musi zakończyć się instrukcją <code>run</code>. Wyjątkiem są polecenia <code>if</code> i <code>unless</code> — te pozwalają na nieużycie instrukcji końcowej.
| |
| | |
| === Objaśnienia ===
| |
| Jedenaście komend podlega łączeniu — dziewięć z nich modyfikuje zmienne; pozostałe dwie są poleceniami warunkowymi. Instrukcja <code>run</code> zwieńcza polecenie <code>execute</code> i używana jest do jego realizacji.
| |
| | |
| Instrukcji warunkowych <code>if</code> i <code>unless</code> można użyć w celu policzenia wystąpień spełniających podane w poleceniu warunki. Taka komenda nie potrzebuje instrukcji <code>run</code>. Przykład: <code>/execute if entity @e[name="Steve"]</code>.
| |
| | |
| Instrukcje warunkowe <code>if</code> oraz <code>unless</code> mogą całkowicie uniemożliwić wykonanie polecenia. Wszystkie podane warunki muszą być spełnione, inaczej test zakończy się niepowodzeniem (co zostanie wyświetlone na czacie).
| |
| | |
| ==== Instrukcje podlegające łączeniu ====
| |
| | |
| #<code>… <''osie''> -> ''wykon.''</code> | |
| #:Wyrównuje obecne położenie wzdłuż siatki bloków, zaokrąglając w dół.
| |
| #:<code><''osie''></code> Podaj jakąkolwiek kombinację osi. Ta sama oś nie może wystąpić więcej niż raz. (Przykładowo: <code>x</code>, <code>xz</code>, <code>zyx</code>, <code>yz</code>).
| |
| #:''Przykład:'' Założywszy, że położenie równa się [-1.8, +2.3, +5.9], polecenie <code>/execute align xz run summon zombie ~ ~ ~</code> przywoła zombie przy współrzędnych [-2.0, +2.3, +5.0].
| |
| #:''Przykład:'' Założywszy, że położenie równa się [+2.4, -1.1, +3.8], polecenie <code>/execute align yxz run spawnpoint @p ~ ~ ~</code> ustawi miejsce odradzania gracza na [2, -2, 3].
| |
| #<code>… (''feet|eyes'') -> ''wykon.''</code>
| |
| #:Przechowuje odległość od stóp do oczu bytu wykonującego polecenie w zakotwiczeniu, będącego częścią kontekstu komendy.
| |
| #:Zakotwiczenie używane jest tylko w notacji daszkowej (<code>^ΔT ^ΔN ^ΔB</code>) i w instrukcji<code>facing</code> polecenia <code>execute</code>, które zachowują się, jak gdyby pozycja wykonania polecenia została przesunięta w górę o zapisaną wartość.
| |
| #<code>… <''cele''> -> ''wykon.''</code>
| |
| #:Wykonuje polecenie jako podane cele, ale nie zmienia pozycji.
| |
| #:Wpływa na funkcję zmiennej selektora celu (<code>@s</code>).
| |
| #<code>… <''target''> -> ''wykon.''</code>
| |
| #:Używa pozycji, rotacji i wymiaru celu, ale nie zmienia aktualnego bytu wykonującego (<code>@s</code>).
| |
| #:Wpływa na funkcję pozycjonowania <code>~Δx ~Δy ~Δz</code> i <code>^ΔT ^ΔN ^ΔB</code>.
| |
| #<code>… (<''poz''>|entity <''cel''> (''eyes|feet'')) -> ''wykon.''</code>
| |
| #:Używa pozycji, w której wykonano polecenie. Jest ona skierowana w stronę podanej pozycji lub w stronę oczu, lub stóp bytu docelowego.
| |
| #:Wpływa na funkcję pozycjonowania <code>^ΔT ^ΔN ^ΔB</code>.
| |
| #<code>… <''wymian''> -> ''wykon.''</code>
| |
| #:Wykonuje tak, jakby wykonawca był w podanym wymiarze.
| |
| #:Wpływa na wymiar polecenia, ale nie wpływa na pozycje X, Y i Z.
| |
| #:<code><''wymiar''></code> — ID słowne dla powierzchni, Netheru i Endu to kolejno: „overworld”, „the_nether” i „the_end”.
| |
| #<code>… (<''poz''>|as <''cele''>) -> ''wykon.''</code>
| |
| #:Używa albo podanych współrzędnych, albo współrzędnych jednostki docelowej jako ''aktualnej pozycji''.
| |
| #:Wpływa na funkcję pozycjonowania <code>^ΔT ^ΔN ^ΔB</code> i <code>~Δx ~Δy ~Δz</code>. Nie zmienia rotacji, wymiaru ani celu <code>@s</code>.
| |
| #<code>… (<''rot''>|as <''targets''>) -> ''wykon.''</code>
| |
| #:Wykonuje tak, jakby wykonawca był obrócony albo w danym kierunku, albo w tym samym kierunku, w którym znajduje się byt docelowy.
| |
| #:Wypływa na rotację komendy.
| |
| #<code>… (''result|success'') (''block|bossbar|entity|score|storage'') <''arguments''> -> ''wykon.''</code>
| |
| #:Zapisuje wynik lub pomyślność polecenia. Ta instrukcja zastąpiła komendę <code>/stats</code>.
| |
| #:<code>result</code> — zwraca wynik polecenia. (Zastępuje stare statystyki: AffectedBlocks, AffectedEntities, AffectedItems, QueryResult.)
| |
| #:<code>success</code> — zwraca ilość pomyślnych wystąpień polecenia. Zazwyczaj zwróci <code>0</code> lub <code>1</code>, ale jeżeli komenda jest podzielona (jako np. „/execute as @a -> ''execute''”) wtedy wynik może wynieść więcej niż <code>1</code>. (Zastępuje starą statystykę SuccessCount.)
| |
| #:Po nieudanej próbie „success” i „result” wynoszą <code>0</code>. Wartość zostaje zapisana po pełnym wykonaniu polecenia.
| |
| #*<code>… block <''poz''> <''ścieżka''> (''byte|short|int|long|float|double'') <''skala''> -> ''wykon.''</code>
| |
| #*:Zapisuje zwracaną wartość danych NBT w danym położeniu bloku.
| |
| #*:<code><''ścieżka''></code> — nazwa tagu danych, w którym ma zostać zapisana wartość.
| |
| #*<code>… bossbar <''id''> (''value|max'') -> ''wykon.''</code>
| |
| #*:Zapisuje zwróconą wartość jako albo obecną wartość, albo maksymalną wartość danego paska bossa.
| |
| #*:<code><''id''></code> — ID paska bossa, w którym ma zostać zapisana wartość.
| |
| #*:<code>value</code> — określa, że wartość (''value'') ma zostać nadpisana przez zwróconą wartość polecenia.
| |
| #*:<code>max</code> — określa, że maksymalna wartość (''max'') ma zostać nadpisana przez zwróconą wartość polecenia.
| |
| #*<code>… entity <''cel''> <''ścieżka''> (byte|short|int|long|float|double) <''skala''> -> ''wykon.''</code>
| |
| #*:Używa ścieżkę (<code>path</code>) tagu danych jednego bytu docelowego w celu zapisania zwróconej wartości. Zapisuje jako liczbę typu ''byte, short, int, long, float'' lub ''double''.
| |
| #*:Podobnie, jak komenda <code>/data</code>, polecenie <code>/execute store <''argumenty''></code> nie może modyfikować tagów NBT gracza.
| |
| #*<code>… score <''nazwa''> <''cel''> -> ''wykon.''</code>
| |
| #*:Używa tabelę wyników o podanej ''<nazwie>'' i podanym ''<celu>'' w celu zapisania zwróconej wartości.
| |
| #*:<''cel''> musi istnieć, ale — w przeciwieństwie do polecenia <code>/stats</code> — nie ma potrzeby wpisywania wartości dla argumentu ''<nazwa>.''
| |
| #*<code>… storage <''cel''> <''ścieżka''> (''byte|short|int|long|float|double'') <''skala''> -> ''wykon.''</code>
| |
| #*:Używa ''<ścieżkę>'' do docelowego magazynowania (argument ''<ścieżka>'') w celu zapisania wartości.
| |
| #*:Tworzy nowy magazyn, jeżeli ten nie istnieje.
| |
| #*:<code><''cel''></code> — docelowy kontener magazynu (w przestrzeni nazw).
| |
| #*:<code><''ścieżka''></code> ''—'' nazwa tagu danych, w którym gracz chce zapisać zwróconą wartość.
| |
| #<code>… '''(if|unless)''' (''block|blocks|data|entity|predicate|score'') <''argumenty''> -> [''wykon.'']</code>
| |
| #:Przed przystąpieniem do wykonywania komendy sprawdza, czy spełnione są podane warunki.
| |
| #*<code>… block <''poz''> <''blok''> -> [''execute'']</code>
| |
| #*:Porównuje blok o danych współrzędnych do podanego ID słownego bloku.
| |
| #*<code>… blocks <''początek''> <''koniec''> <''miejsceDocel''> (''all|masked'') -> [''wykon.'']</code>
| |
| #*:Porównuje obszar pomiędzy współrzędnymi podanymi w argumentach ''<początek>'' i ''<koniec>'' z drugim obszarem, którego współrzędne podane są w argumencie ''<miejsceDocel>''. Obliczanie obszarów i argument <code>(all|masked)</code> działają tak samo, jak w komendzie {{Cmd|clone}}.
| |
| #*<code>… data (block <''poz''>|entity <''cel''>|storage <''źródło''>) <''ścieżka''> -> [''wykon.'']</code>
| |
| #*:Wykonuje instrukcję, jeżeli docelowy blok, byt lub magazyn, ma jakiekolwiek dane tagu określonego argumentem ''<ścieżka>'' (dla ''if'').
| |
| #*:Nie wykonuje instrukcji, jeżeli docelowy blok, byt lub magazyn, ma jakiekolwiek dane tagu określonego argumentem ''<ścieżka>'' (dla ''unless'').
| |
| #*:<code><''ścieżka''></code> — określa tag NBT, którego należy szukać. To łańcuch nadrzędnych nazw tagów Javo-podobnej formy <code>highestTag.child.childsChild…parent.targetDataTag</code>.
| |
| #*:''Przykład:'' <code>/execute as @e if data entity @s ArmorItems[0].id</code> sprawdza, czy jakikolwiek byt ma ''id'' przedmiotu umieszczonego w polu (slocie) zbroi przeznaczonym na buty. Należy wziąć pod uwagę, że polecenie zawsze wartość prawdziwą (<code>true</code>) u wszystkich mobów — noszących zbroję czy też nie.
| |
| #*<code>… entity <''cele''> -> [''wykon.'']</code>
| |
| #*:Wykonuje instrukcję, jeżeli istnieje jeden lub więcej ''<celów>'' (dla ''if'').
| |
| #*:Nie wykonuje instrukcji, jeżeli istnieje jeden lub więcej ''<celów>'' (dla ''unless'').
| |
| #*<code>… predicate <''predykat''> -> [''wykon.'']</code>
| |
| #*:Wykonuje instrukcję, jeżeli predykat otrzyma pomyślny wynik (dla ''if'').
| |
| #*:Wykonuje instrukcję, jeżeli predykat otrzyma wynik zakończony niepowodzeniem''.'' (dla ''unless'').
| |
| #*<code>… score <''cel''> <''celDocel''> (''<|<=|=|>=|>'') <''źródło''> <''celŹródł''> -> [''wykon.'']</code>
| |
| #*:Wykonuje instrukcję, jeśli wynik bytu docelowego dokładnie odnosi się do wyniku bytu źródłowego, biorąc pod uwagę jakiegoś operatora warunkowego (dla ''if'').
| |
| #*:Nie wykonuje instrukcji, jeśli wynik bytu docelowego dokładnie odnosi się do wyniku bytu źródłowego, biorąc pod uwagę jakiegoś operatora warunkowego (dla ''unless'').
| |
| #*<code>… score <''cel''> <''celDocel''> matches <''zasięg''> -> [''wykon.'']</code>
| |
| #*:Wykonuje instrukcję, jeśli wynik bytu docelowego mieści się w podanym zakresie (dla ''if'').
| |
| #*:Wykonuje instrukcję, jeśli wynik bytu docelowego nie mieści się w podanym zakresie (dla ''unless'').
| |
| #<code>unless <''argumenty''> -> [''wykon.'']</code>
| |
| #:''Patrz: ppkt. 10. —'' <code>(if|unless)</code>
| |
| | |
| === Pozostałe ===
| |
| | |
| :Oprócz powyższych jedenastu instrukcji istnieje jeszcze instrukcja <code>run</code>.
| |
| :*<code>… run <''polecenie''></code>
| |
| :*:Określa wykonywaną komendę, której zmienne mogą być zmodyfikowane przez użyte instrukcje.
| |
| :*:''<poleceniem>'' może być każda komenda istniejąca w ''Minecrafcie''.
| |
| :*:''Technicznie:'' Resetuje węzeł polecenia, redukując do rdzenia dyspozytora poleceń.
| |
| :*::;Modelowanie poleceń jako tekst czatu...
| |
| :*:::'''Dyspozytor poleceń''' jest rozpoczynany po wpisaniu przez gracza znaku <code>/</code> (ukośnika).
| |
| :*:::'''Węzeł polecenia''' jest konkretnym słowem/wpisem, które jest edytowane przez kursor — albo polecenie, albo argument.
| |
| :*:::'''Węzeł główny''' stoi przed pierwszym słowem w twojej komendzie.
| |
| | |
| ;Przykłady
| |
| | |
| *<code>/execute at @a anchored eyes run particle smoke ^ ^ ^3</code>
| |
| *<code>/execute as @e[type=pig] at @s store success entity @s Saddle byte 1 if entity @p[distance=..5]</code>
| |
| *<code>/execute as @a at @s if block ~ ~ ~ water run say Buty mi przemokły!</code>
| |