首页 男生 游戏竞技 Minecraft指令手册

第一百二十七章 JSON剩下の一些东西

Minecraft指令手册 你好MC 1627 2024-07-09 15:29

  我们知道,在JSON里,对象有分为父对象和子对象,第一个对象肯定是接下来的对象的父对象。

  只不过这种父对象子对象一般只会在[]这种JSON列表里才会遇到,{}里一般用不到。

  如果{}里也要分父对象和子对象呢?那就要使用“extra”元素了,这位元兄已经在之前出过很多次场了。

  extra是这么用的:

  {“内容元素“:“一些内容“,“extra“:[{},{}......]}

  没错,使用extra,就可以在一个对象里再放入许许多多的对象。只不过这时候你可能会问:唉那extra里面的这些对象的父对象到底是哪个对象呢?

  很简单,我们可以拿JSON的列表说话:

  [““,{“内容元素“:“一些内容“,“extra“:[{},{}......]}]

  在这里,最外层的列表的父对象是第一个,第二个带extra的是子对象。

  子对象的孩子,也就是extra,都是子对象的子对象,也就是孙子对象。

  所以extra里面的对象全部都是孙子对象,而它们的父对象,就是extra本身元素所待的对象。

  懂了吧?所以一个对象里的extra里的所有对象,其格式会照搬extra本身所在的对象。

  只不过请注意一点:在你打指令之前,请你先注意一下extra本身所在的对象有没有内容元素,extra本身并不是内容元素!

  这就是extra的用法。

  但这并不代表本章结束了,你还记得第一百一十九章的这串指令吗:

  /team modify 称号生存带师 br /refix [{“text“:“[lv.“,“color“:“red“},{“score“:{“name“:“*“,“objective“:“等级“}},{“text“:“]“,“color“:“red“},{“text“:“[生存带师]“,“color“:“red“}]

  如果你真的去试了,你就会发现,实际上是这样的:

  <[lv.][生存带师]lbwnb>谁有铁啊!!!我真的很缺铁哎!!!>

  这是怎么回事呢?

  因为score出错了。

  score显示的分数只能是一个玩家的,所以score的name目标选择器不可以选中多个目标,或者是指定名称。

  但是我们上面使用了*,这到底是干啥的呢?

  你如果没跳过第一百二十二章的话,你就应该知道,*号的作用当时作者描述的是:显示自己的分数。

  如果你语文比较好,注意力和观察力都是中偏高的,你就会发现上面这段描述有些问题:

  显示谁自己的分数?

  肯定是显示读者自己的分数。所以,*号并不能拥有多个读者,这样子它才不会逻辑混乱最后劳资不干了。

  这时候问题就来了:怎样确定一个文本有没有多个读者呢?

  我们常用的tellraw,格式相信你也知道,是这样的:

  /tellraw <目标选择器><JSON文本>

  在执行指令的时候,我们的游戏会先执行目标选择器,寻找符合的目标。

  然后游戏会将JSON文本作为聊天消息分发给这些目标,然后再解析。这样子每个目标读到的JSON文本实际上都是独立的,自然就不会出现“一串文本有多个读者”的情况。

  但如果是我们的队伍前后缀呢?可以发现设置的时候是没有目标选择器的,所以游戏并不会分发,而是直接公示,结果这就导致一串JSON文本会有很多读者,自然而然score就发挥不了作用了。

  嗯,JSON的内容基本上就到这了,JSON的NBT我们放到下一卷讲NBT时再来讲。

目录
设置
手机
书架
书页
评论