/function 命令
来源:Commands/function,英文修订 ID:3581313。
使用 /function 命令自身的执行上下文(执行者、执行位置、角度等),运行对应函数文件中的命令。Java 版所需权限等级为 2;基岩版为 1,并需要启用作弊。
用法
Java 版运行数据包中的一个函数,或函数标签中的全部函数。基岩版运行行为包中的一个函数。
Java 版的 /return run function ...(或 /return run execute ... run function ...)与直接调用 /function 的行为不同:前者运行多个函数时,任一函数执行到第一个 /return 后就会停止;直接调用运行多个函数时,会执行全部函数,并把各返回值之和作为 /function 的 result。
语法
Java 版:
function <name>
function <name> <arguments>
function <name> with (block <sourcePos>|entity <source>|storage <source>) [<path>]
第一种运行函数或标签中的函数;后两种为函数宏提供参数。
基岩版:
function <name: filepath>
运行一个函数。
参数
<name>: function/name: filepath(CommandFilePath):要运行的函数。Java 版必须为资源位置,或带 # 前缀的函数标签。基岩版格式为 path/to/function/file,执行时解析为 [behavior_pack]/functions/path/to/function/file.mcfunction。
Java 版专用参数:
<arguments>: nbt_compound_tag:以 SNBT 格式的 NBT 复合标签提供宏参数。<sourcePos>: block_pos:要读取 NBT 的方块实体位置,由 X、Y、Z 三个整数或波浪号/插入符坐标组成。entity模式的<source>: entity:要读取 NBT 的单个实体,可用玩家名称、目标选择器或 UUID。storage模式的<source>: resource_location:要读取 NBT 的命令存储的资源位置。<path>: nbt_path:NBT 路径,应只选中单个复合标签。
结果
命令不完整或任一参数指定错误时无法解析。以下情况失败:
- 函数或函数标签不存在。
- Java 版函数标签中没有函数。
- 不带宏参数的
function <name>所运行函数含宏行。 with block的位置未加载、在世界之外,或该处不是方块实体。with entity的目标未解析为一个实体(以名称指定的玩家必须在线)。path没有标签、选中多个标签,或标签不是复合标签。- 提供参数后,任一宏行展开为无法解析的命令。
- 只指定一个函数,且其中执行的
/return返回失败。
如果只指定一个函数且未执行 /return,或指定多个函数但全部未执行 /return,则结果为 Void(无返回值)。其他情况成功。
输出
Java 版通过 /return run execute store ... run function ... 调用时:
| 情况 | 成功次数 | success | result |
|---|---|---|---|
| 失败 | 不适用 | 0 |
0 |
| Void | 不适用 | 不变 | 不变 |
| 成功 | 不适用 | 1 |
第一个非 Void 函数的返回值;任一指定函数首次执行 /return 后停止 |
Java 版其他调用方式:
| 情况 | 成功次数 | success | result |
|---|---|---|---|
| 失败 | 0 |
0 |
0 |
| Void | 0 |
不变 | 不变 |
| 成功 | 1 |
1 |
全部非 Void 函数返回值之和 |
基岩版失败时成功次数为 0,成功时为 1。
示例
以下均为 Java 版。运行数据包中 data/custom/function/example/test.mcfunction:
/function custom:example/test
运行 data/custom/tags/function/example/test.json 标签中的全部函数:
/function #custom:example/test
半径两格内有羊时运行:
/execute if entity @e[type=sheep,distance=..2] run function custom:example/test
执行者不是玩家时运行:
/execute unless entity @s[type=player] run function custom:example/test
以 a=42、b="example" 运行函数宏:
/function custom:example/test {a: 42, b: "example"}
使用 custom:storage 的宏参数。以下为原文示例,缺少语法表中的 storage 关键字,按原样保留:
/function custom:example/test with custom:storage
另见
/tag:原文链接用于说明批量、每刻或服务器重新加载时运行函数。
参考资料
外部链接
- Microsoft Learn:
/function命令,2023-10-11。
本文为 Minecraft Wiki 对应英文条目的中文翻译与改编,已按要求省略变更历史。原作者与贡献者见来源页及其历史;除另有说明外,按 CC BY-NC-SA 3.0 非商业、署名、相同方式共享。