【我的世界命令教程】28 函数详解&Function命令&函数标签 |
您所在的位置:网站首页 › 我的世界命令方块怎么循环 › 【我的世界命令教程】28 函数详解&Function命令&函数标签 |
*原创文章,未经允许禁止转载或摘编 目录 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 |