指南
如何制作 Minecraft 计分板插件
更新于 2026年10月18日
屏幕右侧的侧边栏是很多服务器最显眼的部分:服务器名称、玩家的等级、金钱、击杀数、在线玩家。插件通过 Bukkit 的 Scoreboard API 来绘制它。难点在于让每个玩家都有自己的行,并平滑地更新它们。
把这些行改成你服务器的内容。
用 Codexe 生成这个分步说明
1.写下每一行
标题和从上到下的每一行,以及它们显示的数值:“等级:Admin”“金币:1,250”“在线:34”。侧边栏最多显示 15 行。
2.为每个玩家创建一个计分板
每个玩家内容不同的行,需要每个玩家一个计分板:用
Bukkit.getScoreboardManager().getNewScoreboard()创建,在玩家加入时用player.setScoreboard(...)设置。3.创建侧边栏目标
注册一个 dummy 目标,并把它的显示位置设为
DisplaySlot.SIDEBAR。每一行是一个条目,分数决定它的位置。4.更新数值
用一个重复任务,比如每秒一次,只更新有变化的行。文本放在队伍的前缀和后缀里,这样行就不会闪烁。
5.加入占位符
有了 PlaceholderAPI,像
%vault_eco_balance%这样的行无需额外代码就能显示其他插件的数值。6.构建并在游戏中查看
让 Codexe 编译,加入测试服务器,检查每一行,然后改变一个数值,看它是否更新。
侧边栏的工作原理
- 每个计分板同一时间只在侧边栏显示一个目标。它的显示名称就是标题。
- 行按分数从高到低排序,所以分数其实就是倒过来的行号。
- 每一行都必须是不同的条目:两行相同的内容需要一点看不见的差别,比如不同的颜色代码。
- 从 Minecraft 1.20.3 起可以隐藏右侧的红色数字,这个版本为分数加入了数字格式。更早的版本总是会显示它们。
- 玩家只能看到一个计分板:如果另一个插件设置了自己的,最后设置的那个生效。侧边栏只用一个插件,或者写明还有哪些插件共用计分板。
无闪烁更新
先删掉一行再加一行新的,会让它闪一下。常见的做法是给每一行一个固定的、看不见的条目,把可见文本放进包含该条目的队伍的前缀和后缀里;更新队伍就能原地改变文本。在需求中写上“无闪烁”,插件就会这样编写。
插件、Skript 还是数据包?
| 方案 | 能做到 | 限制 |
|---|---|---|
| 插件 | 每个玩家不同的行、任意数值、动画、占位符 | 需要 Spigot、Paper 或其分支 |
| Skript 加 SkBee | 用脚本为每个玩家生成侧边栏 | 需要 Skript 和该附加组件 |
| 数据包 | 在侧边栏显示一个目标,比如死亡数或击杀数 | 所有人看到的数字相同,不能为每个玩家显示自由文本 |
描述示例
“一个名为 Board 的 Paper 1.21.4 插件。每个玩家一个侧边栏,标题为金色,下面依次是等级(来自 LuckPerms)、金币(来自 Vault)、击杀数、死亡数、在线玩家数和服务器地址。每秒更新且无闪烁,隐藏红色数字。行、标题和更新间隔在 config.yml 中,任何一行都可以使用 PlaceholderAPI 占位符。/board toggle 可为每个玩家单独隐藏它,并保存这个选择。”
常见问题
侧边栏最多能有几行?
最多显示 15 行。更多内容需要放到别处,比如 Tab 列表、动作栏或 Boss 血条。
1.8 上能用吗?
能,1.8 上就有 Scoreboard API,但每行的文本长度限制更多。写明版本,插件就会按它来编写。
为什么我的计分板会消失?
通常是另一个插件在你的插件之后为玩家设置了自己的计分板。移除另一个侧边栏,或者让一个插件显示所有内容。
制作你的侧边栏
这条提示词打开后即可直接发送:
“一个名为 Board 的 Paper 1.21.4 侧边栏计分板插件:每个玩家一个侧边栏,金色标题,显示来自 LuckPerms 的等级、来自 Vault 的金币、击杀数、死亡数、在线玩家数和服务器地址,每秒无闪烁更新,隐藏红色数字,行和间隔在 config.yml 中并支持 PlaceholderAPI,/board toggle 按玩家保存。”
用 Codexe 生成这个