我的世界函数系统与进度系统联动 函数系统的基础使用攻略

我的世度系动函世界函数系统与进度系统的联动怎么样呢?下面99小编就给大家带来我的世界函数系统于进度系统的联动,函数系统的界函基础基础使用攻略。
函数系统与进度系统的联动
advancement,亦简称adv,统进统联统目前wiki翻译叫进度。攻略这里就不多作介绍了。世度系动函在17w17b中MOJANG允许进度返回指令作为达成进度的界函基础奖励,让不少玩家发现了新大陆。数系数系使用随后在17w18b中,统进统联统MOJANG进一步完善进度系统,攻略使其可以完全独立于命令方块而建立起一个命令系统;在1.12 pre1中,世度系动函MOJANG又作出了修改,界函基础将进度系统中的数系数系使用命令部分拿出来做成了如今的函数系统。
但是统进统联统这并不意味着进度系统就不可以参与到命令系统中来,因为如今的攻略进度系统可以返回函数作为达成进度的奖励。
相信很多人已经知道进度系统的结构了,但仍有相当一部分朋友还没有了解,在这里我们不妨来温习一下。
自定义的进度,所有文件都保存在存档目录/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
然后将这个函数扔进主进程中高频执行即可。
我们讲完了函数系统与进度系统的联动部分。道理而言已经讲完了函数系统的基础使用,那么在最后,我们来聊聊函数系统与命令方块系统的对比吧,看看它们各自的优缺点。
相关文章
- 作为一个释教气息颇为浓郁的国家,泰外洋乡屹立着良多佛塔、佛寺等释教修筑。这些释教修筑不光是泰国历史横蛮的传承者,更是驰名天下的遨游景点。占无关质料数据展现,2019年赴泰国遨游国内游西崽数达3900万2025-04-07
- 我的世界游戏中的发酵桶相信大家都知道,发酵桶该怎么用呢?这里小编给大家带来了我的世界发酵桶怎么用 我的世界发酵桶使用教程,快来看看吧。我的世界发酵桶怎么用?年轻的各种酒喝下去是没啥效果的,需要后发酵,2025-04-07
魔兽世界7.3暗影法师沃伦坐标在哪 魔兽世界7.3暗影法师沃伦坐标位置介绍
魔兽世界7.3暗影法师沃伦坐标在哪?魔兽世界7.3暗影法师沃伦怎么刷不出来,那么是怎么回事呢?下面想了解的小伙伴和小伙伴一起来看看吧!暗影法师死活就是刷新不出来,所以很多人猜测是不是根本没有刷新机制,2025-04-07- 海鳗是章鱼(octopus)的天敌,这种深海杀手常常出其不意地对章鱼进行攻击,然后以极度凶猛的方式将章鱼活吞进肚。然而,海鳗对章鱼的捕杀也不是每次都能得手。根据章鱼的生活习性,海鳗常常躲在深海的沙子底2025-04-07
- 如今良多都是一总体在外流离劳动以及生涯,想学着做菜,却奈何样也做欠好。为了处置这个下场,小编如今就来教教巨匠假如做超浓情炎火比翼翅吧。1.1鸡翅冷水下锅煮熟捞出。2.2鸡全翅一对于,能耐寓意比翼双飞。2025-04-07
- 别惹农夫炸弹人解锁方法分享发布时间:2022-07-23 09:28:47来源:逗游作者:逗游网别惹农夫塔防游戏策略游戏创意新颖游戏类别:战争策略游戏大小:33.36M 游戏语言:简体中文游戏版本:v2025-04-07
最新评论