💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# JSON文本类型 最基础的JSON文本类型可被分为4类: + text-文本 + selector-目标选择器 + score-分数 + translate-翻译 值得注意的是,这4类JSON类型在单个对象(同一段文字)中只能设置一个 不然会互相覆盖,只有一个能生效(而且我们未必能够肯定哪个能生效) 关于同时使用多个文本类型的情况,我们会在之后的章节进行讨论 ## text-文本 text可谓是游戏内最基本的类型 功能十分简单,显示你指定的文字 最基本的格式为: ``` "text":"[文本内容]" ``` 例如: ``` /tellraw @a {"text":"Hello World"} ``` ![1](https://box.kancloud.cn/1b5b72c53fb3af46db42fe8a2d1d613e_648x18.png) 顺带一提,在内容中插入`\n`可以让文字换行(只限于`成书`和`tellraw`) 例如: ``` /tellraw @a {"text":"Hello\nWorld"} ``` ![2](https://box.kancloud.cn/b6d829a5fdaa5f35c98c2c18690e93a7_648x36.png) ## selector-目标选择器 selector的作用如同在命令中使用的目标选择器(见章节2.2),格式一致 基本格式为 ``` "selector":"[目标选择器]" ``` 选择符就如平时使用一般输入就可以了 例如: ``` /tellraw @a {"selector":"@p"} ``` ![4](https://box.kancloud.cn/7f0c24f74bfbb84b40dd565910bad086_648x19.png) 如果世界内只有我和一只名为GGG的猪: ``` /tellraw @a {"selector":"@e"} ``` ![5](https://box.kancloud.cn/913694f1b49a0fcfeb59655c9e53d66a_648x19.png) 值得注意的是,选择器参数(即跟随在选择符后的[]部分)也可使用: ``` /tellraw @a {"selector":"@e[type=Pig]"} ``` ![6](https://box.kancloud.cn/7d9993ab35246442ba90a5ac9b306496_648x18.png) > 注意: > JSON文本里的选择器,包括接下来的score中name使用的选择器,大部分都是以命令执行位置作为原点。 > 如`tellraw`及`title`命令以命令执行点为原点,书本以打开的玩家的位置为原点,只有牌子是以牌子坐标为原点 ## score-分数 score用于显示**特定目标的特定分数**,需要对记分板的知识(详见之后的章节)。 格式为: ``` "score":{"name":"[对象名]","objective":"[变量名]"} ``` **对象名**即为需要选中的对象,如指定玩家名称 **分数名**就是来自哪一个记分板变量 例如我们创建了一个名为`test`的记分板变量,里面有两个玩家: ![7](https://box.kancloud.cn/2a372f9ca84525b74a87df166a211aa3_124x56.png) 输入: ``` /tellraw @a {"score":{"name":"Tester","objective":"test"}} ``` ![9](https://box.kancloud.cn/586aaea0263868e324ccae4f6ff239bc_648x18.png) `name`支持选择符(但不能为多选,如`@a`),我们放置了一个命令方块,并让SYL接近他 输入: ``` /tellraw @a {"score":{"name":"@p","objective":"test"}} ``` ![8](https://box.kancloud.cn/fbbce3fd32fff9f551ed6824a0928764_648x18.png) `score`在`tellraw`命令中还有一个特殊功能,`name`部分输入`*`的话 那么观察者自己将会作为对象,显示观察者的分数(这在做地图的时候十分有用) 例如: ``` /tellraw @a {"score":{"name":"*","objective":"test"}} ``` SYL的视角: ![8](https://box.kancloud.cn/fbbce3fd32fff9f551ed6824a0928764_648x18.png) Tester的视角: ![9](https://box.kancloud.cn/586aaea0263868e324ccae4f6ff239bc_648x18.png) ### translate-翻译文件(不常用) translate其实就是在文本JSON里引用翻译文件的文字,格式为: ``` "translate":"翻译识别器" ``` 如 ``` "translate":"chat.link.warning" ``` 然而翻译文件的文字可以有参数(那些`%s`),这个时候我们就可以用with来传入参数(顺序对应翻译文件内的`%s`),格式为: ``` "with":[参数字串列表] ``` 如 ``` 假设翻译文件中有一行为 custom.a=第一个参数: %s,第二个参数: %s JSON文本为 {"translate":"custom.a","with":["a","b"]} 输出则为 第一个参数: a,第二个参数: b ``` --- translate除了能够用作翻译以外,亦能用作检查资源包,如 ``` {"translate":"custom.1","clickEvent":{"action":"run_command","value":"/say 用了自定义的材质包"}} ``` 原版很明显是没有`custom.1`这个翻译识别器的,故此没加载资源包的用户看到的就是一片空白,也没法点击。而地图的自定义资源包则能够添加此翻译识别器,如 ``` custom.1=请点击此段文字 ``` 然后玩家就能点击这段文字并触发命令了。 ----- 知道了如何定义内容后,我们就得为我们的内容搞点新意思了。 接下来将会介绍如何为文本对象加入颜色、粗体等样式