/function 命令

/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:原文链接用于说明批量、每刻或服务器重新加载时运行函数。

参考资料

外部链接


本文为 Minecraft Wiki 对应英文条目的中文翻译与改编,已按要求省略变更历史。原作者与贡献者见来源页及其历史;除另有说明外,按 CC BY-NC-SA 3.0 非商业、署名、相同方式共享。