Eigene Funktionen

Link to eigene-funktionen

Manchmal reichen die Funktionen von CraftTweaker und dessen Addons einfach nicht aus. Deswegen kannst du auch eigene Funktionen schreiben! Du kannst sogar Funktionen in Funktionen verschachteln.

Normalerweise definiert man eine Funktion in etwa so:

ZenScript
Copy
function NAME ([argumente[as typ]]) [as returnTyp]{
    [Statements]
    [return WERT;]
}

Die Dinge in den eckigen Klammern sind optional. Schauen wir uns ein paar bestimmte Funktionen an:

Statische Funktionen

Link to statische-funktionen

Static functions are created before the script is run and can be accessed from anywhere in the script.
You can even access functions declared outside the script using the cross-script reference.

Funktion ohne Rückgabewert

Link to funktion-ohne-rückgabewert

Funktionen ohne Rückgabewert geben, wie der Name es sagt, keinen Wert zurück.

ZenScript
Copy
//ruft die Funktion tens() ohne Parameter auf
tens();

//ruft die Funktion realTens() mit der Zeichenkette "Hello World!" als Parameter auf
realTens("Hello World!");


//erstellt die Funktion tens() ohne Parameter
function tens(){
    //Ruft die Funktion realTens() auf mit "" als Parameter
    realTens("");
}


//erstellt die Funktion realTens() mit einer benötigten Zeichenkette als Parameter
function realTens(a as string){
    //gibt den Parameter 10 mal aus
    for i in 1 to 11{
        print(a);
    }
}

Funktion mit Rückgabewert

Link to funktion-mit-rückgabewert

Du kannst auch einen Rückgabewert definieren, welcher beim ausführen der Funktion zurückgegeben wird. Wir empfehlen dir dazu mit dem Schlüsselwort as den Rückgabetyp zu definieren.

ZenScript
Copy
//ruft die Funktion add mit 1 und 99 als Parameter auf
val result = add(1,99);
print(result);

//du kannst die add-Funktion auch in die print-Funktion setzen
print(add(2,64));

//definiert die Funktion add() mit a und b als Parameter vom Typ Integer und setzt den Typ des Rückgabewerts auf Integer
function add(a as int,b as int) as int{
    //gebe die summe von a und b zurück
    return a+b;
}

Default arguments

Link to default-arguments

You can also set some parameters default value. These parameters can be ignored and use default value when you call the function.

ZenScript
Copy
function name(a as int, b as int = 2, c as int = 3) as void {
    print(a + b + c);
}

name(1); // print 6 [1 + 2 (default) + 3 (default)] 
name(1, 3); // print 7 [1 + 3 + 3 (default)] 
name(1, 1, 4); // print 6 [1 + 1 + 4] 
  • You can use bracket handlers and functions for default arguments. But variables are not allowed.
  • Once a parameter has a default argument, the parameters after it also require a default argument.

Functions as variables

Link to functions-as-variables

You can also use functions like variables. In this case, they will be created as separate classes. Other than that, they work pretty much the same as static functions, you call them by their variable name.
You can even use them as global variables this way.

If you need to cast the method (as you do for globals) you can use this:

Copy
global addition as function(int, int)int = function (a as int, b as int) as int {
    return a + b;
};

print(addition(1,2));