- 致编者:请牢记我们的域名wiki.mcbe-dev.net!
- 致编者:欢迎加入本Wiki的官方交流QQ群或Discord服务器!
- 基岩版1.19.31现已发布!(了解更多)
- Inner Core现已支持Xbox模组联机!(了解更多)
- 如果您是第一次来到本Wiki,欢迎注册一个账户
- 点击顶部的“编辑”或“编辑源代码”按钮即可编辑当前页面
- 请知悉:在不登录时也可以编辑和新建页面,但是您当前的IP地址会记录在编辑历史中
手冊:Rawtext
引言[編輯]
Rawtext(原始文字) 是以json
格式編寫的基本文字,也被稱為原始JSON。
使用原始文字,您可以變更聊天訊息(tellraw)、標題(titleraw)、書籍、物品名稱、實體名稱、世界名稱、記分牌顯示以及透過SAPI顯示的文字等位置的文字外觀。
格式[編輯]
{"rawtext":[{"text":"Hello World"}]}
在上面的例子中,rawtext
對應的是一個列表,其中可以裝很多節點Node
。
節點中帶有一些標籤(如text
,translate
,with
等)來完成一些轉義操作。根據節點的順序來排列文字順序,如:
// 示例(下面内容使用了格式化)
{
"rawtext":
[
{
"text": "Hello, "
},
{
"text": "world!"
}
]
}
輸出的結果是:
Hello, world!
標籤[編輯]
text[編輯]
text
標籤是最基本的標籤,直接用來表示文字。
translate[編輯]
翻譯內容是rawtext
最常見的需要。translate
可以用作文字的翻譯,它還有一個可選的標籤是with
:
{
"translate": "wiki.example_translation"
}
translate
首先在翻譯檔案.lang中搜尋翻譯,若不可再嘗試使用套用翻譯的方式:
{
"translate": "Hello, %%s",
"with": [
"world"
]
}
這也導致如果像wiki.example_translation
的內容如果找不到翻譯則會直接傳回為文字而不報錯。
with[編輯]
with
用來補充未知的資料,類似於C中的printf
但與其和.lang都不同的是,其中的%
需要連用兩個%
來表示。
%%1
顯示第一個參數。%%2
則是第2個以此類推。%%s
則是無序的。這些可以參考.lang。
如果with
提供的資料不全,則不會顯示。
with
後面不僅可以跟文字也可以跟rawtext
:
{
"translate": "wiki.example_translation",
"with": {
"rawtext": [
{
"text": "value1"
},
{
"text": "value2"
}
]
}
}
score[編輯]
score
可以用來取得計分板的資料,它需要兩個屬性name
和objective
用於表示使用者名稱和計分板ID:
{
"score": {
"name": "Wiki",
"objective": "wiki_example_objective"
}
}
// 假设有记分板wiki_example_objective其中有用户Wiki
name
也可以使用選擇器:
{
"score": {
"name": "@p",
"objective": "wiki_example_objective"
}
}
可以嘗試下面的這段指令:
/tellraw @s {"rawtext": [{"text": "我的Wiki记分板的积分是 "}, {"score":{"name": "@s","objective": "wiki_example_objective"}}]}
selector[編輯]
selector
,顧名思義,它可以用來取得選擇器對應的名稱。
{
"selector": "@p"
}
轉義[編輯]
除了使用%%
還有其他的特殊轉義符(這些內容在.lang
檔案中也可使用)。
§
這個特殊的符號可以進行寫特別的轉義操作(比如說變色或者斜體)(它們在其他文字區域也可使用),具體內容參見§。
另外比較重要的便是反斜槓\
:
格式 | Unicode | 效果 |
---|---|---|
\u[Unicode] | - | 表示轉義成Unicode字元 |
\n | \u000a | 換行 |
\" 和 \' | \u0022 和 \u0027 | 用於在JSON文字中表示雙引號或單引號 |
SAPI[編輯]
Rawtext
在SAPI中也可以使用,它用於幫助SAPI呼叫在地化翻譯等操作。
SAPI中提供了兩個介面(Interface
,TypeScript中的概念),即RawText
和RawMessage
。
RawText
與前面介紹的Rawtext
基本一致,RawMessage
則是rawtext
下面的各個節點Node
。在JS中可以透過類JSON的表達法來使用這兩個介面:
import {
world
} from "@minecraft/server";
world.afterEvents.playerSpawn.subscribe(eventData => {
if (!eventData.initialSpawn) return;
const player = eventData.player;
player.sendMessage({
"rawtext": [
{
"translate": "xbox.signin.newaccount.welcome",
// 此处借用XBox的欢迎本地化文本
"with": [
player.name
]
}
]
});
});
上面的這段內容會讓玩家第1次生成時,收到一條歡迎訊息。
SAPI中大部分內容都可以使用RawText
和RawMessage
,上面的內容還可以使用RawMessage
來代替:
import {
world
} from "@minecraft/server";
world.afterEvents.playerSpawn.subscribe(eventData => {
if (!eventData.initialSpawn) return;
const player = eventData.player;
player.sendMessage({
"translate": "xbox.signin.newaccount.welcome",
"with": [
player.name
]
});
});
在ServerUI的標題等地方也都可以使用這兩個介面,這裡有RawMessage的介面內容以供參考。