第189章 ,/.

JSON文本在Java版很常用。在基岩版虽然能用的地方少了很多,但仍然很有用处。

基岩版的JSON文本主要用于指令、书与笔的文本和告示牌的文本上。由于基岩版指令的限制,我们只能在/tellraw和/titleraw两个指令中用到JSON文本。虽然能用的地方极其少,我们仍然得学习学习,就因为/tellraw这条指令极其有用。

基岩版的JSON文本的基础格式如下:

{“rawtext“:[]}

在基岩版中,每串JSON文本的最外层必然是rawtext组件。rawtext的值是JSON对象列表,也就是由多个JSON对象组成的列表。你可以把JSON对象看作是NBT中的复合标签(两者其实没多大差别),方便理解。

基岩版的JSON文本组件相比Java版要少许多。不算rawtext的话,基岩版一共只有五个组件:

\\内容组件\\

text(值:文本)

selector(值:文本)

translate(值:文本)

score(值:JSON对象,相当于NBT的复合标签)

\ranslate配套组件\\

with(值:由多个文本组成的列表)

最基础的组件还是text,用法和Java版的一模一样:

{“rawtext“:[{“text“:“Hello!“}]}

这解析后会变成:Hello!

你有没有注意到,基岩版甚至连文本颜色格式组件都被阉割了,也就是说我们无法使用color组件来修改文字颜色。既然我们无法使用color之类的组件,那么我们该如何修改文本的颜色和格式?

你是不是忘记了一个东西:§

由于基岩版可以自由使用§来修改文本的颜色和格式,因此Mojang就把color之类的文本颜色格式组件给切了。

在基岩版的JSON文本中使用§,需要注意两点:

①§必须要放在内容组件的值中,不能放在组件名等其他地方。虽然放在其他地方在命令方块中也会生效,但JSON文本就无法被游戏正确识别并输出了。

②使用§后记得要及时用§r来重置文字样式,不然会把§右边的所有文本都修改了样式。比如:

{“rawtext“:[{“text“:“§eHello!“},{“text“:“Minecraft“}]}

这将会输出:Hello!Minecraft(都是黄色)

如果是{“rawtext“:[{“text“:“§eHello!§r“},{“text“:“Minecraft“}]},则只会把“Hello!”一段变成黄色。

selector组件可以输出实体名称,其值必须填的是目标选择器。比如:

{“rawtext“:[{“selector“:“@p“}]}

这将会输出距离执行地点最近玩家的名称。假设距离执行地点最近的玩家叫做『Phigros』,那么这将会输出:Phigros

selector的使用还是很简单的。但请注意,你不能把selector当做text一样使用。原因很简单:其值必须是个目标选择器。

如果你把selector当做text一样用,比如这样子填写:

{“rawtext“:[{“selector“:“HelloMinecraft“}]}

你会惊奇地发现执行指令后,没有任何的文本输出,也没有任何的报错信息。

这是为什么呢?因为selector的值必须是个目标选择器,你这样填就相当于要输出玩家HelloMinecraft的名称,而游戏中又没有叫做HelloMinecraft的玩家,自然就不会输出。但如果真的有一个叫做HelloMinecraft的玩家且在线,就会正常输出『HelloMinecraft』。

translate组件是这五个组件中最难的一个,因为它有些涉及到Minecraft的模组、资源包开发。为何这么说?因为translate组件可以让一段文字以目标玩家的语言输出。