Funktionen sind Skripte, die eine beliebige Anzahl von Befehlen beinhalten.
Funktionsdateien
Funktionen werden im Weltordner unter /data/functions/<Namensraum> als Textdateien mit der Endung <Dateiname>.mcfunction gespeichert. Diese Dateien lassen sich mit einem Texteditor wie beispielsweise Notepad++ bearbeiten.
Jede einzelne Zeile in der Datei steht für einen Befehl. Dabei muss der Schrägstrich, der bei Eingabe eines Befehls in den Chat benötigt wird, weggelassen werden. Im Gegensatz zu Befehlsblöcken gibt es in Funktionsdateien keine Begrenzung für die Länge von Befehlen. Desweiteren können Zeilen auskommentiert werden, indem man an den Anfang der Zeile eine Raute # schreibt, d. h. diese Zeile wird dann nicht mehr vom Spiel beachtet.
Wird eine Funktionsdatei verändert oder hinzugefügt, während die Welt, zu der die Funktion gehört, geladen ist, müssen alle Funktionen durch den Befehl /reload neu geladen werden, damit die Änderungen wirksam sind.
Funktionsname
Der Name einer Funktion lautet normalerweise <Namensraum>:<Dateiname>. Funktionen können aber auch innerhalb eines Namensraum-Ordners weiterhin in Unterordner unterteilt sein, der Name der Funktionsdatei /data/functions/wiki/pfad/zur/funktionsdatei/funktion.mcfunction lautet dann beispielsweise wiki:pfad/zur/funktionsdatei/funktion.
Aufruf
Es gibt derzeit drei Möglichkeiten, Funktionen aufzurufen.
Befehl
Funktionen können mit dem Befehl /function <Funktion> aufgerufen werden. Es ist ebenfalls möglich, eine Funktion nur bedingt aufzurufen, näheres siehe dort. Die Befehle in einer Funktion werden in einem einzelnen Tick ausgeführt, auch wenn innerhalb der Funktion weitere Funktionen aufgerufen werden.
Befehle, die innerhalb einer Funktion ausgeführt werden, halten sich an die Befehls-Begrenzung die durch den Befehl /gamerule maxCommandChainLength angegeben werden kann. Standardmäßig sind es 65536 Befehle, die eine Funktion maximal ausführt.
Spielregel
Man kann mit dem Befehl /gamerule gameLoopFunction eine Funktion festlegen, die in jedem Tick einmal ausgeführt werden. Wenn man damit mehrere Funktionen gleichzeitig ausführen lassen möchte, muss man mit der mit dieser Spielregel festgelegten Funktion weitere Funktionen aufrufen.
Fortschritte
Benutzerdefinierte Fortschritte können eine Funktion einmal als Belohnung für das Erzielen eines Fortschritts ausführen. Die Befehle in der Funktion werden durch den Spieler ausgeführt, der den Fortschritt abgeschlossen hat.
Vor- und Nachteile
Da es sich bei den Funktionsdateien um einfache Textdateien handelt, lassen sich Befehle einfacher bearbeiten als beispielsweise in Befehlsblöcken. Allerdings kann man nicht einfach überprüfen, ob ein vorausgegangener Befehl erfolgreich war oder nicht, dafür muss man beispielsweise den Befehl /stats oder den Befehl /scoreboard verwenden.
Geschichte
Vor der Entwicklungsversion 1.12-pre1 hieß die Belohnung in den Fortschrittsdaten statt „function“ einfach „commands“. Dort konnten mehrere Befehle in einer JSON-Liste eingetragen werden. Diese Befehle wurden beim Erhalten eines Fortschritts nacheinander ausgeführt. Da die Fortschritte anschließend ausgenutzt wurden, um damit mehrere Befehle in einen einzigen Befehl /advancement zu vereinfachen, wurden diese Befehlslisten kurzerhand von den Entwicklern in Funktionen ausgelagert, um ein praktischeres System zur Verfügung zu stellen.
| Versionsgeschichte der Java Edition | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| Überblick |
| ||||||
|---|---|---|---|---|---|---|---|
| Befehle für Objekte |
| ||||||
| Befehle für Welten |
| ||||||
| Befehle für Server | |||||||
| Historisch | |||||||
| Bedrock Edition |
| ||||||
| Überblick | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Editionen |
| ||||||||
| Funktionsweise |
| ||||||||
| Software | |||||||||
| Multiplayer | |||||||||
| Universum |
| ||||||||
| Rezeption | |||||||||
| Vorläufer | |||||||||
| Scherze |
| ||||||||