JSON文本是指在Minecraft使用JSON来表示一段有格式的文本,它实际上是一段JSON,游戏会将其解释为具体的文字与格式。本文章将介绍JSON文本的格式以及在命令中的用法,因此读者需要对JSON有一定的了解,参见命令#JSON文本和教程/NBT与JSON。本文章假定读者已经了解并且会写JSON,因此本教程不讲述JSON的语法以及基础术语的含义。在形式上,一个JSON文本可以是几乎任何数据类型,但一般我们使用字符串、组合和列表。
用途
Minecraft的几乎各处都使用了JSON文本。比如,你在告示牌、书与笔中书写的内容,一般都是纯文本,但它实际上也是JSON文本,对其数据稍加修改就可以实现文字的格式(和样式代码有一定的相似性)。给物品或者实体命名,实际上也是JSON文本,通过命令即可使物品或实体的名字是带有格式的。
进度的名称和描述也是使用了JSON文本。修改你的游戏语言,进度的名称和描述也随之改变,这就是由于它是由JSON文本定义的。通过修改JSON文本,我们也可以让告示牌、物品或实体的名称、书的内容也能够随游戏语言而变化。
可见,JSON文本在游戏内非常普遍。要用命令修改实体的名称、告示牌或书的内容,或者设置记分板项或boss栏的名称,必须要有一点JSON文本的知识。
简单的实例
纯文本
这是一个简单的JSON文本:
"欢迎加入Minecraft"
它就是单个的一个字符串。
一个JSON文本可以是一个对象:
{
"text": "欢迎加入Minecraft"
}
上面两个实例的效果都是如下:
欢迎加入Minecraft
一般地,当你在告示牌输入文字,或者给物品、实体命名,这些文字一般都是纯文本,它们都是如上这几种格式。
所有的卫道士都命名为了Johnny,它们将四处杀戮。
Minecraft内,所有被命名为Johnny的卫道士都会变成“杀人狂魔”。你可以通过铁砧将命名牌命名为Johnny,然后再用命名牌给卫道士命名;或者,在创造模式,你也可以通过铁砧将卫道士刷怪蛋命名为Johnny,它生成的所有卫道士都是被命名为Johnny的。如果需要将所有的卫道士命名为Johnny,可以使用如下命令:/execute as @e[type=vindicator] run data merge entity @s {CustomName:"\"Johnny\""}。关于如何通过命令来修改JSON文本,我们在后面会有详细的介绍。
文字的颜色
使用/tellraw命令显示此JSON文本的效果。
你可以通过一个对象对一段文字渲染格式。在这个对象中,"text"的值为文字的内容,而"color"的值为颜色名称。比如下面的实例会将“欢迎加入Minecraft”渲染为深红色:
{
"text": "欢迎加入Minecraft",
"color": "dark_red"
}
效果:
欢迎加入Minecraft
你可以通过/tellraw命令来展示这段红色的文字:
/tellraw @a {"text":"欢迎加入Minecraft","color":"dark_red"}
可用的颜色名称
下表摘录于样式代码#颜色代码。在JSON文本中,作为"color"的值的颜色名称是下表中的“技术性名称”。前景色就是文字显示的颜色,背景色则是文字阴影的颜色(一般只有在聊天框内或者显示为标题内容时才会显示文字阴影)。表中的R、G、B和十二进制表示法,如果看不懂的话可以不用了解。
上面那个图片截取的部分。观察此文字的前景色和背景色。
| 样式代码 | 颜色中文名 | 技术性名称 | 前景色 | 背景色 | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| R | G | B | 十二进制表示法 | R | G | B | 十二进制表示法 | |||
| §0 | 黑色 | black | 0 | 0 | 0 | 000000 | 0 | 0 | 0 | 000000 |
| §1 | 深蓝色 | dark_blue | 0 | 0 | 170 | 0000AA | 0 | 0 | 42 | 00002A |
| §2 | 深绿色 | dark_green | 0 | 170 | 0 | 00AA00 | 0 | 42 | 0 | 002A00 |
| §3 | 湖蓝色 | dark_aqua | 0 | 170 | 170 | 00AAAA | 0 | 42 | 42 | 002A2A |
| §4 | 深红色 | dark_red | 170 | 0 | 0 | AA0000 | 42 | 0 | 0 | 2A0000 |
| §5 | 紫色 | dark_purple | 170 | 0 | 170 | AA00AA | 42 | 0 | 42 | 2A002A |
| §6 | 金色 | gold | 255 | 170 | 0 | FFAA00 | 42 | 42 | 0 | 2A2A00 |
| §7 | 灰色 | gray | 170 | 170 | 170 | AAAAAA | 42 | 42 | 42 | 2A2A2A |
| §8 | 深灰色 | dark_gray | 85 | 85 | 85 | 555555 | 21 | 21 | 21 | 151515 |
| §9 | 蓝色 | blue | 85 | 85 | 255 | 5555FF | 21 | 21 | 63 | 15153F |
| §a | 绿色 | green | 85 | 255 | 85 | 55FF55 | 21 | 63 | 21 | 153F15 |
| §b | 天蓝色 | aqua | 85 | 255 | 255 | 55FFFF | 21 | 63 | 63 | 153F3F |
| §c | 红色 | red | 255 | 85 | 85 | FF5555 | 63 | 21 | 21 | 3F1515 |
| §d | 粉红色 | light_purple | 255 | 85 | 255 | FF55FF | 63 | 21 | 63 | 3F153F |
| §e | 黄色 | yellow | 255 | 255 | 85 | FFFF55 | 63 | 63 | 21 | 3F3F15 |
| §f | 白色 | white | 255 | 255 | 255 | FFFFFF | 63 | 63 | 63 | 3F3F3F |
列表:不同的文字不同的格式
你列表,来实现对不同的文字渲染不同的颜色,比如:
[
{
"text": "欢迎你加入",
"color": "dark_red"
},
{
"text": "Minecraft",
"color": "blue"
}
]
效果:
欢迎加入Minecraft
(本教程未写完,后续会继续完善)