🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 告示牌 `告示牌`支持使用JSON文本定义上面的文字,并且有三种指令可以自定义告示牌,分别为`give`命令(获得物品形式的`告示牌`),`setblock`命令(直接放置),和`blockdata`命令(修改已有`告示牌`) 格式分别为: ``` /give @p sign 1 0 {BlockEntityTag:{NBT}} ``` ``` /setblock [x] [y] [z] minecraft:standing_sign/minecraft:wall_sign [数据值] [旧方块处理方式] {NBT} ``` ``` /blockdata [x] [y] [z] {NBT} ``` 其中`告示牌`的`NBT`格式如下: ``` {Text1:"{JSON文本}",Text2:"{JSON文本}",Text3:"{JSON文本}",Text4:"{JSON文本}"} ``` `Text1/2/3/4`分别代表牌子的每一行的内容(在使用`entitydata`命令时,如果相关行内容不需编辑,可以不写相关行数的NBT) 请注意,由于`Text1/2/3/4`本身不是JSON文本,而是`NBT`,所以无需使用双引号包围,并且由于JSON文本被双引号包围,请注意里面引号需要转义 例子: ``` /blockdata ~ ~1 ~ {Text1:"{\"text\":\"Hello World\",\"bold\":true,\"color\":\"dark_green\"}",Text2:"{\"selector\":\"@p\"}"} ``` ![N6](https://box.kancloud.cn/dc75191812de340dc696eb70fda56c8c_409x205.png) 如需在同一行内使用多于一个JSON文本,请使用`JSON array`或`extra` 例子: ``` /blockdata ~ ~1 ~ {Text1:"[\"\",{\"text\":\"Hello\",\"color\":\"green\"},{\"text\":\" World\",\"color\":\"red\"}]"} ``` ![52](https://box.kancloud.cn/28978ccac1f63fa8a90e32df37d3aae4_400x200.png) --- 最后是CE在牌子的应用 牌子的每一行都可以设置一个CE,即一个牌子最多可设置4个CE 但每一行的CE只能设置在主项,设置在分项的CE是无效的 例如: ``` /blockdata ~ ~1 ~ {Text1:"{\"text\":\"say 1\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/say 1\"}}",Text2:"{\"text\":\"say 2\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/say 2\"}}"} ``` ![53](https://box.kancloud.cn/039f08d29f1f8613d63b3ec8a4533182_399x200.png) ![54](https://box.kancloud.cn/b874e021669917180520597bb633c1ed_648x36.png) 值得注意的事项是 玩家右键点击牌子时执行命令,命令的执行坐标以牌子所处位置为起始点 (情况类似与/execute [点击者] [告示牌坐标] [命令]) - 所以当涉及到选择符的命令,例如**/say @e[c=2]** ,这个命令将会以牌子为选择实体的起始点,这个情况下会选中距离牌子最近的两个实体 - 而同样的,使用了相对坐标,例如**/setblock ~ ~ ~ minecraft:stone**,则会以牌子作为相对坐标的起始点,这个情况下会将牌子替换为石头 - **特别注意**,`c=1`这个选择器参数有特别处理,该参数无论如何都会选中点击者,如**/say @e[c=1]** 必定会选中点击者,不管中间有多少实体距离`告示牌`比点击者更近 **亦请注意**,于1.12以后的版本,由于NBT语法分析器的改动,若需要在牌子中使用`unicode-万国码`,即`\u`,需要对其反斜杠进行转义,即写成`\\u`的形式 # 成书 成书亦支持使用JSON文本定义书本的内容,获得方式只有一个,使用`/give`命令 格式为: ``` /give @p written_book [数量] 0 {pages:["{JSON文本}","{JSON文本}",......],title:"[成书名称]",author:"[作者]"} ``` `数量`,`成书名称`和`作者`不多作解释,而!(list)[list]`pages`这个NBT 里面的每一个JSON文本都代表一页的内容 例如: ``` /give @p written_book 1 0 {pages:["{\"text\":\"page 1\"}","{\"text\":\"page 2\"}"],title:"Book",author:"SYL"} ``` ![56](https://box.kancloud.cn/b8ef9b89dbd7927c48d3bd56b6f3ef0c_292x360.png) ![57](https://box.kancloud.cn/2b32c74fe0f4c908c33d23acf2008799_292x360.png) --- 如需在一页内使用多个JSON文本,自然需要使用`JSON array` 并且`成书`也支援CE和HE 例如: ``` /give @p written_book 1 0 {pages:["[\"\",{\"text\":\"say hi\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/say hi\"}},{\"text\":\"\nhello\",\"bold\":true,\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"world\"}}]"],title:"Book",author:"SYL"} ``` 分解以上命令说明 - 主项为`\"\"`,即空白的主项 - 第二项为"say hi",点击后让玩家执行`/say hi` - 第三项为"\nhello",悬浮在文字上显示`world` - 需要注意的是,第三项内容前有`\n`换行符,所以它将在第二行显示 最终效果为: ![58](https://box.kancloud.cn/aa18d515d8d2e4204d68e34701a19e90_292x360.png) 点击say hi ![59](https://box.kancloud.cn/8975cbf4e3ca1078f2d18f76ee67fd1a_648x19.png) **请注意**,于1.12以后的版本,由于NBT语法分析器的改动,若需要在牌子中使用`unicode-万国码`或`换行符`,即`\u`和`\n`,需要对其反斜杠进行转义,即写成`\\u`以及`\\n`的形式 以上命令若需在1.12后使用,请使用以下版本: ``` /give @p written_book 1 0 {pages:["[\"\",{\"text\":\"say hi\",\"underlined\":true,\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/say hi\"}},{\"text\":\"\\nhello\",\"bold\":true,\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"world\"}}]"],title:"Book",author:"SYL"} ```