Custom Functions
Link to custom-functions
Functions are a way to simplify and clean up code. In ZenCode, a function is a piece of code, that executes some code. That's the most bare-bones definition of it. An actual function is an abstract chunk of code that takes parameters and executes code based on them, with an optional return type.
Declaring a Custom Function
Link to declaring-a-custom-function
Declaring a custom function is done through a syntax similar to this:
ZenScript Copy<public> function functionName(params... as ParamTypes) as ReturnType {
//Function body goes here.
//If the function has a return type, a return statement will be necessary:
return value;
}
Let's break this down, shall we?
<public>
This is an optional access keyword. Adding the public keyword will make the function accessible through other scripts.
function
This is standard function declaration. This tells the ZenCode engine to treat whatever is coming as a function.
functionName
The function needs a unique name, which is how it will be executed.
(params... as ParamTypes)
A function can have parameters. Parameters are declared by typing in the parameter name and casting it to the desired type. The parameter name is used in the function's body, while the parameter type is used by the ZenCode engine to ensure that, when calling the function, the desired and used types for the parameters match.
as ReturnType
A function must have a return type. If it should return nothing, void
should be use. Otherwise, you use whatever type you wish the function to return.
{
This marks the beginning of the function's body. Code that interacts with the supplied parameters will be placed here. If a function has a return type that's not void
, a return statement is necessary.
}
This marks the ending of a function's body and declaration. No semicolons are necessary after this.
Calling a function
Link to calling-a-function
Calling or executing a function is pretty easy. It requires you to use the function's name and it's parameters.
ZenScript Copy
functionName(params);
Example
Link to example
Let's take a look at different kinds of functions. These do different things, from niche things to simplifying our code. For simplicity's sake, they have been split into declaration and execution, but the order they are placed in a script does not matter.
ZenScript Copy
function hide(item as crafttweaker.api.item.IItemStack) as void {
craftingTable.remove(item);
//This will only work in a Forge Environment
mods.jei.JEI.hideIngredient(item);
}
public function printStartScript(scriptName as string) as void {
println("=====================================================");
println(" STARTING SCRIPT: "+scriptName+" ");
println("=====================================================");
}
function addition(a as int, b as int) as int {
//We are using this to return a value and use it!
return a + b;
}
printStartScript("Functions");
var sum = addition(5, 3);
println("The sum of 5 and 3 is: "+ sum);
hide(<item:minecraft:pumpkin>);
Why functions?
Link to why-functions
Function definitions can be used to define functions which do not exist within the context of a surrounding class. They are mostly useful to define utility functions or helper functions inside scripts.
Sometimes though, it's better to make a custom Object or Class through the use of a ZenClass.