进度条和标题:持久状态、时序以及当前值/最大值分离
进度条在重启后仍然存在,而标题则不会。本文将介绍创建-修改模式、人们常设错的淡入淡出时序,以及如何驱动进度条。
两者都会在屏幕上显示文本,但相似之处仅此而已。标题是即发即弃的;进度条是需要你管理的持久对象。
进度条是有状态的
/bossbar add my:timer {"text":"Time left"}
/bossbar set my:timer players @a
/bossbar set my:timer max 600
/bossbar set my:timer value 600
/bossbar set my:timer color red
/bossbar set my:timer style notched_10
先是 ID,然后是修改它的命令。玩家容易出错的地方:
- 进度条在有玩家之前是不可见的。 创建一个进度条但从不运行
set ... players将不会显示任何内容,也不会报错。 - 它会持久保存在世界存档中。 为小游戏创建的进度条在下一次会话中仍然存在。完成后请运行
/bossbar remove,否则它们会累积。 value和max是独立的,进度条显示的是value / max。如果只设置了value,而最大值仍为 100,则进度条的填充会显示异常。
颜色:pink white red orange yellow green blue purple。 样式:progress notched_6 notched_10 notched_12 notched_20。
驱动倒计时
/bossbar set my:timer value 599
每秒从一个重复函数中运行一次,这就是整个机制。没有内置计时器。读取它也很有用:
/execute store result score @s Left run bossbar get my:timer value
bossbar get 支持 value、max、players 和 visible,这使得进度条在你想让玩家看到时,可以作为可用的全局变量。
标题是瞬态的
/title @a times 10 70 20
/title @a subtitle {"text":"Get ready"}
/title @a title {"text":"Round 2"}
按此顺序有三件事,并且顺序很重要:
- 先设置
times。 在标题显示后设置它对已显示的标题没有影响。 - 在
title之前设置subtitle。 单独的副标题不会显示任何内容;发送标题才会触发两者一起出现。如果顺序颠倒,第一个标题会显示,但没有副标题。
times 是 fadeIn stay fadeOut 以刻为单位——每秒 20 刻。10 70 20 是半秒淡入,三秒半保持,一秒淡出。人们设置 1 1 1 却疑惑为什么什么都没有出现:总共三刻只是一个闪烁。
动作栏是独立的
/title @a actionbar {"text":"Saved"}
热键栏上方的文本行。它完全忽略 times——它会显示固定的几秒钟然后淡出。每刻重新发送它会使其永久显示,这是运行自定义 HUD 的标准方式。
清除
/title @a clear 会移除正在显示的内容;/title @a reset 还会恢复默认时序。 对于进度条,/bossbar set my:timer visible false 会隐藏而不破坏状态。
在 高级命令构建器——控制与调试 的表单中构建进度条、标题以及其他控制和调试命令。