告示牌

告示牌支持使用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本身不是文本对象,而是NBT,所以无需使用双引号包围,并且由于JSON文本被双引号包围,请注意里面引号需要转义。

例子:

blockdata ~ ~1 ~ {Text1:"{\"text\":\"Hello World\",\"bold\":true,\"color\":\"dark_green\"}",Text2:"{\"selector\":\"@p\"}"}

N6

如需在同一行内使用多于一个文本对象,请使用JSON arrayextra
例子:

blockdata ~ ~1 ~ {Text1:"[\"\",{\"text\":\"Hello\",\"color\":\"green\"},{\"text\":\" World\",\"color\":\"red\"}]"}

52


最后是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

54

值得注意的事项是
玩家右键点击牌子时执行命令,命令的执行坐标以牌子所处位置为起始点 (情况类似与/execute <点击者> <告示牌坐标> <命令>

  • 所以当涉及到选择符的命令,例如/say @e[c=2] ,这个命令将会以牌子为选择实体的起始点,这个情况下会选中距离牌子最近的两个实体

  • 而同样的,使用了相对坐标,例如/setblock ~ ~ ~ minecraft:stone,则会以牌子作为相对坐标的起始点,这个情况下会将牌子替换为石头

  • 特别注意c=1这个选择器参数有特别处理,该参数无论如何都会选中点击者,如/say @e[c=1] 必定会选中点击者,不管中间有多少实体距离告示牌比点击者更近

亦请注意,于1.12以后的版本,由于NBT语法分析器的改动,若需要在牌子中使用unicode-万国码,即\u,需要对其反斜杠进行转义,即写成\\u的形式

如果是Setblock的话,需要指明Text1-Text4的JSON。
不过,如果那行是空的话,可以写null
例子: Text4:null

成书

成书亦支持使用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

57


如需在一页内使用多个文本对象,自然需要使用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

点击say hi
59

请注意,于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"}

results matching ""

    No results matching ""