Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

了解更多

Minecraft Wiki
Advertisement

Template:Desktop

函数(Function)是一个允许玩家利用扩展名为.mcfunction的文本文档编写和运行多行命令的功能。

用法

要使用函数,首先必须把文本文档放置在.minecraft/世界名称/data/functions文件夹中。随后可使用后文所述的几种方法运行。

函数文件必须继续分类到多个子文件夹中,然后使用命名空间:指向函数文件的路径的格式运行,其中命名空间functions文件夹下第一层子文件夹的名称。 例如,custom:example/test会引用文件世界名称/data/functions/custom/example/test.mcfunction。如果调用函数时未指定命名空间,则默认为minecraft:

在文本文档里,要每行放置一个有效的命令(不输入斜杠/)。玩家可以在函数文本文档中使用#添加注释。如果新增或修改了函数文件,可使用/reload命令从硬盘中重新加载函数文件,让Minecraft识别出函数文件的更改。在函数里运行的命令会遵守/gamerule maxCommandChainLength

函数中的命令可超越命令方块中32,500的字符限制。同时,函数中的所有内容会在1游戏刻内同时运行。函数中调用的其它函数也会在同一刻内运行。在一个执行周期内,函数中命令顺序的改变不会影响本函数、函数内调用的其它函数的命令中相对坐标的参考点。/execute命令可以绕过这个特性。例如:

tp @a ~ ~5 ~
setblock ~ ~-1 ~ emerald_block
execute @a ~ ~ ~ setblock ~ ~ -1 ~ diamond_block

这3个命令会将所有玩家向上传送5方格、将绿宝石方块放置在玩家传送前位置的脚下,并将钻石方块放置在玩家传送后位置的脚下。/execute命令的这种行为不会影响目标选择器中的坐标参数,但会在每次执行命令前先检查目标的当前位置。

函数文件是简单的文本文档,因此函数容易修改,且比起命令方块而言,函数在大量执行时不易产生卡顿。然而,函数的成功输出不能被红石中继器检测(在不使用复杂的记分板命令的情况下)。

游戏中目前有以下几种方式运行函数:

命令

/function
  • 允许玩家运行一个函数一次。
  • 函数中命令的运行身份为实体或执行/function命令的命令方块。
  • 具有可选参数ifunless,可仅在目标选择器选中或未选中对象时运行函数。
  • 语法:function <函数名> [if|unless] [目标选择器]
/gamerule gameLoopFunction
  • 函数每一刻均运行一次。
  • 函数中命令的运行身份为服务器本身。
  • 若需要执行多个函数,可在主函数内调用其它函数。
  • 语法:/gamerule gameLoopFunction <命名空间:指向函数文件的路径>

进度

达成一个进度时,可以运行一个函数作为奖励。函数中命令的运行身份是达成进度的玩家。

奖励函数在进度JSON文件中通过以下方式调用:

{
    "rewards": {
        "function": "命名空间:指向函数文件的路径"
    }
}

历史

release
1.121.12-pre1函数功能加入游戏。
1.12-pre3函数中的命令不再允许以反斜杠“/”开头。
现在仅能使用#来注释,不再允许使用先前的//
1.12-pre4加入了新的参数:[if|unless] [选择器]
1.12-pre6在命令中使用函数时,函数执行被跳过(执行条件不符)的情况现在被视为命令失败。

漏洞

Template:Issue list

Advertisement