我的世界函数命令怎么用 函数系统的构成介绍

新闻中心2024-12-12 10:00:3098

  我的世的构世界1.12版本中新增了函数系统,那么我的界函世界1.12版本函数命令怎么用 ?下面99小编就给大家带来我的世界函数命令系统的构成详细介绍 。

我的数命绍<strong></strong>世界函数命令怎么用 函数系统的构成介绍

  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是在1.12 pre-4加入的功能,后面我会解释到这个  。我们先来说说第一种形式。例如上面的目录中,要调用system这个命名空间下的_main文件 ,就是输入这样的指令:

  function system:_main

  现在 ,我们来看一个例子例如say命名空间下的Text1.mcfunction和text2.mcfunction,里面分别写上这些内容

  Text1.mcfunction

  #这是一个范例 ,在function文件中可以用#来注释行 。请注意,不能够使用//来注释!

  say 1

  function say:text2

  say 2

  text2.mcfunction

  say 3

  say 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的 。我简单举两个例子,大家就知道是什么意思了 。

  say:tellraw.mcfunction

  scoreboard objectives add timer dummy 计时器

  scoreboard players add @s timer 1

  function random:title if @s[score_timer_min=1200]

  scoreboard players reset @s[score_timer_min=1200] timer  random:title.mcfunction

  summon area_effect_cloud ~ ~ ~ { Tags:["rnd_title","rnd_title1"]}

  summon area_effect_cloud ~ ~ ~ { Tags:["rnd_title","rnd_title2"]}

  summon area_effect_cloud ~ ~ ~ { Tags:["rnd_title","rnd_title3"]}

  summon area_effect_cloud ~ ~ ~ { Tags:["rnd_title","rnd_title4"]}

  summon area_effect_cloud ~ ~ ~ { Tags:["rnd_title","rnd_title5"]}

  entitydata @r[r=0,type=area_effect_cloud,tag=rnd_title] { CustomName:"rnd_title"}

  execute @e[name=rnd_title,tag=rnd_title1] ~ ~ ~ tellraw @a[r=0,c=1] ["1"]

  execute @e[name=rnd_title,tag=rnd_title2] ~ ~ ~ tellraw @a[r=0,c=1] ["2"]

  execute @e[name=rnd_title,tag=rnd_title3] ~ ~ ~ tellraw @a[r=0,c=1] ["3"]

  execute @e[name=rnd_title,tag=rnd_title4] ~ ~ ~ tellraw @a[r=0,c=1] ["4"]

  execute @e[name=rnd_title,tag=rnd_title5] ~ ~ ~ tellraw @a[r=0,c=1] ["5"]

  将say:tellraw放到主进程中

  execute @a ~ ~ ~ function say:tellraw

  则每位玩家每分钟将会看到1~5中随机一个数字出现在聊天框 。也就是说 ,只有计时器分数满1200的人会执行后面的随机部分。那么很显然 ,带有if的意思就是 ,如果能找到后面的选择器 ,就执行这个函数,否则不执行 。相当于testfor。

  那么unless的意思也就很明显了:在找不到后面的选择器的时候,执行这个函数 ,相当于testfor+非门 。

  gameLoopFunction

  讲完调用,就该讲讲高频了 。玩命令方块的人都知道高频是实现许多功能的前提。在函数系统中,MOJANG 为我们提供了一条名为gameLoopFunction的游戏规则来实现高频 。它的格式是

  gamerule gameLoopFunction <命名空间:函数>

  也就是说,你可以指定一个函数来高频执行 ,这个高频是20Hz的,也就是每一个游戏刻都会执行一遍 。新建的存档如果没有执行过这条指令,而是用gamerule gameLoopFunction来查询的话,得到的返回值是-

  为了方便  ,我们将这个规则简称为glf。在旧版本中,glf指定的函数,由系统(server)作为执行体;而在新的版本中,MOJANG 引入了虚拟执行体 ,例如将 say:text2 指定为glf时 ,每一个游戏刻得到的结果是这样的

  [say:text2] 3

  [say:text2] 4

  也就是说 ,系统不再作为执行体,而是由虚拟的执行体代为执行 。

  关于 glf 多说两句 。使用 glf 去高频执行一个函数,和使用 RCB(循环型命令方块 ,紫色那种)去执行 ,是不一样的。区别主要在于其更新顺序先后 。一般而言不会造成严重影响,但是在某些情况会不一样。比如,使用 CB 能检测到生物的{ HurtTime:10s}这个 NBT ,而使用 glf 执行函数只能检测到的是{ HurtTime:9s},检测不到10  ,这是因为关于函数的更新 ,都放在了生物更新之后,而 CB 的更新则是在生物更新之前。详情可以看这里 。按照 Searge 的说法,函数并不是命令方块的完全替代。这个说法,大家就见仁见智了。

  以上是函数系统的相关构成 ,以及如何调用函数。接下来我们来了解一下函数系统的模块分类>>>。

本文地址:https://www.metheavy.com/html/5b66299332.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

热门标签

全站热门

《迷你毁灭战士2》正式上线 新增17个关卡和新boss

堡垒之夜在守卫墓地中的不同守卫头部上跳舞怎么完成 在守卫墓地中的不同守卫头部上跳舞完成攻略

lol灵能特工福袋有什么奖励 英雄联盟灵能特工福袋奖励介绍

2020年9月CF王牌转盘活动在哪参加 CF王牌转盘活动链接2020年9月

《看墓人》实机操作视频放出 中世纪墓园管理游戏

lol10.18版本英雄更新了什么 英雄联盟10.18版本英雄调整改动内容

堡垒之夜前往黑豹潜行怎么完成 堡垒之夜前往黑豹潜行完成攻略

DNF希洛克团本精锐角色怎么调整技能 DNF希洛克团本精锐角色技能调整方法

友情链接