函数 (Function)

函数是包含多行指令的数据包文件,其文件扩展名为“.mcfunction”。

以及以标签形式运行的“标签函数”,在标签函数中,可以添加多个函数,并同时运行。

函数与连锁型命令方块较为类似;不同之处在于函数执行命令时更快,且不会受到命令方块内最大输入字符数 25565 的限制,但是同样受到链命令最多执行次数的限制。

此功能为Java版独有。

该功能在 Minecraft 正式版 1.20.2 中被正式地加入到游戏当中。

arguments 参数

arguments 参数是宏命令执行的必须参数。

该参数由 SNBT 字段组成。

示例:

{arg1: 10.0f, arg2: "string", arg3: ["list","element1","element2"]}

宏函数

包含宏行的函数可以被称为宏函数。

宏函数的调用在原有 /function 命令的基础上,arguments 参数必须存在。

/function <macro_function> <arguments>

示例:

/function foo:bar1 # 普通函数
/function foo:bar2 {arg1:"value"} # 宏函数

宏行

当函数中的某行命令以美元符号($)开头,该行为宏行。

$macro ...

当宏行内出现 $(key) 时,将尝试引用 arguments 中 SNBT 字段中相应键对应的值,游戏都尝试将宏行中的 $(key) 替换为对应的具体值,最终得到一个确定的命令并执行。

$macro $(arg1) $(arg2) ...

以下为一个示例:

游戏内调用一个宏函数 foo:bar

function foo:bar {key1: "宏命令", key2: 10, key3: "冗余参数,不被调用而被跳过"}

foo:bar 函数内容

say 这是一条普通命令
$say 这是一条$(key1)!
$teleport @s ~ ~$(key2) ~

游戏进行宏替换后

say 这是一条普通命
say 这是一条宏命令!
teleport @s ~ ~10 ~

短评加载中..