第四十一章 objectives——管理一个计分项

如何创建并管理一个计分项呢?这就需要使用\/scoreboard。

\/scoreboard

作用:控制计分板

需要权限等级:java-2,基岩-1

需要作弊:是

格式(本章所涉及):

\/scoreboard objectives ...

java版

... add <计分项名称><准则>[<显示名称:json>]——添加计分项(注:je1.13以下版本“显示名称”参数的值类型为字符串)

... list ——列出当前所有计分项

... modify <计分项名称>...——对指定计分项进行一些更改操作[1.13更新]

...... disyname <显示名称:json>——更改指定计分项的显示名称[1.13更新]

...... rendertype <hearts|integer>——指定显示该计分项数值时是采用爱心(hearts)还是数值(integer)显示[1.13更新]

... remove <计分项名称>——删除计分项

... setdisy <显示位置>[计分项名称]——指定特定的位置显示指定的计分项或取消显示计分项。

基岩版

... add <计分项名称:字符串><准则>[<显示名称:字符串>]——添加计分项

... list ——列出当前所有计分项

... remove <计分项名称:字符串>——删除计分项zuqi.org 葡萄小说网

... setdisy <显示位置>[计分项名称:字符串][排序方法:ascending|descending]——指定特定的位置显示指定的计分项或取消显示计分项。

现在让我们来试一试。首先来尝试添加一个最基本的计分项:

\/scoreboard objectives add coin dummy 金钱——仅以下和基岩版

\/scoreboard objectives add coin dummy “金钱“——仅以上

上面的指令将会添加一个准则为dummy,显示名称为“金钱”,叫做“coin”的计分项。

添加计分项时我们需要特别注意准则的选择。正如上一章所说的“准则决定了记分项具体要跟踪的信息”,一个计分项的作用,很大程度上是由准则决定的。

准则在基岩版只有dummy(虚拟型),在java版有两大类:单一准则和复合准则。

单一准则不可自定义,是mojang已经给你预设好的准则,目前有如下几种:

dummy:虚拟型,最基础的准则,仅可通过\/scoreboard yers指令修改。

trigger:触发器,类似于dummy,但所有玩家均可修改自己的trigger型计分项。具体内容会在第九十八章讲到。

deathcount:玩家死亡次数,当玩家死亡时游戏会自动增加他的分数,可以通过指令修改。(java版的死亡榜就是这么搞的)

yerkillcount:玩家击杀(玩家)数,当玩家击杀其他玩家时游戏会自动增加他的分数,可以通过指令修改。

totalkillcount:玩家击杀(生物)数,当玩家击杀其他任意生物时游戏会自动增加他的分数,可以通过指令修改。

health:玩家生命值,伤害吸收和生命提升的血也会计算在其中。当玩家第一次刷新生命值之前该玩家的分数会为0。不可通过指令修改。

xp:玩家经验值,不可通过指令修改。

level:玩家经验等级(注意和xp准则区分),不可通过指令修改。

food:玩家饱和度,和health准则一样,在玩家第一次刷新饱和度之前该玩家的分数会为0,不可通过指令修改。

air:玩家空气值(就是潜水时显示的那个),不可通过指令修改。

armor:玩家盔甲值,和health准则一样,在玩家第一次刷新盔甲值之前该玩家的分数会为0,不可通过指令修改。

复合准则可以自定义,其格式如下:

<基础准则id:命名空间>:<次级准则>(1.12更新后)

复合准则实际上就是mojang将你菜单界面中的“统计数据”和计分板绑定在一起而已。基础准则具体有:

teamkill.<队伍颜色>——玩家杀死指定颜色的队伍成员便会增加分数

killedbyteam.<队伍颜色>——玩家被指定颜色的队伍成员杀死便会增加分数

:<emmm....不知道怎么描述>——对应的是统计信息菜单中的“通用”一栏信息。比如准则:_game就是跟踪每一名玩家统计菜单中的“游戏退出次数”。具体的每项统计信息所对应的命名空间id就太多了,需要的可以自行到minecraft wiki查看(指明路线:统计信息→命名空间id→统计信息列表)。

_up:<物品id>——玩家捡起指定物品时便会增加分数(对应统计菜单“物品”一栏的“拾起个数”)

:<物品id>——玩家丢弃指定物品时便会增加分数(对应统计菜单“物品”一栏的“丢弃个数”)

:<物品id>——玩家使用指定物品时便会增加分数(对应统计菜单“物品”一栏的“使用次数”)

:<物品id>——玩家消耗指定物品时便会增加分数(对应统计菜单“物品”一栏的“工具消耗数”)

:<物品id>——玩家合成指定物品时便会增加分数(对应统计菜单“物品”一栏的“合成次数”)

:<方块id>——玩家挖掘指定方块时便会增加分数(对应统计菜单“方块”一栏的“开采次数”)

:<实体id>——玩家击杀指定实体时便会增加分数(对应统计菜单“生物”一栏的“你杀死了n只xxx”中的n)

_by:<实体id>——玩家被指定实体击杀时便会增加分数(对应统计菜单“生物”一栏的“xxx杀死了你n次”中的n)

注意:更新中将统计信息中的“方块”并到“物品”一栏。

现在,我们有了一个计分项。但如果你想要修改显示名称该怎么办?

在基岩版和以下版本中,你只能删了重新搞。这时候你就需要使用remove:

\/scoreboard objectives remove coin

这样子就可以删掉叫做coin的计分项。

但如果你忘记了计分项的名称该怎么办?使用list列出所有计分项以查看:

\/scoreboard objectives list

(注意,在以上版本中,如果你的计分项设置了显示名称,那么list只会列出该计分项的显示名称,要查看具体的名称需要将鼠标移到列出的计分项显示名称的上方)

在以上版本中,有一种便捷的方法可以不删除计分项就可以更改显示名称:modify。

举个例子:假设你想要修改我们刚才创建的coin计分项的名称为“软妹币”,你就需要执行:

\/scoreboard objectives modify coin disyname “软妹币“

modify不只是可以修改名称,它还可以修改计分项中玩家分数的值的显示方式。

当然在研究这个值显示方式之前,我们得了解一下setdisy的作用。

上面列格式时就已经提到过setdisy的作用了:显示计分项于某个位置。

具体的这个位置有哪些呢?

list——java版中是在tab玩家列表中显示每名玩家的分数(不显示具体是哪个计分项),基岩版中是在暂停界面显示。

sidebar——在屏幕的右侧显示列表,并在列表的最上方显示该计分项的显示名称

<队伍颜色>——和sidebar作用相同,只是只会给指定颜色的队伍查看[仅java版]

belowname——在玩家的头上面显示该玩家的分数

举个例子:

\/scoreboard objectives setdisy sidebar coin

执行指令,就可以将我们刚才创建的coin计分项以列表的形式显示在右侧。需要注意,如果已经有其他计分项显示在该位置,执行该条指令后将会覆盖显示为coin计分项。

在基岩版,使用list和sidebar位置时还可以指定列表排序方式:ascending(从小到大)和descending(从大到小[默认])。比如:

\/scoreboard objectives setdisy sidebar coin ascending

就可以将最穷的玩家显示在列表最上方的位置。

如果你仔细看了setdisy的格式,你会发现“计分项名称”这个参数是选填的。那如果不填会发生什么?

重置该位置,也就是取消显示计分项在该位置。比如:

\/scoreboard objectives setdisy sidebar

就可以让右侧一栏重回清净。

通过modify的rendertype我们还可以修改指定计分项的分数显示时的样子。mojang给了我们两个选择:hearts(生命值)和integer(数值)。

比如:

\/scoreboard objectives modify coin rendertype hearts

就会将coin计分项中每名玩家的分数以生命值的形式显示出来。

需要注意的是,生命值形式仅支持tab玩家列表。

.......

.......

.......

在更新前,计分项的复合准则并不是这样,而是:

<一级准则>.<二级准则>.[次一级准则].[次二级准则](1.13更新前)

复合准则也并不是完全和统计菜单的数据绑定。在1.13更新前,复合准则具体有如下内容:

achievement.<成就id>——(1.12版本中被移除)以一个玩家达成指定成就数量作为值。比如就是“钻石”成就的达成次数。这个成就的达成次数是什么意思呢?举个例子,你获得到1块钻石,就达成了“钻石”成就1次。如果你再次获得一块钻石,虽然游戏不会告诉你你又一次达成了“钻石”成就,但是你实打实地达成了这个成就两次。由于minecraft wiki会慢慢舍弃旧游戏内容,我就把成就id全放这了,具体指的是什么成就自己扔进生草机里翻译:“acquireiron“、“bakecake“、“zerod“、“bookcase“、“breedcow“、“buildbetterpickaxe“、“buildfurnace“、“buildhoe“、“buildpickaxe“、“buildsword“、“buildworkbench“、“cookfish“、“diamonds“、“diamondstoyou“、“enchantments“、“exploreallbiomes“、“flypig“、“fullbeacon“、“ghast“、“killcow“、“killenemy“、“killwither“、“makebread“、“minewood“、“onarail“、“openinventory“、“overkill“、“overpowered“、“portal“、“potion“、“snipeskeleton“、“spawnwither“、“theend“、“theend2“。

stat.<内容>——对应1.13更新后的“:<emmm....不知道怎么描述>”。比如准则就是玩家的潜行时间。“内容”可以填“animalsbred“、“armorcleaned“、“bannercleaned“、“beaconinteraction“、“boatonecm“、“brewingstandinteraction“、“cakesliceseaten“、“cauldronfilled“、“cauldronused“、“chestopened“、“climbonecm“、“craftingtableinteraction“、“crouchonecm“、“damagedealt“、“damagetaken“、“deaths“、“dispenserinspected“、“diveonecm“、“drop“、“dropperinspected“、“enderchestopened“、“fallonecm“、“fishcaught“、“flowerpotted“、“flyonecm“、“furnaceinteraction“、“hopperinspected“、“horseonecm“、“itemenchanted“、“jump“、“junkfished“、“leavegame“、“minecartonecm“、“mobkills“、“noteblockyed“、“noteblocktuned“、“pigonecm“、“yerkills“、“yoneminute“、“recordyed“、“sneaktime“、“sprintonecm“、“swimonecm“、“talkedtoviger“、“timesincedeath“、“tradedwithviger“、“trappedchesttriggered“、“treasurefished“和“walkonecm“。

<物品数字id或英文id>——对应1.13更新后的:<物品id>。如准则就是玩家合成弓的次数,也是玩家合成弓的次数。注意,使用英文id,命名空间就需要作为次1级准则,物品id就要放到次2级准则中。

<物品数字id或英文id>——对应1.13更新后的:<物品id>,用法和<物品数字id或英文id>一样。

<物品数字id或英文id>——对应1.13更新后的:<物品id>,用法也一样。

<方块数字id或英文id>——对应1.13更新后的:<方块id>,用法仍然一样。

<实体id>——对应1.13更新后的:<实体id>。只不过支持的实体id相比于1.13更新后的版本要少许多,并且不支持mod实体,因为没有命名空间。如就是杀死村民的次数。

<实体id>——对应1.13更新后的_by:<实体id>,用法和<实体id>一样。

需要注意,在版本之前,等准则是不支持物品和方块的id名(英文id)的。

本章到此结束。

上一章目录+书架下一章