在接下来的所有指令教学中,我会使用不同颜色的字强调不同种类的内容,方便大家阅读与查看。凡例:
深蓝色 标题
橙色 技术类文字
深绿色 专有名词
红色 强调
粉色 区分数字内容
紫色 范例
第二章 指令介绍2.4 高阶大门的钥匙——记分板从这一节开始,指令涉及的技术性内容难度会更高,也正是因此,内容尽量会做到细化,希望读者可以更容易理解。
2.4.1 记分板概述记分板(scoreboard)是一套很强大的追踪、显示和设置实体分数的体系。通过与其他指令联动可以体现出记分板的万用性和功能性。可以这么说,记分板是步入高阶指令领域的第一个台阶,也只有学好这一部分内容,介绍接下来的内容、自己运用的过程才会变得简单一些。
记分板由以下几部分组成:名称(name)、显示名称(display name)、准则(criteria)和每个单位与分数(score)的对应。
2.4.2 准则准则决定了记分板的性质,包括能否修改、何时修改分数。准则有两种分类:①可编辑准则(可以通过指令修改)和只读型准则(通过读取目标状态输出分数,无法通过指令修改);②简单准则(结构简单)和复合准则(与统计等结合)。具体的准则介绍如下:
(A)简单准则
(1)dummy:虚拟型准则。只能通过指令修改分数,最常见。一般被用来记录分数、映射(复制)分数等。
(2)deathCount:死亡次数。每当玩家死亡时,对应分数会加1。
(3)playerKillCount:玩家击杀数。每当击杀一名玩家时,对应分数会加1。
(4)totalKillCount:生物击杀数。每当玩家击杀一个生物时,对应分数会加1。
(5)trigger:触发器。只能通过指令修改分数。类似于机关,当机关开启时玩家才能编辑,而且一经编辑机关立刻关闭,此时玩家无法再编辑,必须通过指令开启机关才能再编辑。
(6)health:生命值。生物当前生命值会作为计分板分数。只读型准则,指令无法修改,会实时更新。
(7)xp:玩家拥有的经验值。只读型准则,指令无法修改,会实时更新。
(8)level:玩家的经验等级。只读型准则,指令无法修改,会实时更新。
(9)food:玩家当前饱食度。只读型准则,指令无法修改,会实时更新。
(10)air:玩家当前氧气槽。只读型准则,指令无法修改,会实时更新。
(11)armor:玩家当前盔甲值。只读型准则,指令无法修改,会实时更新。
(B)复合准则
(1)统计信息
格式:minecraft.custom:minecraft.统计名称
基于玩家的统计计数。可用的统计为“统计信息”中的所有项。当涉及到距离时,单位为厘米。举例:鞘翅滑翔距离:minecraft.custom:minecraft.aviate_one_cm
(2)合成次数
格式:minecraft.crafted:minecraft.物品名称
基于玩家合成(熔炼)某物品的次数。只可以选择所有Minecraft中可以合成、熔炼的物品。这个数据只有你将成品移出工作台或熔炉(包括变种)的输出端才会改变。
(3)使用物品次数
格式:minecraft.used:minecraft.物品名称
基于玩家使用某物品的次数。这个使用可以是放置、破坏、钓鱼、胡萝卜钓竿、可以生成实体的动作(放置画、投掷雪球珍珠药水等、刷怪蛋、船、矿车、射箭等)、合成(消耗)物品的动作(吃食物、喝药水、装(倒)液体、填充空地图、使用书与笔制作成书)、播放唱片。当使用工具时及时没有损耗耐久也计算在内。当这些动作与生物交互(攻击除外)时(包括命名、挤奶、装鞍、喂食、繁殖、右键穿装备、使用炼药锅皮革装备染色等)不会计算。
(4)用坏物品次数
格式:minecraft.broken:minecraft.物品名称
基于玩家用坏物品(耐久度降为0之后再使用将其毁坏)的次数。只可以选择有耐久的物品,比如工具、武器、弓、弩、盔甲、钓鱼竿等。
(5)挖掘方块次数
格式:minecraft.mined:minecraft.方块名称
基于玩家破坏方块(无论是否掉落)的次数。只可以选择玩家可以破坏的方块。
(6)丢弃物品次数
格式:minecraft.dropped:minecraft.物品名称
基于玩家丢出物品的次数。任何物品都可以。
(7)捡起物品次数
格式:minecraft.picked_up:minecraft.物品名称
基于玩家捡起对应物品掉落物的次数。任何物品都可以。
(8)击杀实体次数
格式:minecraft.killed:minecraft.实体名称
基于玩家破坏和杀死实体的次数。只支持实体名称。
(9)被实体击杀次数
格式:minecraft.killed_by:minecraft.实体名称
基于玩家被实体杀死次数。只支持实体名称。当然被动生物无法攻击你,所以数值永远不会增加。
(10)击杀特定队伍成员数
格式:teamkill.队伍颜色
基于玩家击杀处在该颜色队伍的单位的次数。
(11)被特定队伍成员击杀数
格式:killedByTeam.队伍颜色
基于玩家被处在该颜色队伍的单位击杀的次数。
2.4.3 计分板的管理(1)计分板的建立与移除
建立:/scoreboard objectives add {记分板名称} {准则} (显示名称)
移除:/scoreboard objectives remove {记分板名称}
(2)计分板的显示
指令:/scoreboard objectives setdisplay {显示位置} (记分板名称)
可以选择的位置有:list(按住Tab键分数会显示玩家ID的右侧)、sidebar(屏幕右侧,会有标题、玩家ID以及对应的分数)、sidebar.team.队伍颜色(和sidebar一样,但只会显示对应颜色队伍中的单位)和belowName(玩家名条下方,按住shift会隐藏,自己无法看见自己的分数)。
如果记分板名称不填写,则改为将目标位置清空。
(3)记分板列表
指令:/scoreboard objectives list
显示所有记分项、显示名称和准则。
(4)改变记分板样式
①改变显示名称
格式:/scoreboard objectives modify {记分板名称} displayname {显示名称}
②改变生命值记分板在Tab玩家列表处的显示样式
格式:/scoreboard objectives modify {记分板名称} rendertype [hearts|integer]
其中hearts表示用爱心显示;integer表示用整数显示。
生命值显示样式的区别(5)列出所有被记分板追踪的单位
格式:/scoreboard players list (目标,支持目标选择器)
显示记分板追踪的所有单位。如果后面写了目标,系统会显示该目标的所有记分项和对应分数。使用“*”代表选择记分板追踪的所有单位。
(6)显示目标在记分板的分数
格式:/scoreboard players get {目标(支持目标选择器)} {记分项}
(7)增加/减少/设置分数
格式:/scoreboard players [add|remove|set] {目标(支持目标选择器)} {记分项} {分数}
将目标在某个记分板上的分数增加/减少/设置成某值。只读类准则不可修改分数。
举例:将MJ_Kuye在记分板“Kill_Mobs”的分数增加15:
/scoreboard players add MJ_Kuye Kill_Mobs 15
(8)清除分数
格式:/scoreboard players reset {目标(支持目标选择器)} (记分项)
将目标所有分数清除,填写记分项改为将目标在该记分项的分数清除。使用“*”代表选择记分板追踪的所有单位。
(9)分数之间的运算
首先,我们规定“{目标(支持目标选择器)} {记分项}”为一个分数值。那么这条指令涉及的就是两个分数之间的运算。
格式:/scoreboard players operation {分数值A} {运算法则} {分数值B}
运算法则可以是:+=(将分数A设为A+B的值)、-=(将分数A设为A-B的值)、*=(将分数A设为A×B的值)、/=(将分数A设为A/B的值)、%=(将分数A设为A÷B的余数)、=(将分数A设为B的值)、(将分数A设为A和B中较大值)和>< MJ_Kuye Death
②将MJ_Hamster在记分板“Run”的分数设为MJ_Hamster在这个记分板的分数与MJ_Hamster在记分板“Fly”的分数的和:
/scoreboard players operation MJ_Hamster Run += MJ_Hamster Fly
(10)触发器管理
①触发器对指定玩家开启
格式:/scoreboard players enable {目标} {以触发器为准则的记分板}
触发器机关对目标玩家开启,这些玩家可以进行一次该记分板的修改。
②玩家修改触发器
格式:/trigger {以触发器为准则的记分板} ([add|set] {值})
修改一个准则为触发器的记分板,但与(7)不同的是,/trigger不需要管理员权限也可以使用,因此配合/tellraw的“clickEvent”是地图触发作者设计的机关非常好用的一种方式。括号内容省略默认为add 1。
花了整整一节的内容讲完了记分板的全部知识,但是大家很有可能依旧是云里雾里。在下一节/execute的内容中,我会将新内容与记分板的内容结合,在学习新知识的同时理解并掌握记分板的灵活运用。
下一篇:第二章 指令介绍 2.5 最强大的指令系统/execute(第一部分)