日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

我的世界1.12版函數(shù)命令系統(tǒng)教學(xué)詳解 函數(shù)命令系統(tǒng)教程( 二 )


say @s
但是不能這樣寫:
/say @s
最后有一點(diǎn)需要注意的是,在function指令中調(diào)用函數(shù)時(shí),不區(qū)分大小寫 。例如前面say命名空間下的Text1.mcfunction,我在調(diào)用的時(shí)候?qū)懙氖莝ay:text1
然后是第二種形式,也就是帶有if|unless的 。我簡單舉兩個(gè)例子,大家就知道是什么意思了 。
say:tellraw.mcfunction
scoreboard objectives add timer dummy 計(jì)時(shí)器
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放到主進(jìn)程中
execute @a ~ ~ ~ function say:tellraw
則每位玩家每分鐘將會(huì)看到1~5中隨機(jī)一個(gè)數(shù)字出現(xiàn)在聊天框 。也就是說,只有計(jì)時(shí)器分?jǐn)?shù)滿1200的人會(huì)執(zhí)行后面的隨機(jī)部分 。那么很顯然,帶有if的意思就是,如果能找到后面的選擇器,就執(zhí)行這個(gè)函數(shù),否則不執(zhí)行 。相當(dāng)于testfor 。
那么unless的意思也就很明顯了:在找不到后面的選擇器的時(shí)候,執(zhí)行這個(gè)函數(shù),相當(dāng)于testfor+非門 。
gameLoopFunction
講完調(diào)用,就該講講高頻了 。玩命令方塊的人都知道高頻是實(shí)現(xiàn)許多功能的前提 。在函數(shù)系統(tǒng)中,MOJANG 為我們提供了一條名為gameLoopFunction的游戲規(guī)則來實(shí)現(xiàn)高頻 。它的格式是
gamerule gameLoopFunction <命名空間:函數(shù)>
也就是說,你可以指定一個(gè)函數(shù)來高頻執(zhí)行,這個(gè)高頻是20Hz的,也就是每一個(gè)游戲刻都會(huì)執(zhí)行一遍 。新建的存檔如果沒有執(zhí)行過這條指令,而是用gamerule gameLoopFunction來查詢的話,得到的返回值是-
為了方便,我們將這個(gè)規(guī)則簡稱為glf 。在舊版本中,glf指定的函數(shù),由系統(tǒng)(server)作為執(zhí)行體;而在新的版本中,MOJANG 引入了虛擬執(zhí)行體,例如將 say:text2 指定為glf時(shí),每一個(gè)游戲刻得到的結(jié)果是這樣的
[say:text2] 3
[say:text2] 4
也就是說,系統(tǒng)不再作為執(zhí)行體,而是由虛擬的執(zhí)行體代為執(zhí)行 。
關(guān)于 glf 多說兩句 。使用 glf 去高頻執(zhí)行一個(gè)函數(shù),和使用 RCB(循環(huán)型命令方塊,紫色那種)去執(zhí)行,是不一樣的 。區(qū)別主要在于其更新順序先后 。一般而言不會(huì)造成嚴(yán)重影響,但是在某些情況會(huì)不一樣 。比如,使用 CB 能檢測到生物的{HurtTime:10s}這個(gè) NBT,而使用 glf 執(zhí)行函數(shù)只能檢測到的是{HurtTime:9s},檢測不到10,這是因?yàn)殛P(guān)于函數(shù)的更新,都放在了生物更新之后,而 CB 的更新則是在生物更新之前 。詳情可以看這里 。按照 Searge 的說法,函數(shù)并不是命令方塊的完全替代 。這個(gè)說法,大家就見仁見智了 。對(duì)我個(gè)人而言這個(gè)影響不大 。
以上是函數(shù)系統(tǒng)的相關(guān)構(gòu)成,以及如何調(diào)用函數(shù) 。接下來我們來了解一下函數(shù)系統(tǒng)的模塊分類 。
函數(shù)系統(tǒng)的模塊調(diào)用

推薦閱讀