原始JSON文字是一種對顯示的文字加入修改的方法——其可以是改變文字顏色或是根據用户的區域設定顯示其地區的文字。
在基岩版中,原始JSON文字可以作用於/tellraw
的內容、/titleraw
的標題、書和羽毛筆的文字(題目和作者除外)以及指示牌的文字。
原始文字格式[]
基岩版的原始文字格式是一個支援以下元素(大部分可選)的JSON對象。
- 根標籤。
- rawtext:含有所有文字對象的列表。
- 基礎聊天對象。
- text:在文字中直接出現的原始文字的字串。\n用於換行(回車)。如果文字中有translate,則text的內容會被translate覆蓋。
- selector:在1.16.100.55中加入了selector的組件,可以在命令中輸出實體的名稱,如"@a" "@p" 會被轉換。(如
/tellraw @a { "rawtext" : [ { "selector" : "@s" } ] }
會向全體玩家打印執行者玩家的名字) - translate:使用玩家所選擇的語言顯示的翻譯識別符。此識別符與在assets檔案或紋理包的lang檔案中所發現的識別符相同。
- with:translate使用的聊天字串參數的列表。參數支援["string", ...]或{rawtext}。
- 此參數是與目前語言中使用的參數按順序所對應的文字(例如,列表中的第一個元素對應於translate中的「%%1」)。
- score:顯示所選目標在所選計分項的目前分數。 如果所選目標或所選計分項不存在,或者所選目標在所選計分項上沒有分數,則不顯示任何內容。
- name:選定要顯示分數的目標。可以是@p之類的目標選擇器或假名。如果為目標選擇器,則必須保證不會選擇多個實體。如果為
*
,則會顯示閱讀者自己的分數(例如,/tellraw @a {"rawtext":[{"score":{"name":"*","objective":"obj"}}]}
會向每個線上玩家顯示他們自己在「obj」計分項的分數)。 - objective:選定要顯示分數的目標所在計分項的名稱。
- value:可選。如果存在此值,則無論分數是多少,都將使用此值。
- name:選定要顯示分數的目標。可以是@p之類的目標選擇器或假名。如果為目標選擇器,則必須保證不會選擇多個實體。如果為
- 基礎聊天對象。
- rawtext:含有所有文字對象的列表。
基礎原始文字示例:
/tellraw @a { "rawtext" : [ { "text" : "Hello world" } ] }
這將向所有玩家發送一條訊息「Hello world」。然而,這是對於英語而言的,請參閱#Translate操作以知道如何使用語言的本地化。
組件需要包裹在「{ }」內(如 { "text" : "Hello world" }
)。且組件名和值需要用「 」括起(如 "text"
,"Hello world"
),組件的賦值需要使用「:」進行(如 "text" : "Hello world"
),每個組件都要在上級「[ ]」中。
追加用法[]
原始文字接受一批文字對象。列表中的每一個對象都會加入到之前的對象中,例如:
/tellraw @a { "rawtext" : [ { "text" : "Hello" }, { "text" : "World" } ] }
用於組合兩種不同語言的文字或給每個字元加上不同的顏色等。
Translate[]
translate允許使用者使用其他語言。如果其和text一起存在,其會覆蓋text。translate提供的字串是語言檔案中字串的名稱。例如,原版Minecraft中,「commands.op.success」是當玩家使用/op
成功時顯示的字串。
/tellraw @a { "rawtext" : [ { "translate" : "commands.op.success" } ] }
這將向所有玩家顯示「已將 %s 設為管理員」。請注意,由於在指定了translate的情況下忽略了text,下面的示例將輸出相同的文字:
/tellraw @a { "rawtext" : [ { "text":"Hello World", "translate":"commands.op.success" } ] }
With[]
在上面的translate示例中,意見回饋訊息為「已將 %s 設為管理員」。如果要顯示名稱或其他文字而不是%s,還需要指定「with」。值得注意的是,「with」只與「translate」一起使用,其參數可以使用使用列表類型的[]
或者Rawtext{}
。例如:
/tellraw @a { "rawtext" : [ { "translate" : "commands.op.success", "with" : [ "Steve" ] } ] }
將向所有玩家顯示「已將 Steve 設為管理員」。
%%s[]
可以在「translate」中直接使用「%%s」,而不需要使用本地檔案中相應的字串。例如:
/tellraw @a { "rawtext": [ { "translate" : "Hello %%s", "with": [ "Steve" ] } ] }
這將向所有玩家顯示「Hello Steve」。
多個%%s[]
%%s可多次使用,其將會按照「with」中的順序填寫。若%%s的個數多與「with」中的個數,多出的部分顯示為空。
/tellraw @a { "rawtext": [ { "translate" : "Hello %%s and %%s", "with": [ "Steve", "Alex" ] } ] }
這將向所有玩家顯示「Hello Steve and Alex」。
使用%%#變更順序[]
%%s的順序可以變更,方法是使用%%#,並替換#為其在「with」中的排列數字。若「with」中沒有指定此位置,則顯示為空。例如,要在上面的示例中交換Steve和Alex的位置,輸入命令:
/tellraw @a { "rawtext" : [ {"translate" : "Hello %%2 and %%1", "with": [ "Steve", "Alex"] } ] }
這將向所有玩家顯示「Hello Alex and Steve」。
同時使用多個組件[]
組件於組件之間需要用「,」(半形逗號)隔開。
/tellraw @a { "rawtext" : [ { "selector" : "@s " },{ "text" : " 记分板obj的值是:" },{ "score" : { "name" : "@s" , "objective" : "obj"} } ] }
會打印出執行者的名字,加上文字「計分板obj的值是: 」,加上自己obj的計分板數值。
假設玩家叫Steve,obj計分板值為1234,則會輸出 "Steve 計分板obj的值是: 1234" 。
語言