我的世界函数系统与进度系统联动 函数系统的基础使用攻略_黄金价格精选最新消息 函数操控系统的基础使用攻略
我的全球函数操控系统与进度操控系统的联动怎么样呢?下面99小编就给大家带来我的全球函数操控系统于进度操控系统的联动,函数操控系统的基础使用攻略。

函数操控系统与进度操控系统的联动
advancement,亦简称adv,当下wiki翻译叫进度。这里就不多作说明了。黄金价格精选在17w17b中MOJANG允许进度返回指令身为达成进度的奖励,让不少玩家察觉了新大陆。接着在17w18b中,MOJANG进一步完善进度操控系统,使其可以完全独立于命令方块而兴办起一个命令操控系统;在1.12 pre1中,MOJANG又作出了更改,将进度操控系统中的近日独家电竞比赛命令若干拿出来做成了如今的函数操控系统。
但是这并不意味着进度操控系统就不可以参与到命令操控系统中来,由于如今的进度操控系统可以返回函数身为达成进度的奖励。
相信很多人已然得知进度操控系统的结构了,但仍有相当一若干好友还没有知晓,在这里我们不妨来温习一下。
自定义的iPhone消息进度,所有文件都保存在存档目录/data/advancements/下,在这里新建的文件夹同样都称为命名空间,命名空间下存放各类进度文件。进度文件使用 json 格式。这里展示一个用于进度命令操控系统的例子
所关乎的两个文件分别是data/advancements/system/HelloTitle.json和data/functions/system/HelloTitle.mcfunction,这里进度和函数都用同样的北京的昨天,分手文案命名空间和文件名便捷记忆和治理,可以目睹函数文件是 .mcfunction,而进度文件是 .json
system:HelloTitle.json
{
"criteria":{
"custom_name":{
"trigger":"minecraft:tick"
}
},
"rewards":{
"function":"system:hellotitle"
}
}
system:HelloTitle.mcfunction
#revoke adv,用于下次再激活
advancement revoke @s only system:hellotitle
#命令若干
scoreboard objectives add helloTitle stat.leaveGame
scoreboard players tag @s[tag=HelloTitle,score_helloTitle_min=1] remove HelloTitle
tellraw @s[tag=!HelloTitle] ["",{ "text":"Hello ","color":"yellow"},{ "selector":"@s"},{ "text":"! Welcome to Minecraft!","color":"yellow"}]
scoreboard players tag @s[tag=!HelloTitle] add HelloTitle
scoreboard players reset @s[score_helloTitle_min=1] helloTitle
这个进度会在下一个游戏刻达成,对象是全体在线玩家,达成进度后会执行HelloTitle.mcfunction中的指令。其做到的效果是,当玩家进入这个全球时,会在聊天框看见问候语(其他人看不到)。
可以目睹,相比于过去命令方块高频,这里使用了进度操控系统的 tick 触发器和@s挑选器。假如单纯用命令方块高频或者函数操控系统,那么只需要这样
scoreboard objectives add helloTitle stat.leaveGame
scoreboard players tag @a[tag=HelloTitle,score_helloTitle_min=1] remove HelloTitle
execute @a[tag=!HelloTitle] ~ ~ ~ tellraw @s ["",{ "text":"Hello ","color":"yellow"},{ "selector":"@s"},{ "text":"! Welcome to Minecraft!","color":"yellow"}]
scoreboard players tag @a[tag=!HelloTitle] add HelloTitle
scoreboard players reset @a[score_helloTitle_min=1] helloTitle
区别就是挑选器上的不一样。假如大家觉得进度操控系统很麻烦,可以不去使用,但是接下来我们会目睹一个使用进度操控系统的其他触发器来调用函数的例子。例如,要让所有冒险模式玩家入水即死。
rules:DieInWater.json
{
"criteria":{
"1":{
"trigger":"enter_block",
"condition":{
"block":"water"
}
}
},
"rewards":{
"function":"rules:dieinwater"
}
}
rules:DieInWater.mcfunction
#revoke
advancement revoke @s only rules:dieinwater
#commands
scoreboard players tag @p[m=2,r=0] add waterKill
execute @s[tag=waterKill] ~ ~ ~ tellraw @a [{ "selector":"@s"},{ "color":"white","text":" 被水淹没了"}]
execute @s[tag=waterKill] ~ ~ ~ gamerule showDeathMessages false
kill @s[tag=waterKill]
execute @s[tag=waterKill] ~ ~ ~ gamerule showDeathMessages true
scoreboard players tag @s[tag=waterKill] remove waterKill
当玩家踏入水中时,我们要给玩家加上一个tag,然后杀掉他。至于为什么用@p而不用@s呢?由于@p不能选中死人,而@s可以,假如不想目睹聊天框刷屏,就不要挑选用@s。
以上是运用进度操控系统的 enter_block(玩家进入方块) 这一触发器来做到落水即死特性的,假如单纯依靠函数,不依靠进度操控系统去做到的话,可以这样写
rules:DieInWater_FUNCONLY.mcfunction
execute @a[m=2] ~ ~ ~ detect ~ ~ ~ water -1 scoreboard players tag @p[r=0] add waterKill
execute @a[tag=waterKill] ~ ~ ~ tellraw @a [{ "selector":"@s"},{ "color":"white","text":" 被水淹没了"}]
execute @a[tag=waterKill] ~ ~ ~ gamerule showDeathMessages false
kill @a[tag=waterKill]
execute @a[tag=waterKill] ~ ~ ~ gamerule showDeathMessages true
scoreboard players tag @a[tag=waterKill] remove waterKill
然后将这个函数扔进主进程中高频执行即可。
我们讲完了函数操控系统与进度操控系统的联动若干。哲理而言已然讲完了函数操控系统的基础使用,那么在最后,我们来聊聊函数操控系统与命令方块操控系统的对比吧,看看它们各自的优不足。
下一篇:天生一队 不贱不散!《死侍与金刚狼》x《漫威终极逆转》限时联动开启