- 致编者:请牢记我们的域名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的接口内容以供参考。