Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

了解更多

Minecraft Wiki
Advertisement

JSON文本是指在Minecraft通过JSON代码来表示的文本,它可以是纯文本,也可以具有格式,还能够具有交互效果,或者显示翻译、分数、实体名称、数据。JSON广泛地应用于命令数据包中。

本文章将介绍JSON文本的格式以及在命令中的用法,阅读本教程时应该要对JSON的语法和用法有一定的了解,参见命令#JSON文本教程/NBT与JSON

从数据类型上讲,一个JSON文本一般是字符串、对象(object,也叫组合)和列表。但是,布尔值和数值作为JSON文本也是有效的。

用途

Sign json

告示牌就是使用了JSON文本的。图中是1.14新增的白桦木告示牌,文字的颜色是通过命令设置的。

Minecraft的几乎各处都使用了JSON文本。

你在告示牌书与笔中书写一些文字,这些文字一般都是纯文本,但是从技术上讲,这些文字实际上也是JSON文本,对其数据稍加修改就可以让文字不再是简单的纯文本(和样式代码有一定的相似性)。

你通过铁砧给物品或者实体(命名牌)命名,这个名字实际上也是JSON文本,修改其数据即可使物品或实体的名字带有格式。

进度的名称和描述也是使用了JSON文本,它使用了可翻译元件。如果修改你的游戏语言,进度的名称和描述也将随之改变,这就是由于它是由JSON文本定义了可翻译元件,然后对应到游戏资源文件相应语言的相应内容。通过修改JSON文本,我们也可以让告示牌、物品或实体的名称、书的内容也能够随游戏语言而变化。

可见,JSON文本在游戏内非常普遍。要用命令修改实体的名称、告示牌或书的内容,或者设置记分板项或boss栏的名称,必须要有一点JSON文本的知识。

那么怎么修改一个物品或实体的JSON,或者显示一个JSON文本呢?你将从下面的内容中得到答案。

简单的实例

纯文本

纯文本字符串可以说是最简单、最基础的JSON文本了。将文本内容两段加上双引号(注意是英文的半角双引号),即可形成一个字符串:

"欢迎加入Minecraft"

它就是单个的一个字符串

对象是最基础的带有格式的文本,几乎所有的格式、交互等都是在这个JSON文本对象中设置的:

{
  "text": "欢迎加入Minecraft"
}

上面两个实例的效果都是如下:

欢迎加入Minecraft

一般地,如果你在告示牌输入文字,或者给物品、实体命名,那么这些文字一般都会是纯文本,从JSON的角度讲,它是一个字符串,或一个简单的对象。

File:Nameed Johnny.png

所有的卫道士都命名为了Johnny,它们将四处杀戮。

我们知道,在Minecraft内,所有被命名为Johnny的卫道士都会变成“杀人狂魔”,这是一个彩蛋。通常,我们都会通过铁砧命名牌命名为Johnny,然后再用命名牌将卫道士命名为Johnny,这样它就可以开始癫狂了;或者,在创造模式,可以通过铁砧卫道士刷怪蛋命名为Johnny,它生成的所有卫道士将会都是被命名为Johnny的。

如何通过命令将所有的卫道士都命名为Johnny呢?可以使用如下命令/execute as @e[type=vindicator] run data merge entity @s {CustomName:"\"Johnny\""},注意仅限不低于1.13的版本。

此外,从1.14开始,还有更简洁的写法,我们会在后面进行深入讨论。

关于如何通过命令来修改JSON文本,我们在后面会有详细的介绍。

文字的颜色

File:Tellraw text.png

使用/tellraw命令显示此JSON文本的效果。

你可以通过一个对象对一段文字渲染格式。在这个对象中,"text"的值为文字的内容,而"color"的值为颜色名称。比如下面的实例会将“欢迎加入Minecraft”渲染为深红色:

{
  "text": "欢迎加入Minecraft",
  "color": "dark_red"
}

效果:

欢迎加入Minecraft

你可以通过/tellraw命令来展示这段红色的文字:

/tellraw @a {"text":"欢迎加入Minecraft","color":"dark_red"}

可用的颜色名称

下表摘录于样式代码#颜色代码。在JSON文本中,作为"color"的值的颜色名称是下表中的“技术性名称”。前景色就是文字显示的颜色,背景色则是文字阴影的颜色(一般只有在聊天框内或者显示为标题内容时才会显示文字阴影)。表中的R、G、B和十二进制表示法,如果看不懂的话可以不用了解。

File:Tellraw text part.png

上面那个图片截取的部分。观察此文字的前景色背景色

样式代码 颜色中文名 技术性名称 前景色 背景色
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": "加粗的文字",
  "bold": true
}

列表:不同的文字不同的格式

我们已经介绍了字符串和对象,对象可以设置文本的格式,但它会将所有的文本设置为同一个格式。如何将不同的文本设置为不同的格式呢?

可以列表,来实现对不同的文字设置不同的格式。列表中的每个元素实际上也是一个JSON文本(可以说是递归),也就是说可以是字符串、组合或者一个列表。

[
  {
    "text": "欢迎你加入",
    "color": "dark_red"
  },
  {
    "text": "Minecraft",
    "color": "blue"
  }
]

效果:

欢迎加入Minecraft

(本教程未写完,后续会继续完善)

Advertisement