Ten element dotyczy wyłącznie Java Edition. |
Funkcja − opcja w grze pozwalająca na uruchamianie zbiorów komend poprzez pliki tekstowe z rozszerzeniem .mcfunction
.
Użycie
Do użycia funkcji potrzebny jest plik tekstowy umieszczony w katalogu .minecraft/saves/[nazwa świata]/data/functions
. Pliki funkcji mogą być także umieszczane w podfolderach katalogu /functions
. W trybie wieloosobowym funkcje muszą być zapisane w każdym świecie, w którym mają być użyte.
Dla przykładu uruchamianie funkcji custom:przykład/test
będzie odpowiadać lokalizacji pliku functions/custom/przykład/test.mcfunction
. Jeśli przestrzeń nazw została pominięta przy próbie wywołania funkcji, domyślną przestrzenią nazw zostanie minecraft:
. Zalecane jes użycie własnej przestrzeni nazw bez modyfikowania domyślnej w celu zabezpieczenia przed błędami gry.[1]
Funkcje jako pliki tekstowe mogą być łatwo modyfikowane i nawet w większych ilościach są mniej podatne na powodowanie przeciążeń i błędów niż bloki poleceń. Po modyfikacji pliku funkcji należy użyć komendy /reload
, by załadować do gry nową zawartość pliku z dysku bez potrzeby ponownego uruchamiania świata.
W plikach funkcji zalecane jest używanie systemu kodowania UTF-8 (bez BOM-u), by zapobiec problemom.
Po pomyślnym załadowaniu funkcji na czacie wyświetli się wiadomość: Wykonano [ilość] komend(y) z funkcji '[folder pliku funkcji]'.
Składnia funkcji
W pliku .mcfunction
na jedną komendę przeznaczony jest jeden wiersz tekstu. Przed komendą nie używa się slasha (/
). Użytkownicy mogą dodawać komentarze do pliku funkcji, poprzedzając je znakiem #
.
Domyślnie pojedyncze komendy w funkcjach nie mogą zawierać więcej niż 65 536 znaków. Wartość ta może być jednak zmieniana dzięki komendzie i parametrowi /gamerule maxCommandChainLength
. Wszelkie komendy z ilością znaków powyżej nadanej wartości będą ignorowane podczas wykonywania funkcji.
Uruchamianie funkcji
Funkcje uruchomią wszystkie zawarte w nich komendy podczas trwania jednego ticku. Jeśli w danej funkcji znajduje się komenda wywołująca inną funkcję, wszystkie zostaną wywołane w ciągu tego samego czasu.
Zmiany pozycji bytów nie będą oddziaływać na komendy zapisane w funkcji przed następnym jej powtórzeniem, jeśli do zapisu pozycji użyto tyld ~. Komenda /execute
omija to działanie.
Na przykład:
tp @s ~ ~5 ~ setblock ~ ~-1 ~ emerald_block execute @s ~ ~ ~ setblock ~ ~-1 ~ diamond_block
Wywołana funkcja przeniesie gracza 5 bloków wyżej, umieści pod poprzednim miejscem jego pobytu blok szmaragdu, a na pozycji, na której znajduje się obecnie, umieści blok diamentu.
Poniżej znajdują się metody wywołania funkcji w grze:
Komendy
- Pozwala graczowi na jednorazowe wywołanie funkcji.
- Komenda może zostać uruchomiona przez byt lub blok poleceń poprzez
/function
. - Opcjonalne argumenty
jeśli
ijeśli nie
będą uruchamiane wyłącznie gdy zostanie podanyselektor
. - Użycie:
/function
- Komendy w funkcji są uruchamiane przez serwer.
- Koordynaty z jakich "serwer" wykonuje funkcje to (0, 0, 0).
- Jeśli potrzebne jest zapętlenie wielu funkcji, możliwe jest wstawienie komend aktywujących inne funkcje do konkretnego pliku funkcji.
- Użycie:
/gamerule gameLoopFunction <przestrzeń nazw:ścieżka/pliku/funkcji>
- Do zatrzymania zapętlenia funkcji należy użyć argumentu z nieistniejącą funkcją lub pozostawić argument pusty:
/gamerule gameLoopFunction -
(brak wartości jest domyślny).
Postępy
Postępy mogą aktywować funkcje po ich wykonaniu. Komendy w funkcji są uruchamiane przez ukończenie poprzez gracza danego postępu.
Działanie po wywołaniu funkcji dzięki ukończonemu postępowi jest określane przez pliki JSON używające wzoru
{ "działanie": { "funkcja": "przestrzeń nazw:ścieżka/do/pliku/funkcji" } }
Tagi
Funkcje mogą być grupowane poprzez użycie tagów w paczkach zasobów. Wywołanie konkretnego tagu komendą /function #(przestrzeń nazw):tag
uruchomi wszystkie funkcje z wpisanym danym tagiem.
Historia
Pełna wersja | |||||
---|---|---|---|---|---|
1.12 | -pre1 | Dodano funkcje. | |||
-pre3 | Komendy nie mogą już rozpoczynać się znakiem / (slashem). | ||||
Komentarze mogą teraz być dodawane tylko poprzez znak #; użycie // nie jest już obsługiwane. | |||||
-pre4 | Dodano nowe argumenty do komendy /function : [jeśli tak|jeśli nie] [selektor] | ||||
-pre6 | W komendach funkcje, gdy warunek nie może zostać spełniony, są rozważane pod względem możliwości powodzenia. | ||||
1.13 | 17w43a | Własne funkcje mogą być dodawane do paczek zasobów. | |||
17w45a | Funkcje są teraz w całości analizowane i buforowane przy ładowaniu. | ||||
17w49b | Funkcje mogą być teraz tagowane. | ||||
Teraz funkcje tagowane w minecraft:tick uruchamiają się w każdym ticku na początku jego trwania. |
Przypisy
Poniżej znajduje się lista przypisów na tej stronie.