跳到主要内容

颜色与格式

看板文字支持三套写法,可以混在同一行:

写法例子需要
& 颜色代码&a绿色 &l粗体所有版本
十六进制颜色&#FF66AA粉红、<#FF66AA>粉红1.16+(更旧的版本会换成最接近的 16 色)
渐变与彩虹<#FF0000>渐变</#0000FF>、<RAINBOW1>彩虹</RAINBOW>1.16+
MiniMessage 标签<gradient:#78EFFF:#CB9CFF><bold>标题</bold></gradient>Paper / Purpur 1.18.2+

开服时控制台会写出目前的模式:「支持 MiniMessage」或「使用颜色代码模式(服务器没有 MiniMessage)」。

各种写法在 1.21.11 的实际效果

上图由上到下:& 颜色代码(粗体 / 斜体 / 底线)、&#RRGGBB 十六进制、DecentHolograms 渐变、<RAINBOW50> 彩虹、MiniMessage 三色渐变、MiniMessage 彩虹与装饰。

Spigot 能用什么?

Spigot、1.18.1 以下的 Paper 没有 MiniMessage:& 颜色、十六进制、渐变、彩虹照常可用;MiniMessage 标签(<gold>、<gradient:...>、<font:...>)不会生效,会原样显示或变成乱码。

& 颜色代码​

最传统的写法,每个版本都能用。& 后面接一个字母或数字,从这里开始改变后面文字的颜色或格式。

颜色​

代码颜色十六进制MiniMessage 名称
&0黑色#000000black
&1深蓝#0000AAdark_blue
&2深绿#00AA00dark_green
&3深青#00AAAAdark_aqua
&4深红#AA0000dark_red
&5深紫#AA00AAdark_purple
&6金色#FFAA00gold
&7灰色#AAAAAAgray
&8深灰#555555dark_gray
&9蓝色#5555FFblue
&a绿色#55FF55green
&b青色(天蓝)#55FFFFaqua
&c红色#FF5555red
&d粉红(淡紫)#FF55FFlight_purple
&e黄色#FFFF55yellow
&f白色#FFFFFFwhite

格式​

代码效果MiniMessage
&l粗体<bold>
&o斜体<italic>
&n底线<underlined>
&m删除线<strikethrough>
&k乱码(不停跳动的字)<obfuscated>
&r清除前面所有颜色与格式<reset>
颜色要写在格式前面

颜色代码会清除前面的格式。&l&a文字 不是粗体,要写 &a&l文字。

§ 也能代替 &,效果相同。

十六进制颜色​

1.16 以上可以用任何颜色。以下写法效果完全一样(RRGGBB 是六位十六进制):

写法例子说明
&#RRGGBB&#FF66AA粉红最常用
<#RRGGBB><#FF66AA>粉红也是 MiniMessage 的写法
{#RRGGBB}{#FF66AA}粉红
#RRGGBB#FF66AA粉红前面什么都不加也算
&x&R&R&G&G&B&B&x&F&F&6&6&A&A粉红Spigot 原生写法
文字里的 # 加六个字母数字会被吃掉

因为 #RRGGBB 不加前缀也算颜色,订单 #A1B2C3 这种文字会被当成颜色代码而消失。 要显示这类文字,在 # 后面插入一个颜色代码隔开,例如 #&fA1B2C3。

1.15 以下的服务器不支持任意颜色,十六进制会自动换成 16 色里最接近的那一个。

渐变与彩虹(DecentHolograms 写法)​

渐变​

<#起始颜色>文字</#结束颜色>
例子效果
<#FF0000>红到蓝的渐变</#0000FF>每个字的颜色从红色慢慢变成蓝色
{#FFAA00}金色渐变{/#FFFF55}用大括号也可以
<#78EFFF>&l粗体渐变</#CB9CFF>里面的 &l &o &n &m &k 会套用到每个字
  • 只能两个颜色。想要三个以上,请用 MiniMessage 的 <gradient>。
  • 支持 MiniMessage 的服务器上,这个写法会自动转成 MiniMessage 的渐变,效果更平滑。

彩虹​

<RAINBOW1>彩虹文字</RAINBOW>
  • 每个字依序是红、橙、黄、绿、青、蓝、紫。标签必须大写。
  • 数字是饱和度,请写 1。数字可以写 1~999,但大于 1 时颜色会变成不规则的淡色,0 则是全黑。
  • 想要会动的彩虹,用 &u 或 动画。

MiniMessage 标签​

Paper / Purpur 1.18.2 以上可以用 MiniMessage 标签。标签写成 <名称>,用 </名称> 结束(可以不结束,效果持续到行尾)。

适合用在看板上的标签​

标签效果例子
<颜色名>16 种基本颜色,名称见 上方表格<gold>金色</gold>
<#RRGGBB>、<color:#RRGGBB>任意颜色<#F6A95B>橘色
<bold> / <b>粗体<b>粗体</b>
<italic> / <i> / <em>斜体<i>斜体</i>
<underlined> / <u>底线<u>底线</u>
<strikethrough> / <st>删除线<st>原价</st>
<obfuscated> / <obf>乱码<obf>???</obf>
<!bold> 等在 ! 后接格式名称,关闭该格式<bold>粗<!bold>不粗
<reset>清除前面所有颜色与格式<red>红<reset>白
<gradient:颜色1:颜色2:...>渐变,颜色数量不限,可以用颜色名或 #RRGGBB<gradient:#78EFFF:#CB9CFF:#FFB3E6>三色渐变</gradient>
<rainbow>彩虹;<rainbow:!> 反向,<rainbow:2> 位移相位<rainbow>彩虹</rainbow>
<transition:颜色1:颜色2:进度>取两个颜色之间的某一个颜色(进度 0~1)<transition:red:blue:0.5>紫色</transition>
<font:命名空间:字体>换字体,见 资源包字体<font:minecraft:uniform>文字</font>
<lang:翻译键>显示游戏内翻译,每个玩家看到自己的语言<lang:block.minecraft.diamond_block>
<key:按键名>显示玩家自己设定的按键按 <key:key.jump> 跳跃
<shadow:颜色>自订文字阴影颜色(较新的 Paper 1.21.4+)<shadow:#FF0000>红影</shadow>

不适合看板的标签:<click>、<hover>、<insert> 在看板上没有作用(看板的点击请用 点击动作); <newline> 的效果因显示方式而不同,想要多行请直接加多行。

混用规则​

三套写法可以放在同一行,插件的处理顺序是:

  1. 把 DecentHolograms 的渐变 <#A>文字</#B> 换成 MiniMessage 的 <gradient:#A:#B>(只在支持 MiniMessage 时)。
  2. 暂时把所有 MiniMessage 标签藏起来(<RAINBOW数字> 除外)。
  3. 处理 & 颜色、十六进制、{#A}...{/#B} 渐变、<RAINBOW1> 彩虹。
  4. 把标签放回去,再把 & / § 颜色换成对应的 MiniMessage 颜色标签,整行交给 MiniMessage。

所以:

写法结果
<gold>金色 &a绿色「金色」金色,「绿色」绿色
<bold>&a文字不是粗体:&a 这种旧颜色会清除前面的格式
&a<bold>文字绿色粗体
<gold>金色 <bold>粗体金色粗体:MiniMessage 的颜色标签不会清除格式
<gradient:#78EFFF:#CB9CFF>&l标题</gradient>渐变粗体

建议:一行里尽量只用一种写法。新服务器用 MiniMessage;要兼容 Spigot 就用 & 与 &#RRGGBB。

PlaceholderAPI 变量回传的颜色代码(&a、§a、&#RRGGBB)也会正常上色,因为变量先替换、颜色后处理。

资源包字体​

<font:命名空间:字体名>文字</font> 可以换字体(需要 MiniMessage)。

原版就有的字体:

字体效果
minecraft:default平常的字体
minecraft:uniformUnicode 字体(较细、较小,行距比较大)
minecraft:alt附魔台上的「银河字母」
minecraft:illageralt灾厄村民旗帜上的符号

用资源包放自己的图示​

  1. 在资源包里加入字体文件 assets/myserver/font/icons.json:

    {
    "providers": [
    {
    "type": "bitmap",
    "file": "myserver:font/coin.png",
    "ascent": 8,
    "height": 9,
    "chars": [""]
    }
    ]
    }
  2. 图片放在 assets/myserver/textures/font/coin.png。

  3. 看板里写:

    lines:
    - "<font:myserver:icons></font> <yellow>金币商店</yellow>"
  • YAML 的双引号字串才认得 这种跳脱写法;用单引号时请直接贴上那个字元。
  • 玩家必须载入资源包才看得到,没载入会显示方框。
  • 如果服务器没有 MiniMessage(Spigot),可以把图示加进 minecraft:default 字体(文件路径 assets/minecraft/font/default.json),文字里直接放那个字元就行,不需要 <font> 标签。

自定义替换​

config.yml 的 custom-replacements 可以把短代码换成特殊符号,适合做进度条:

代码换成代码换成
[x]、[X]█[,,,]▓
[/]▌[p]、[P]•
[,]░[|]⎹
[,,]▒
# config.yml
custom-replacements:
'[x]': '█'
'[heart]': '❤' # 自己加的
  • 只对文字行有效。修改后 /clh reload。
  • 替换是在载入时直接改掉这一行的文字,之后用指令修改这个看板时,文件里会存成替换后的符号(不影响显示)。
  • 代码不要互相包含(例如同时有 [a] 与 [ab]),替换顺序不固定。
  • YAML 的键以 [ 开头,一定要加引号。

YAML 引号规则​

看板文件是 YAML。每一行文字都用单引号包起来,就不会出错。

写法结果原因
- &a欢迎载入失败& 开头在 YAML 是「锚点」
- #ICON: STONE整行不见# 开头是注解
- {#FF0000}红色载入失败{ 开头是 YAML 的对照表
- [x][x] 进度载入失败[ 开头是 YAML 的列表
- %player_name%载入失败% 开头是 YAML 保留字元
- *星星*载入失败* 开头是 YAML 的别名
- 等级: 10变成对照表中间有「冒号+空格」
- 编号 #1只剩「编号」「空格+#」后面会被当成注解
- 'It's'载入失败单引号里的 ' 要写两个:'It''s'

正确写法

lines:
- '&a欢迎'
- '#ICON: STONE'
- '{#FF0000}红色'
- '[x][x] 进度'
- '%player_name%'
- '等级: 10'
- '编号 #1'
- 'It''s me'
- "<font:myserver:icons></font>" # 需要 \u 跳脱时才用双引号
  • 双引号里的 \ 是跳脱字元,\n、\u 会被转换;不需要时用单引号比较安全。
  • 改完文件用 /clh validate 检查格式,再 /clh reload。

版本需求总表​

功能需要
& 颜色与格式所有版本
十六进制、渐变、<RAINBOW1>1.16+(更旧的换成最接近的 16 色)
MiniMessage 标签、<font>Paper / Purpur 1.18.2+
<shadow> 文字阴影颜色较新的 Paper(1.21.4+)
文字背景、文字阴影开关1.19.4+(见 背景与阴影)