【我的世界命令教程】28 函数详解&Function命令&函数标签

您所在的位置:网站首页 我的世界命令方块怎么循环 【我的世界命令教程】28 函数详解&Function命令&函数标签

【我的世界命令教程】28 函数详解&Function命令&函数标签

2023-08-18 13:41| 来源: 网络整理| 查看: 265

*原创文章,未经允许禁止转载或摘编

目录

Part 1 - 函数机制简介

Part 2 - 函数文件内容(格式&编辑&保存)

Part 3.1 - 实装 [1.12-1.12.2] (包括使用/function直接调用函数)

Part 3.2 - 实装 [1.13+] (包括制作数据包和使用/function直接调用函数)

Part 4.1 - 自定义标签 (使用自定义标签标记函数和使用/function通过标签间接调用函数)

Part 4.2 - tick标签 & load标签

重要:一个函数文件中可以保存一堆命令,函数文件指的是物理上保存的一个文件实体,函数指的是对应函数文件中保存的命令集合。

Part 1 - 函数机制简介

说起"/function"命令,我们可以看到wiki中对它的解释:运行一个函数。

比如这样......

......_(´ཀ`」 ∠)_...

幸好,MC的函数不是这个函数!

在 Minecraft Java 1.12 中,新增了函数机制。

函数:我们将一些为实现某功能的命令集合称为一个函数。

函数文件:我们将每个函数分别保存到后缀名为".mcfunction"的文件中,每一个文件就是一个函数文件。

/function:将这些编辑好的函数文件保存到存档中指定的地方后,在游戏中打开存档,就可以使用"/function"命令来调用、执行指定的函数(文件内的命令)。

函数的优点

函数文件作为一个文本文件,其中的命令可以很容易地进行修改,转发。

函数在打开存档的时候被载入游戏。若正在游戏中,修改了文件的内容,可在游戏中使用 /reload 刷新文件,该命令 1.12+ 通用。

相较于命令方块,在执行大量命令时,函数拥有更高的流畅度,占用的资源更少。

函数文件中的单个命令长度不受命令方块字符数上限32500的限制。

函数机制增强了命令的可复用性、模块性。

函数文件内可以随意添加注释。

函数的缺点

相较于命令方块,函数文件内的命令之间没有条件制约的概念。即,无论文件内的某条命令执行成功与否,只要调用执行了该函数文件,文件内的所有命令都将被顺序执行。

注①:在每个存档中可以保存不止一个函数(文件)。

注②:Java 1.12-1.12.2 版本和 Java 1.13+ 版本,函数文件的保存位置不同,但是函数文件的内容和格式没有区别。

1.12-1.12.2 的位置:存档名称/data/function/命名空间/...

1.13+ 的位置:存档名称/datapacks/数据包名称/data/命名空间/functions/...

Part 2 - 函数文件内容(格式&编辑&保存)

① 新建一个文本文件,然后输入以下内容。

② 保存时必须使用不带BOM的UTF-8编码,且需将后缀名改为".mcfunction"。

图1 - Win10 记事本

这样,一个简单的函数就编辑并且保存好了。

我为其命名为 novices.mcfunction,novices就是这个函数文件对应的函数名。

注:因为函数文件是一个文本文件,所以任何可以编辑文本文件的软件都可编辑它。

Part 3.1 - 实装 [1.12-1.12.2]

① 打开存档文件夹:存档名/data/functions 。

图2 - 打开存档内的函数文件夹

② 新建一个名为 TEST (随意取名,该名称称为命名空间)的文件夹,然后将刚刚保存的函数文件放入TEST文件夹。

图3 - 将函数文件放入文件夹

③ 进入游戏,打开该存档,使用 "/function TEST:novices" 运行该函数。

图4 - 注:TEST:novices 和 test:novices 均可运行。

注:命令格式为 /function 命名空间:函数名 。

图5 - 执行结果

总结:

如果函数放置在 存档名/data/functions/命名空间/函数.mcfunction

使用 /function 命名空间:函数 运行;

如果函数放置在 存档名/data/functions/命名空间/xxx/yyy/函数.mcfunction

使用 /function 命名空间:xxx/yyy/函数 运行;

警告:必须建立类似 TEST 的文件夹作为命名空间存放函数,直接将函数放入functions文件夹是不允许的。

另外,在 1.12-1.12.2 版本中,还有一条游戏规则:

/gamerule gameLoopFunction XX:xx

该规则指定一个函数,被指定的函数将自动在每游戏刻运行一次(1秒=20游戏刻)。

若要取消已指定的函数,重新设置一个不存在的函数即可。

Part 3.2 - 实装 [1.13+]

在1.13版本后,Minecraft 将函数和资源包等自定义扩展整合为数据包统一管理,所以如果使用函数还得做个简易数据包。另外,1.13+后,可以给函数增加标签,某些情况下可以更加方便的使用函数。

本文使用 1.17 作为 1.13+ 版本的例子:

① 打开新的数据包文件夹:存档名/datapacks 。

图6 - 打开存档内的数据包文件夹

② 新建一个名为 anye (随意取名,anye 即为数据包名称)的文件夹。

③ 在 datapacks/anye 文件夹中新建一个文本文档,输入以下内容,并保存为 pack.mcmeta (该文件名不得更改)。

"pack_format"的值根据游戏版本更改:1.13-1.14.4为4,在1.15-1.16.1为5,1.16.2-1.16.5为6,1.17此数值为7。

"description"的值可以为字符串或JSON文本。在使用 "/datapack list" 查询当前加载的数据包时,作为描述文本显示。

图7 - 描述文本

④ 在 datapacks/anye 文件夹中新建 data (该文件夹名不得更改)文件夹。

⑤ 在 datapacks/anye/data 文件夹内新建 anye (随意取名,这个anye即为命名空间,和之前的TEST性质一样,应尽量避免与别的数据包冲突,建议和数据包名称保持一致)文件夹。

⑥ 在 datapacks/anye/data/anye 文件夹内新建 functions (该文件夹名不得更改,这个文件夹可以理解为函数文件夹)文件夹。

⑦ 将之前的 novices.mcfunction 文件拖入 functions 文件夹内。

⑧ 进入游戏,输入"/function anye:novices" 命令运行。

图8 - 1.17 聊天框执行命令图9 - 1.17 执行结果

总结:

如果函数放置在 存档名/datapacks/数据包名称/data/命名空间/functions/函数.mcfunction

使用 /function 命名空间:函数 运行;

如果函数放置在 存档名/datapacks/数据包名称/data/命名空间/functions/xxx/yyy/函数.mcfunction

使用 /function 命名空间:xxx/yyy/函数 运行。

Part 4.1 - 自定义标签

在 1.13+ 版本中,可以使用标签来标记函数,然后使用 /function #命名空间/标签名 来运行该标签下的所有函数。

我们在刚刚建立的数据包中继续新建一些文件夹和文件。

① 在 datapacks/anye/data/anye 文件夹内新建 tags (该文件夹名不得更改)文件夹。

解释:在我们数据包中的anye命名空间下新建标签文件夹。

② 在 datapacks/anye/data/anye/tags 文件夹内新建 functions (该文件夹名不得更改)文件夹。

解释:因为要标记的是函数,所以在标签文件夹下新建函数文件夹。

③ 在 functions 文件夹中新建文本文件,输入以下内容,并保存为 ftag.json (ftag即为标签名,可随意命名)。

"values"列表中即为指定需要运行的函数。名称和/function中调用的名称一样。

这样,我们就在anye命名空间下,新建了一个ftag的函数标签,并且标记了一个函数。

现在,使用 /function #anye:ftag 和 /function anye:novices 的效果是一样的。

需指定多个函数时的格式:

Part 4.2 - tick标签 & load 标签

在1.12-1.12.2中只能通过游戏规则设置一个函数在每个游戏刻都运行一次。

1.13+中,可以使用 tick标签 来指定多个函数在每个游戏刻都运行一次,可以使用 load标签 来指定多个函数在加载数据包后的第一个游戏刻运行一次。

因为游戏仅识别minecraft命名空间中的tick标签和load标签,所以需要在我们的数据包中新建minecraft命名空间。

① 在 datapacks/anye/data 文件夹内新建 minecraft (该文件夹名不得更改)文件夹。

② 在 datapacks/anye/data/minecraft 文件夹内新建 tags (该文件夹名不得更改)文件夹。

③ 在 datapacks/anye/data/minecraft/tags 文件夹内新建 functions (该文件夹名不得更改)文件夹。

④ 在 functions 文件夹中新建文本文件,输入以下内容,并保存为 load.json (tick.json也在此存放,内容同理)。

注①:同一个函数可以被多个标签同时标记。

注②:标签文件内的函数列表如果出现了重复的函数,并不会重复执行,仅以其第一次出现时的位置为准。

图10 - 黄色部分为可变内容

*原创文章,未经允许禁止转载或摘编

欢迎加入Q群:809709841

烦请各位读者大大们来个三连,关注我看更多Minecraft的内容 ^_^~~~

谢谢阅读!!

关注点赞哟!!!(ˉ▽ ̄~) ~~



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3