记分板

来自Minecraft Wiki
跳转到导航 跳转到搜索
  本条目介绍的是记分板的具体特性。关于管理记分板的命令,请见“命令/scoreboard”。
  分数”重定向至此。关于死亡界面中显示的分数,请见“经验 § 分数”。
Wiki上有与该主题相关的教程!
Wiki上有与该主题相关的教程!教程:记分板
一张记分板的截图

记分板(Scoreboard)系统是一套通过命令操纵的复杂游戏机制。主要为地图作者与服务器运营者准备,记分板可用多种形式追踪、设置并列出玩家及实体的分数。

记分项[编辑 | 编辑源代码]

常见的译名分歧
原文 游戏内译名 游戏曾用译名 社区常见译名
Objective 记分项 对象、目标 变量
Criteria 准则 - 判据
Trigger 触发器 - -
(Display) Slot (显示)位置 - 显示区

记分项(Objective)主要由三部分组成:名称、显示名称、准则。记分项可追踪或监听游戏内的某些物体或事件,并将该物体或事件的部分属性转化为可存储于实体内的分数。在游戏内部,记分板分数为一个32位整型数字,故不能为小数,取值范围为-2,147,483,648至2,147,483,647(闭区间)。

记分项名称(Name):记分项的唯一标识名,用于在命令、目标选择器参数以及某些文件格式内部引用记分项。记分项名称区分大小写,在Java版中,名称可以包含所有的大小写字母、数字、下划线、点、减号和加号。在基岩版中,可以是任何字符。

显示名称(Display Name):为一个文本组件,用于在不同场合显示记分项。允许不同记分项拥有相同的显示名称。

准则(Criterion,复数为Criteria):决定记分项应追踪游戏内的哪些物体或事件,该记分项的分数将根据指定的准则进行更新。下方的表格列举了所有的准则。

分数(Score):除只读型(参见§ 准则)的记分项外,所有记分项的分数都可以被命令修改。可以指定增加或减少的值,也可以直接设置为某一特定值。

分数持有者(Score Holder):已被一个记分项记录的,拥有确定分值的玩家的名称或实体UUID。其中,玩家名不一定是一个实际存在的玩家。非玩家实体的分数只能通过命令修改,而不能通过游戏系统修改。和玩家不同,非玩家实体死亡后,其分数会被删除(对应一个记分项从内存中释放)。

命令可以通过目标选择器scores参数来检查实体的记分项分数,语法为scores={<名称>=<最小值>..<最大值>}。其中,<名称>即为记分项的唯一标识名。

比如,在命令方块中输入/execute if entity @a[scores={deaths=1..5}]会让比较器或条件制约的命令方块在有玩家于deaths记分板上拥有1至5分时提供输出。

准则[编辑 | 编辑源代码]

Java版[编辑 | 编辑源代码]

准则定义了记分项的记分行为,是记分项必不可少的部分。以下介绍记分项在各类准则约束下的记分行为。

单一准则[编辑 | 编辑源代码]
准则名称 描述 能否被修改
dummy
虚拟型
分数只能通过命令修改,不被实体死亡等游戏事件影响。可用作事件标志、状态映射、货币等等。
trigger
触发器
分数只能通过命令修改,不被实体死亡等游戏事件影响。玩家都能够使用/trigger命令对其相关联的触发器准则记分项进行分数增减——前提是该记分项对该玩家“开放”。默认状态下,触发器记分项禁止玩家通过/trigger修改。当玩家成功使用/trigger改变某记分项分数后,该记分项便会回归到“禁止”状态。值得注意的是,/trigger可以在不允许作弊的情况下被非管理员的普通玩家使用。这可配合/tellraw命令实现玩家输入接口。
deathCount
死亡次数
当玩家死亡时,分数会自动增加。
playerKillCount
杀死玩家总量
当玩家杀死其他玩家时分数会自动增加。
totalKillCount
杀死生物总量
当玩家杀死其他生物(包括玩家)时分数会自动增加。
health
生命值
玩家的生命值伤害吸收值之和。
xp
经验值
对应玩家拥有的经验值
level
等级
对应玩家当前的经验等级。
food
饥饿值
代表玩家的饥饿值,取值范围0~20。玩家的foodLevel首次变化前可能会显示为0。
air
空气值
代表潜水的玩家剩余的空气,取值范围0~300。对应玩家的短整型Air标签。
armor
护甲值
代表玩家拥有的护甲值,取值范围0~20。在玩家第一次更换盔甲前可能会显示为0。
复合准则[编辑 | 编辑源代码]

复合准则由多个部分构成,各部分间使用点号.来分隔。例如, minecraft.killed_by:minecraft.zombie是一种复合准则,当玩家被僵尸杀死时才会增加分数。

基于复合准则的所有分数都可以通过命令修改。

任何统计信息的命名空间ID都可用作复合准则。[1]玩家自身统计数据的存储与记分板分数的存储互相独立。当这些统计数据更新时,跟踪的记分项也会同步更新。

除此之外,还有以下复合准则:

准则基础名称 描述 次级准则数
teamkill.

次级准则是队伍的颜色。玩家杀死特定颜色的队伍成员时增加。

这些准则符合以下完整格式:teamkill.<team>,其中<team>是以下列表中的颜色:

16
killedByTeam. 次级准则包括队伍的颜色。玩家被特定颜色队伍的成员杀死时增加。

这些准则符合以下完整格式:killedByTeam.<team>,其中<team>是以下列表中的颜色:

16

基岩版[编辑 | 编辑源代码]

目前只支持dummy准则,因此分数仅能由命令修改。

显示位置[编辑 | 编辑源代码]

以“列表”形式显示的某一玩家在这一记分项下获得了2点分数,同时在“侧边栏”模式中则为某一显示名称为“Quest Points”的记分项,其中该玩家没有获得分数

每个“显示位置(Display Slot)”可以依次显示一个记分项,并且多个显示位置可以被用于相同或不同的记分项。

  • /scoreboard objectives setdisplay命令可将记分项以及记分项中的分数以某些“形式”显示出来。
  • /scoreboard objectives modify <objective> displayname命令可以修改记分项的显示名称。[仅Java版]
  • /scoreboard objectives modify <objective> rendertype命令可以修改记分项的渲染类型。[仅Java版]
显示位置 描述 显示效果
list
列表
在玩家列表中以黄色文字在玩家名称后显示分数信息(默认为Tab ↹键),并不会显示记分项名称。[仅Java版]
在暂停页面的玩家列表显示分数信息。[仅基岩版]
list显示位置的显示效果,渲染类型为integer
list显示位置的显示效果,渲染类型为hearts
sidebar
侧边栏
在屏幕的右侧显示。在列表的最上方显示记分项的显示名称(display name),并显示玩家的高分榜。值得注意的是,即使玩家离线,如果在该记分项下存在一定分数也会在“侧边栏”中进行显示,并且没有痕迹的玩家也不会被显示。除此之外,以#开头的伪造的玩家名称在任何情况下都不会在侧边栏可见。
sidebar显示位置的显示效果
sidebar.team.<color>
侧边栏.队伍.<颜色>[仅Java版]
有16个的具体队伍的侧边栏显示形式。它们和标准的侧边栏同样操作,但只有指定颜色的队伍中的玩家可以看见(例如"sidebar.team.green"绿色队伍中的玩家可以看见)。有效的颜色是:"black", "dark_blue", "dark_green", "dark_aqua", "dark_red", "dark_purple", "gold", "gray", "dark_gray", "blue", "green", "aqua", "red", "light_purple", "yellow", 和 "white"。注意,该显示位置的优先级高于sidebar,故会占用原有的sidebar内容。
sidebar显示位置的显示效果
below_name[仅Java版]
belowname[仅基岩版]
名称下方
在玩家的名称牌之下,在他们的头之上,于记分项的显示名称(display name)前面显示分数。在10个方块以外、玩家潜行时隐藏。这一显示位置在单人游戏中不可见。
below_name显示位置的显示效果

队伍[编辑 | 编辑源代码]

主条目:队伍命令/team

队伍(Team)是记分板系统管理的一套机制,可以将玩家和其他实体进行分组,形成联合的整体。

存储格式[编辑 | 编辑源代码]

本段落所述内容仅适用于Java版

记分板数据存储在<存档根目录>/data/scoreboard.dat文件中。

历史[编辑 | 编辑源代码]

Java版
1.513w04a加入了记分板。
13w05a加入了队伍相关功能。
1.7.213w36a加入了统计相关记分项准则。
1.814w02a除了玩家外的实体也能加入队伍并拥有记分项分数了。
14w06a加入了trigger队伍击杀相关记分项准则。
加入了/scoreboard players enable命令。
"*" 可以用作玩家名称参数代表所有正被记分板追踪的玩家了。
/scoreboard players reset命令加入了objective参数。
统计记分项准则使用ID名而不使用ID了。
加入了achievement.overpowered记分项准则。
14w07a加入了/scoreboard players operationscoreboard players test命令。
以"#"开头的虚拟玩家的分数不再显示于侧边栏。
加入了指定队伍的侧边栏显示位置。
加入了nametagVisibility队伍选项。
14w10a加入了deathMessageVisibility队伍选项。
/scoreboard players set/scoreboard players add/scoreboard players remove命令加入了dataTag参数。
加入了stat.crouchOneCm、​stat.sprintOneCm和​stat.timeSinceDeath记分项准则。
14w25a/scoreboard players operation命令加入了=、​<和​>
14w29a玩家/实体在侧边栏名字的第二顺序依照字母表储存。
14w30a加入了stat.talkedToVillager和​stat.tradedWithVillager记分项准则。
?/scoreboard players operation加入了><
1.8.2加入了cauldronFilled、​stat.cauldronUsed、​stat.armorCleaned、​stat.bannerCleaned、​stat.brewingstandInteraction、​stat.beaconInteraction、​stat.dropperInspected、​stat.hopperInspected、​stat.dispenserInspected、​stat.noteblockPlayed、​stat.noteblockTuned、​stat.flowerPotted、​stat.trappedChestTriggered、​stat.enderchestOpened、​stat.itemEnchanted、​stat.recordPlayed、​stat.furnaceInteraction、​stat.craftingTableInteraction和​stat.chestOpened记分项准则。
1.915w32a加入了stat.sneakTime记分项准则。
15w32b加入了/scoreboard players tag命令。
加入了xp、​food和​air记分项类型。
15w33a加入了stat.pickup和​stat.drop记分项准则。
加入了armor和​level记分项类型。
15w36a加入了collisionRule
1.13?记分板名称不能再包含:等字符。
17w45a移除了/scoreboard players tag/scoreboard teams,分别被/tag/team替代。
pre7加入了/scoreboard objectives modify
pre8加入了语法/scoreboard objectives modify <记分项> rendertype hearts,使记分项分数在玩家列表中显示为心形。
加入了语法/scoreboard objectives modify <记分项> rendertype integer,使记分项分数在玩家列表中显示为黄色的数字。
记分项名称现在为文本组件,而不是纯字符串。
1.13.118w31a计算符号%=%被更改为Math.floorMod
1.1821w37a取消了记分项名称与分数持有者的16个字符的长度限制。
1.20.223w31a将显示位置belowName重命名为below_name
1.20.323w46a添加了新的子命令,用于更改特定记分项在侧边栏中的显示。
基岩版
1.7.01.7.0.2加入了记分板部分功能。
加入了dummy准则。
1.19.801.19.80.20取消了记分项的16个字符的长度限制。

参考[编辑 | 编辑源代码]

导航[编辑 | 编辑源代码]