这就是translate组件一般的用法。除了这个用法外,translate还能被当做text组件一样用,且比text组件多出了一个没啥用的功能:自定义特殊部分
特殊部分有两种自定义的格式:
%%s
%%#(#为列表内元素从左到右排列的序号)
先来说说%%s。%%s的用法和上面的%1$s、%2$s之类的一模一样,都是从左到右一一对应。比如:
{“rawtext“:[{“translate“:“你好%%s!这里有一些关于%%s的说明。“,“with“:[“新手“,“空岛战争“]}]}
这会输出:你好新手!这里有一些关于空岛战争的说明。
本小章还未完,请点击下一页继续阅读后面精彩内容!
%%#的功能和%%s比较不一样。%%#的#实际上是列表内各个元素从左到右的排列数字。比如%%1在上面的列表中就代表着『新手』。也就是说,如果这样子填写:
{“rawtext“:[{“translate“:“你好%%1!这里有一些关于%%1的说明。“,“with“:[“新手“,“空岛战争“]}]}
最终会输出:你好新手!这里有一些关于新手的说明。
上面的例子中,%%s和%%#都是独立使用。如果两者一起使用会发生什么呢?
来看看下面这个例子:
{“rawtext“:[{“translate“:“欢迎来到%%s,%%1!您今日的%%s还未领取!“,“with“:[“EaseCation“,“每日签到奖励“,“一个普通的路人“]}]}
猜一猜,最终这会输出什么?
你是不是以为,最终这会输出:欢迎来到EaseCation,EaseCation!您今日的每日签到奖励还未领取!
如果你这样想,就错了。实际上输出的是:欢迎来到EaseCation,一个普通的路人!您今日的每日签到奖励还未领取!
这是怎么一回事?当%%s和%%#一起使用的时候,游戏会优先把%%s替换掉。按照从左到右的原则,第一个%%s被替换成了『EaseCation』,第二个%%s被替换成了『每日签到奖励』。然后游戏才会替换%%#。这时候神奇的地方来了,由于%%s使用过的列表元素%%#就不能再使用,因此%%#的顺序得从第三个元素开始算起,最终导致%%1被替换成了『一个普通的路人』。
这就是translate和其配套with组件的全部内容,你学会了吗?
最后的score组件简单且有用,它可以显示记分板上的分数。
score的值是JSON对象,你可以把它当做是复合标签。对象内有三个子组件:
name——选择正在被记分板追踪的目标,显示ta的分数,值为文本。必须填写目标选择器或玩家名(假的也可以)。
objective——计分项名称。值为文本。
value[可选]——值为文本。如果指定了该项,不管真实的分数是多少,都会显示为该项的值。
(注:作者实验时发现value组件没用,可能在目前的基岩版最新版中已经删去了该标签。作者实验的版本是基岩版1.18.2)
举个例子。假设玩家Liben在计分项Primogems上的分数为2431,我们可以这样输出他的分数:
{“rawtext“:[{“score“:{“name“:“Liben“,“objective“:“Primogems“}}]}
这将会输出:2431
需要注意,当name选定的目标为多个时,游戏将会按照目标选择器排列的顺序输出每个目标的分数。
现在你会使用基岩版的JSON文本了吗?注意,一个JSON对象内不能有多个内容组件。当一个对象内有多个内容组件时,权重高的组件的内容将会覆盖权重低的组件。四个内容组件的权重如下:
score (注:该权重为作者实验得出)
这就是基岩版JSON文本的全部内容了。