本帖最后由 随机的nahux1 于 2022-8-10 18:01 编辑
功能:利用原始json文本中的translate组件合并字符串,其中with支持给定字符串和来源于nbt
步骤:
1、在资源包新建en_us.json并添加译文
格式:{"翻译标识符1":"译文1","翻译标识符2","译文2"...}
注1:若当前语言中没有对应的译文,游戏将在en_us.json中寻找。
注2:(引自wiki)译文可以包含应用于未知文本的变量。变量通常会以%s(显示列表中的下一个对象)或%1$s(显示列表中的第1个对象;可以将1替换为其他数字,对应列表中的第N个对象)的形式出现。显示已翻译文本时,这些变量将由提供的聊天组件列表填充。如果未给某变量提供参数,该变量将不会显示。这些变量直接在语言文件中定义,与聊天组件无关。
2、使用translate聊天组件输出合并后的字符串
格式:{"translate":"翻译标识符","with":[聊天组件1,聊天组件2,...]}
1、在资源包新建en_us.json并添加译文
格式:{"翻译标识符1":"译文1","翻译标识符2","译文2"...}
注1:若当前语言中没有对应的译文,游戏将在en_us.json中寻找。
注2:(引自wiki)译文可以包含应用于未知文本的变量。变量通常会以%s(显示列表中的下一个对象)或%1$s(显示列表中的第1个对象;可以将1替换为其他数字,对应列表中的第N个对象)的形式出现。显示已翻译文本时,这些变量将由提供的聊天组件列表填充。如果未给某变量提供参数,该变量将不会显示。这些变量直接在语言文件中定义,与聊天组件无关。
2、使用translate聊天组件输出合并后的字符串
格式:{"translate":"翻译标识符","with":[聊天组件1,聊天组件2,...]}
应用(重点):可变命令
在牌子/书/物品中解析出含有变量值的的命令,再以此修改命令方块中的命令。
举例①物品展示
原始json鼠标悬浮事件有显示物品,但物品nbt需要命令中指定
tellraw @s {"text":"文本","hoverEvent":{"action":"show_item","contents":{"id":"命名空间id","tag":"物品标签"}}}
可通过此方法实现:
en_us.json:{"showitem.command":"tellraw @s {\"text\":\"文本\",\"hoverEvent\":{\"action\":\"show_item\",\"contents\":{\"id\":\"%s\",\"tag\":\"%s\"}}}"}
在牌子中解析出含玩家信息的命令:setblock ~ ~1 ~ oak_sign{Text1:'{"translate":"showitem.command","with":[{"nbt":"SelectedItem.id","entity":"@p"},{"nbt":"SelectedItem.tag""entity":"@p"}]}'}
放置和修改命令方块:
setblock ~ ~ ~ command_block
data modify block ~ ~ ~ command set from block ~ ~1 ~ Text1
②引用变量查询列表
方法类似,使用命令方块。详见https://www.mcbbs.net/forum.php?mod=viewthread&tid=1219877
在牌子/书/物品中解析出含有变量值的的命令,再以此修改命令方块中的命令。
举例①物品展示
原始json鼠标悬浮事件有显示物品,但物品nbt需要命令中指定
tellraw @s {"text":"文本","hoverEvent":{"action":"show_item","contents":{"id":"命名空间id","tag":"物品标签"}}}
可通过此方法实现:
en_us.json:{"showitem.command":"tellraw @s {\"text\":\"文本\",\"hoverEvent\":{\"action\":\"show_item\",\"contents\":{\"id\":\"%s\",\"tag\":\"%s\"}}}"}
在牌子中解析出含玩家信息的命令:setblock ~ ~1 ~ oak_sign{Text1:'{"translate":"showitem.command","with":[{"nbt":"SelectedItem.id","entity":"@p"},{"nbt":"SelectedItem.tag""entity":"@p"}]}'}
放置和修改命令方块:
setblock ~ ~ ~ command_block
data modify block ~ ~ ~ command set from block ~ ~1 ~ Text1
②引用变量查询列表
方法类似,使用命令方块。详见https://www.mcbbs.net/forum.php?mod=viewthread&tid=1219877
注意:1、本帖所有指令未经测试,可能有错误
2、translate组件是合并文本还是将文本切分为不同的{"text"}尚不明确
3、译文是否能包含"、\尚不明确
4、牌子文本存入命令方块格式是否正确尚不明确
5、本人因各种原因在较长时间内不会维护此帖,有问题请讨论,本文内容和思路可无限制引用
2、translate组件是合并文本还是将文本切分为不同的{"text"}尚不明确
3、译文是否能包含"、\尚不明确
4、牌子文本存入命令方块格式是否正确尚不明确
5、本人因各种原因在较长时间内不会维护此帖,有问题请讨论,本文内容和思路可无限制引用
(帖子水了点,各位版主手下留情)
MCBBS有你更精彩!!
木木不木mua 发表于 2022-7-26 13:06
MCBBS有你更精彩!!
MCBBS有你更精彩!!
木木不木mua 发表于 2022-7-26 13:06
MCBBS有你更精彩!!
MCBBS有你更精彩!!
木木不木mua 发表于 2022-7-26 13:07
MCBBS有你更精彩!!
MCBBS有你更精彩!!!
感谢分享