我的世界函数指令如何编辑和使用?( 二 )


+ functions+ sayhi.mcfunctionbye.mcfunctionText1.mcfunctiontext2.mcfunction+ system+ process_process.mcfunction_main.mcfunctionplayer_tick.mcfunction
如何调用函数
在 1.12 中 。MOJANG新增了function指令和一条名为gameLoopFunction的游戏规则来辅助我们使用函数系统 。function指令的格式如下:
function <命名空间:函数名>function <命名空间:函数名> <if|unless> <选择器>
这两条都是可行的 。其中 。if|unless是在1.12 pre-4加入的功能 。后面我会解释到这个 。我们先来说说第一种形式 。例如上面的目录中 。要调用system这个命名空间下的_main文件 。就是输入这样的指令:
function system:_main
现在 。我们来看一个例子例如say命名空间下的Text1.mcfunction和text2.mcfunction 。里面分别写上这些内容
Text1.mcfunction
#这是一个范例 。在function文件中可以用#来注释行 。请注意 。不能够使用//来注释!say 1function say:text2say 2
text2.mcfunction
say 3say 4
当我在系统后台输入function say:text1时 。聊天框会出现这些内容:[server] 1[server] 3[server] 4[server] 2
也就是说 。执行function指令的人 。会把函数里面的指令依次执行——我在系统后台输入function指令 。就是系统在执行 。我自己输入function指令 。就是我本人在执行 。大家可能注意到了 。函数中支持使用#进行注释(旧版本支持//注释 。当前版本已经不再支持) 。也就是说被注释行不会作为指令而执行 。这一点有多方便相比不比我再说了 。同时需要大家注意:函数中所有指令不能够以/开头 。例如 。你可以这样写:
say @s
但是不能这样写:
/say @s
最后有一点需要注意的是 。在function指令中调用函数时 。不区分大小写 。例如前面say命名空间下的Text1.mcfunction 。我在调用的时候写的是say:text1
然后是第二种形式 。也就是带有if|unless的 。我简单举两个例子 。大家就知道是什么意思了 。
其他观点:
感谢方官大大:以下是我的讲解《我的世界》1.12版本新增了函数命令这一内容 。很多玩家觉得非常复杂 。也有玩家发现这个命令可以完全脱离命令方块而存在 。今天文超将推荐的是《我的世界》1.12函数命令系统入门教程。希望大家能够喜欢 。
函数系统的构成
函数系统的由来
函数(function)系统 。是 MC 1.12 Pre-1 版本中新增的一个功能 。它将原来进度系统中返回指令的部分单独提取出来 。做成了现在的函数系统 。
函数系统的形式
函数系统由命名空间和函数文件组成 。这些文件保存在存档目录/data/functions/下 。functions目录下的文件夹 。称为命名空间 。各个命名空间下存放不同的函数文件 。实际上 。命名空间就是方便我们编写者分类并管理各种函数文件 。
函数文件是以.mcfunction为后缀名的文本文件 。建议采用utf-8无BOM编码以防显示错乱 。简单来讲 。一个函数等价于一个多行命令方块 。函数文件里面每一行写一条指令 。当执行这个函数时 。里面的指令会按行依次执行 。如果在一个函数中调用其它函数 。那么在同一游戏刻 。被调用的函数中所有指令先执行完 。再继续当前函数中后续的指令 。就像插队一样 。我们在后面对比命令方块时还会说到这个 。
请注意:在 1.12 Pre-3 版本中存在一个严重漏洞 。即命令执行体不能正确地通过execute传递到被调用的函数中去 。这个漏洞有望在后续版本以及正式版修复 。
以下是本文用到的一个函数系统的目录 。带有\"+\"的表示为目录
+ functions
+ say
hi.mcfunction
bye.mcfunction
Text1.mcfunction
text2.mcfunction
+ system
+ process
_process.mcfunction
_main.mcfunction
player_tick.mcfunction
如何调用函数
在 1.12 中 。MOJANG新增了function指令和一条名为gameLoopFunction的游戏规则来辅助我们使用函数系统 。function指令的格式如下:
function <命名空间:函数名>
function <命名空间:函数名> <if|unless> <选择器>
这两条都是可行的 。其中 。if|unless是在1.12 pre-4加入的功能 。后面我会解释到这个 。我们先来说说第一种形式 。例如上面的目录中 。要调用system这个命名空间下的_main文件 。就是输入这样的指令:
function system:_main
现在 。我们来看一个例子例如say命名空间下的Text1.mcfun
Text1.mcfunction
#这是一个范例 。在function文件中可以用#来注释行 。请注意 。不能够使用//来注释!
say 1
function say:text2