
在接下来的所有指令教学中,我会使用不同颜色的字强调不同种类的内容,方便大家阅读与查看。凡例:
深蓝色 标题
橙色 技术类文字
深绿色 专有名词
红色 强调
粉色 区分数字内容
紫色 范例
(4)分数类
a)比较两者分数
{if|unless} score {目标A} {目标记分项A} {运算符} {被比较目标B} {被比较记分项B}
比较目标A在记分项A的分数a和目标B在记分项B的分数b是否符合填写的运算关系。运算符可以是<(小于)、<=(小于等于)、=(等于)、>(大于)和>=(大于等于)。
b)判断分数是否在范围内
{if|unless} score {目标} {目标记分项} matches {范围}
判断目标在记分项中的分数是否符合值或在范围内。这个范围可以是一个值或一个区间,比如15,..4,-2..10等。
举例:大乱斗游戏规则:两名玩家A、B分为红蓝两方,一定时间内击杀敌方玩家最多的一方获胜。统计击杀数的记分板Kill,统计对胜利的一方播放音效“完成挑战进度”;如果两方平手,进入加赛程序(执行指令/function a)。设计一条判断胜负的机关。
检测玩家A的分数是否比B的分数高,如果是,执行指令:if score A Kill > B Kill
对玩家A播放音效:run playsound minecraft:ui.toast.challenge_complete master A
将以上内容拼在一起,可以得到:
A)/execute if score A Kill > B Kill run playsound minecraft:ui.toast.challenge_complete master A
同时可以得到A<B、A=B的情况
B)/execute if score A Kill < B Kill run playsound minecraft:ui.toast.challenge_complete master B
C)/executeif score A Kill = B Kill run function a
将这三条指令放在一串指令方块中,D处三个连锁方块填写清除红石块的指令。

指令方块放置方法
当然你可以将A和B替换成选择器,这里不再赘述。
(5)谓词类
{if|unless} predicate {谓词}
判断谓词内容的条件是否为真。同样地,有关谓词的内容在此不作介绍,会放到第三章讲解技术性文件时作具体说明。
存储类子指令可以将结果输出至记分板、BOSS条和NBT标签中。关于NBT标签的内容,我会放到下一节讲解/data时作具体说明。
存储类子指令有两种输出方式,result和success。result表示输出结果,比如受影响的方块数、实体数、物品数和指令查询结果等。success表示指令成功执行的次数,当未执行成功(success值为0)时,result也为0。
需要特别注意的是,输出结果是数字的时候会自动向下取整,因此这个结果一定是整数。
(1)与记分板联动
store {result|success} score {实体} {记分项}
将指令的结果设置为选定实体在选定记分项的分数。
举例:实时显示当前服务器在线人数:
首先生成一个记分板,叫“服务器信息”好了:/scoreboard objectives add info dummy "服务器信息"(同样地,记分板名称和显示名称你可以随便写)
接下来制作存储单元,将指令的结果存储在虚拟实体“在线人数”中:store result score 在线人数 info(虚拟实体ID随便写)
检测当前在线玩家人数:run execute if entity @a
将以上内容拼在一起,用保持开启的循环指令方块执行下面的指令:
/execute store result score 在线人数 info run execute if entity @a
(2)与BOSS条联动
store {result|success} bossbar {BOSS条ID} {value|max}
将指令的结果设置为选择BOSS条的值(value)或最大值(max)。
举例:玩家生存有一个挖掘100个钻石矿的目标,他想要让挖掘进度以BOSS条的形式实时显示,同时为了更清楚,BOSS条需要10等分,显示名称为加粗黄色的“钻石矿进度”。
当然为了显示,先建立一个BOSS条:/bossbar add diamond {"text":"钻石矿进度","color":"yellow","bold":true}
编辑BOSS条样式:/bossbar set minecraft:diamond style notched_10
BOSS条默认最大值是100,所以不需要改动。
让BOSS条可以被所有玩家看到:/bossbar set minecraft:diamond players @a
建立一个记分板,统计玩家挖掘钻石矿的数量:/scoreboard objectives add diamond minecraft.mined:minecraft.diamond_ore
建立存储单元,将结果导出到BOSS条:store result bossbar minecraft:diamond value
执行读取玩家挖掘钻石矿记分板的分数的指令:run scoreboard players get @a[limit=1] diamond(只能有1个目标)
将以上内容拼在一起,用保持开启的循环型指令方块执行下面的指令:
/execute store result bossbar minecraft:diamond value run scoreboard players get @a[limit=1] diamond
花了很大篇幅才差不多讲完了这个新版让玩家头痛不已但十分强大的指令,笔者在编写的过程中也感受到了这个指令的万用性。掌握了这个指令,可以说你已经一只脚踏进了技术性内容的大门,遨游在技术世界的海洋。下一节会讲1.13的全新黑科技/data,让你将NBT玩弄于股掌之间。
下一篇:第二章 指令介绍 2.6 随心所欲修改一切——/data
