ZenMethod 是暴露给 ZenScript 的 Java 方法。

静态方法可以被通过 ZenClass 类名使用,非静态的方法使用 object.methodName(参数……);
ZenMethod 注解可以与其他注解同时存在,如 ZenOperator 注解

什么方法可以被注解 || 额外信息

Link to 什么方法可以被注解--额外信息

  • 你可以注解所有的方法,包括静态的和非静态的。
  • ZenExpansion 中注解的方法需要一个额外参数。 该参数是此扩展类 Class 实例
  • 注解在 ZenExpansion 中的静态方法(例如工厂方法)时你需要使用 ZenMethodStatic
java
Copy
@ZenClass(value = "crafttweaker.tests.devWikiTest")
@ZenRegister
public class DevWikiTest {

    //将以 crafttweaker.tests.devWikiTest.方法名(参数)statics; 调用的静态方法
    @ZenMethod
    public static DevWikiTest staticMethod(int arg1) {
        return new DevWikiTest(arg1);
    }

    @ZenMethod
    public static void staticMethod2() {
        CraftTweakerAPI.logInfo("staticMethod2 called!");
    }

    @ZenMethod
    public static void staticMethodVarArg(int... args) {
        CraftTweakerAPI.logInfo("staticMethod3 called with " + args.length + " arguments");
    }



    //将以 instance.方法名(参数); 调用的非静态方法
    @ZenMethod
    public int getValue() {
        return value;
    }   

    @ZenMethod
    public void print() {
        CraftTweakerAPI.logInfo("DevWikiTest Object with value " + value);
    }

    @ZenMethod
    public void printWithVarArg(int... args) {
        CraftTweakerAPI.logInfo("Nonstatic called with " + args.length + " arguments");
    }


    private final int value;

    public DevWikiTest(int value) {
        this.value = value;
    }
}

ZS 脚本

ZenScript
Copy
val instance = crafttweaker.tests.devWikiTest.staticMethod(10);
crafttweaker.tests.devWikiTest.staticMethod2();
crafttweaker.tests.devWikiTest.staticMethodVarArg(10);
crafttweaker.tests.devWikiTest.staticMethodVarArg(10,20,30,40);

print(instance.getValue());
instance.print();
instance.printWithVarArg(10);
instance.printWithVarArg(10,20,30,40);