记分板
见教程:记分板。

记分板(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. |
次级准则是队伍的颜色。玩家杀死特定颜色的队伍成员时增加。 这些准则符合以下完整格式:
|
16 | ||
killedByTeam. | 次级准则包括队伍的颜色。玩家被特定颜色队伍的成员杀死时增加。
这些准则符合以下完整格式:
|
16 |
基岩版[编辑 | 编辑源代码]
目前只支持dummy
准则,因此分数仅能由命令修改。
显示位置[编辑 | 编辑源代码]

每个“显示位置(Display Slot)”可以依次显示一个记分项,并且多个显示位置可以被用于相同或不同的记分项。
/scoreboard objectives setdisplay
命令可将记分项以及记分项中的分数以某些“形式”显示出来。/scoreboard objectives modify <objective> displayname
命令可以修改记分项的显示名称。[仅Java版] /scoreboard objectives modify <objective> rendertype
命令可以修改记分项的渲染类型。[仅Java版]
显示位置 | 描述 | 显示效果 |
---|---|---|
list 列表 |
在玩家列表中以黄色文字在玩家名称后显示分数信息(默认为Tab ↹键),并不会显示记分项名称。 在暂停页面的玩家列表显示分数信息。 |
![]() ![]() |
sidebar 侧边栏 |
在屏幕的右侧显示。在列表的最上方显示记分项的显示名称(display name),并显示玩家的高分榜。值得注意的是,即使玩家离线,如果在该记分项下存在一定分数也会在“侧边栏”中进行显示,并且没有痕迹的玩家也不会被显示。除此之外,以#开头的伪造的玩家名称在任何情况下都不会在侧边栏可见。 | ![]() |
sidebar.team.<color> 侧边栏.队伍.<颜色> |
有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 内容。
|
![]() |
below_name belowname 名称下方 |
在玩家的名称牌之下,在他们的头之上,于记分项的显示名称(display name)前面显示分数。在10个方块以外、玩家潜行时隐藏。这一显示位置在单人游戏中不可见。 | ![]() |
队伍[编辑 | 编辑源代码]
队伍(Team)是记分板系统管理的一套机制,可以将玩家和其他实体进行分组,形成联合的整体。
存储格式[编辑 | 编辑源代码]
记分板数据存储在<存档根目录>/data/scoreboard.dat
文件中。
历史[编辑 | 编辑源代码]
Java版 | |||||||
---|---|---|---|---|---|---|---|
1.5 | 13w04a | 加入了记分板。 | |||||
13w05a | 加入了队伍相关功能。 | ||||||
1.7.2 | 13w36a | 加入了统计相关记分项准则。 | |||||
1.8 | 14w02a | 除了玩家外的实体也能加入队伍并拥有记分项分数了。 | |||||
14w06a | 加入了trigger 队伍击杀相关记分项准则。 | ||||||
加入了/scoreboard players enable 命令。 | |||||||
"*" 可以用作玩家名称参数代表所有正被记分板追踪的玩家了。 | |||||||
为/scoreboard players reset 命令加入了objective 参数。 | |||||||
统计记分项准则使用ID名而不使用ID了。 | |||||||
加入了achievement.overpowered 记分项准则。 | |||||||
14w07a | 加入了/scoreboard players operation 与scoreboard 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.9 | 15w32a | 加入了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.1 | 18w31a | 计算符号%= 从% 被更改为Math.floorMod 。 | |||||
1.18 | 21w37a | 取消了记分项名称与分数持有者的16个字符的长度限制。 | |||||
1.20.2 | 23w31a | 将显示位置belowName 重命名为below_name 。 | |||||
1.20.3 | 23w46a | 添加了新的子命令,用于更改特定记分项在侧边栏中的显示。 | |||||
基岩版 | |||||||
1.7.0 | 1.7.0.2 | 加入了记分板部分功能。 | |||||
加入了dummy 准则。 | |||||||
1.19.80 | 1.19.80.20 | 取消了记分项的16个字符的长度限制。 |