《Minecraft指令手册》

第17章Java版JSON文本初识

上一章 封面 下一章

在上一章提到了JSON文本。JSON文本在学习指令前期估计只有/title和/tellraw会用到,所以我们这边也就先认识一下如何使用JSON文本显示文本内容。

JSON,全称JavaScript Object Notation,是一种文本格式。在Minecraft中,Java版和基岩版的JSON略有差别,但大体都相同。本章主要讲的是Java版的JSON使用,因为在基岩版JSON使用程度不高。

JSON有三种形态,最基础的是以英文括号(““)包裹的形态:

““

这种形态即字符串形态,可以直接显示文本。比如:

“Hello Minecraft“

(注意,平台会自动将英文半角括号改为中文全角括号)

这种形态过于简单,所以我们要研究一下第二种形态:大括号({})包裹形态:

{}

这种形态即JSON对象形态。要显示内容,就得向对象里面添加“组件”。

组件有三类,一类是聊天组件,一个JSON就是一个聊天组件(比如上面的“Hello Minecraft“)。另一类是内容组件,聊天组件要生效就必须要有一个内容组件。还有一类是其他组件,用于对JSON显示的文本内容进行更多的修饰。

内容组件最基础的是“text”,即文本。

使用text纯文本内容组件,可以显示一串最简单的JSON文本,比如:

{“text“:“Hello Minecraft“}

不难发现,一个组件(除JSON本身的聊天组件)由组件名和组件内容组成。组件名需要使用英文半角括号包裹,并且对大小写敏感,比如上面这段JSON对象你就不能写成:

{“TEXT“:“Hello Minecraft“}

那样子会报错。

组件内容即是该组件具体的值,值的格式有很多种,这儿就不展开讲了,就是注意数值一般不需要括号,文本内容一般需要括号。

上面显示出来的Hello Minecraft是最基础的白色。如果要更改文字颜色,那么就需要使用lor组件(JSON用不了分节符)。

lor的值是文本类型,支持17种颜色ID:

black(黑)、dark_blue(深蓝色)、dark_green(深绿色)、dark_aqua(深湖蓝色)、dark_red(深红)、dark_purple(深紫)、gold(金色)、gray(灰色)、dark_gray(深灰色)、blue(蓝色)、green(绿色)、aqua(湖蓝色)、red(红色)、light_purple(亮紫色)、yellow(黄色)、white(白色)和reset(取消颜色效果使用默认颜色,一般使用于子JSON对象中)

比如:

{“text“:“Hello Minecraft“,“lor“:“light_purple“}

就可以显示一个浅紫色的“Hello Minecraft”。不难发现,同级多个组件是使用英文半角逗号进行区分。

如果你认为这些颜色还不够,你甚至可以使用HTML的十六进制颜色格式来搞到更多的颜色。比如红色的十六位颜色编码就是:#ff0000,用到JSON里就是:

{“text“:“Hello Minecraft“,“lor“:“#ff0000“}

关于HTML十六位颜色编码的具体内容自己上百度查,这儿就不多讲了。

我们知道分节符§不仅可以更改文本颜色,还可以为文本添加更多的格式。那么在JSON中,我们该如何为一串JSON文本添加格式呢?

§能添加五种文本格式,对应到JSON中即是:

§k 乱码对应obfuscated模糊文本

§l 加粗对应bold粗体

§m 删除线对应strikethrough删除线

§n 下划线对应underlined下划线

§o 斜体对应italic斜体

上面的五个组件其值类型均为布尔值,也就是true(开启)和false(关闭)。

在JSON中,布尔值和gamerule一样,是使用true和false,并且并不需要添加括号。

比如要为Hallo Minecraft添加斜体,你就需要这样子:

{“text“:“Hello Minecraft“,“italic“:true}

现在我们已经了解了Java版JSON的基本使用方法,基本上日常使用是没有什么问题了。

不对,还有一个问题!如果要在一串JSON文本里前面使用一种颜色或文本格式,后面使用另一种颜色或文本格式,那该怎么办?

确实,使用大括号包裹的JSON文本,每个组件只能包含一个,并且并没有先后顺序。

这时候我们就要启用第三种形态:中括号(

)形态:

稍微了解过C++、Java的人,应该知道在编程语言中,中括号的值一般指的是数组(当然也有大括号数组的),在Minecraft中也是一样。这种JSON第三形态,就是JSON数组形态。

什么是数组,顾名思义,就是将各个数值合并在一起的组,一般这些数值都是同一类的数值,比如都是小数,都是整数,都是非零自然数。那么JSON数组,就是将各个JSON对象或字符串(即第一第二形态)组合在一起形成的组合,并用中括号包起来。

JSON数组是考虑前后的,也就是说,我们可以通过JSON数组来实现一个JSON文本有多个颜色。比如:

[{“text“:“Hello“,“lor“:“blue“},{“text“:“Minecraft“,“lor“:“black“},“Launcher“

这样子就可以实现Hello是蓝色,Minecraft是黑色,Launcher是蓝色。

等等,为什么Launcher是蓝色而不是白色?

因为在一个JSON数组中,数组前面的JSON对象定义了文本颜色,这个颜色就会传递下去,就算中途有其他对象使用了lor改变了其他颜色,也只是作用在这个对象内,下一个对象还是使用这个颜色。文本格式也是一样的道理。

现在就没什么问题了吧?

需要注意一下,版本之前的JSON,组件名不需要额外加括号。

Java JSON历史:

——加入了/tellraw,第一次有指令支持了JSON

1.8——加入了使用JSON的/title。告示牌和成书也开始使用JSON文本。

——自定义名称使用了JSON文本。加入了name参数使用JSON的/bossbar指令。

——物品描述标签支持JSON文本。

——lor可以使用HTML十六位颜色码来更改文本颜色(需要注意)。

阅读Minecraft指令手册最新章节 请关注热血小说网(www.oaksh.cn)

上一章 目录 下一章 存书架

其他热门小说

Minecraft指令手册