t1546542
本帖最后由 t1546542 于 2020-2-28 23:31 编辑

版本:1.12.2
  1. /testforblock ~ ~-1 ~ chain_command_block 1 {LastOutput:"{"extra":[{"color":"red","translate":"commands.generic.usage","with":[{"translate":"commands.gamemode.usage"}]}],"text":"[23:59:58] "}"}
复制代码
每个英文的意思
比如
LastOutput:"{}" 意思:
@SPGoding @Jokey_钥匙 @Chelove_C60




xmdhs

https://minecraft-zh.gamepedia.c ... 3.E6.A0.BC.E5.BC.8F

后面就是正常的 json 了,来这里看
https://minecraft-zh.gamepedia.c ... N.E6.96.87.E6.9C.AC

牛奶泡悠悠
前面的命令部分不再赘述。
数据标签中 LastOutput 指的是上一次命令方块执行的输出,里面是一个原始JSON文本
此处如果没猜错的话是用来检测系统时间的。
您可以尝试在一个命令方块中输入命令“abcdefg”,尝试运行,并通过 blockdata 命令获取方块的数据标签,这能帮助您快速理解。
*利用 blockdata 命令获取方块的数据标签:blockdata <x> <y> <z> {}

t1546542
本帖最后由 t1546542 于 2020-2-29 00:57 编辑

extra干嘛的
translate干嘛的 commands.generic.usage是什么
为什么后面还要用with重复一遍translate
(为什么LastOutput:"{}"里面的引号不用转义)


⊙u⊙
你这是在看获取系统时间吗?...
先丢个问题来源
https://mc.ganxiaozhe.com/mc/mlxt/201812080.html


检测方块的输出
LastOutput显示输出内容
内容由text文本和translate翻译文本拼接而成


相关翻译文本(以1.8内的zh_CN.lang为例)
commands.generic.usage=用法:%s
commands.gamemode.usage=/gamemode <模式> [玩家]


%s为占位符,还有其他的比如
%d
%f
%#$s
%#$d
%#$f
%.#f
%.#d

时间和电量关系...我丢个大佬写的例子
原文链接在这https://www.minecraftforum.net/forums/minecraft-java-edition/redstone-discussion-and/351959-1-12-json-text-component-for-tellraw-title-books
  1. custom.key = Insert %s and %s, followed by %s.

  2. /tellraw @a {"translate":"custom.key","with":["STRING1", "STRING2"]}

  3. Output = Insert STRING1 and STRING2, followed by .
  4. #第一个%s会获取命令中的首个内容STRING1,而第二个%s则获取第二个STRING2。第三个%s也是,但由于with里面没有定义第三个故还回空。
复制代码




翻译时会把%s替换为with里面的第一个内容,既是
用法:/gamemode <模式> [玩家]

然后在补上时间和文本颜色最终结果放回命令方块里的最后输出栏



至于extra,在成书里面应该是最常见的,就不多说了


xmdhs
t1546542 发表于 2020-2-29 00:55
extra干嘛的
translate干嘛的 commands.generic.usage是什么
为什么后面还要用with重复一遍translate

要转义啊,论坛把转义给吞了吧
/testforblock ~ ~-1 ~ chain_command_block 1 {LastOutput:"{\"extra\":[{\"color\":\"red\",\"translate\":\"commands.generic.usage\",\"with\":[{\"translate\":\"commands.gamemode.usage\"}]}],\"text\":\"[23:59:58] \"}"}

没有重复一遍 translate 的,楼上讲了含义。

extra 是可以用来套多个不同的文本用的,太复杂,平时用不着,不过这里是用来识别方块的 nbt ,所以就必须方块是什么 nbt ,这里就填什么 nbt

t1546542
⊙u⊙ 发表于 2020-2-29 06:09
你这是在看获取系统时间吗?...
先丢个问题来源
https://mc.ganxiaozhe.com/mc/mlxt/201812080.html ...

所以这些在tellraw里有什么用
只有命令方块才有这些吗

⊙u⊙
t1546542 发表于 2020-2-29 00:20
所以这些在tellraw里有什么用
只有命令方块才有这些吗

命令方块才有lastoutput,而translate应该是只要有json的地方就能用

t1546542
本帖最后由 t1546542 于 2020-3-1 01:11 编辑
⊙u⊙ 发表于 2020-2-29 19:34
命令方块才有lastoutput,而translate应该是只要有json的地方就能用

所以有translate就要有with吗
占位符有什么意思、作用
custom.key = Insert %s and %s, followed by %s.
这个是原版自带的还是自己设置的
如果是自己设置的怎么设置

CR_019
t1546542 发表于 2020-2-29 22:49
所以有translate就要有with吗
占位符有什么意思、作用
translate:显示文本的翻译标识符,用于将文本翻译至玩家使用的语言。此标识符与从assets文件夹或资源包中找到的语言文件的标识符一致。当text存在时忽略此参数。如果翻译标识符无效,则显示标识符本身。
with:translate所使用的聊天对象参数列表和字符串参数。
该参数为当前语言翻译文本中出现的参数赋值,参数依序排列(例如,列表中的第一个元素将会取代翻译文本中的“%1$s”)。如果翻译标识符无效,但含有%s或%1$s这样的内容,则也能够替换。
建议查阅wiki
with为非必须项。
首先,翻译文本translate与资源包相关,资源包内可包含翻译的json文件;
如果你的(或原版的)翻译文件里不含占位符,那么with是不必要的;如"block.minecraft.stone":"石头" ,这时候指定with是没用的;
如果含有占位符,且未指定with,则翻译时会省略 ;

若指定了with,且翻译文本里有占位符,则会按一定的规则将占位符转换成with内的内容。
其中的规则较为复杂,建议先去看wiki,看不懂可以继续问,但估计不会我来答了

t1546542
本帖最后由 t1546542 于 2020-3-1 00:17 编辑
chaoren019 发表于 2020-2-29 23:42
建议查阅wiki
with为非必须项。
首先,翻译文本translate与资源包相关,资源包内可包含翻译的json文件;

这两个真够“晦涩难懂”的
理解能力有点不够啊

所以这个translate输出什么
(或者说是辅助什么来输出)

感觉这个翻译到玩家使用的语言没什么用
举一个特殊情况下的例子呗
custom.key = Insert %s and %s, followed by %s.

这个是游戏里面自动设置的吗

⊙u⊙
这个指的是哪个?
如果说是那条custom.key的话,是那位作者写教程时自己新写的一条,你也可以在zh_cn或en_us的语言文本里自己写。
至于你提问中的两个,是游戏自带的,同样能在语言文本内找到。

语言文本搜索%应该会找到很多例子可以自己细品

t1546542
⊙u⊙ 发表于 2020-3-1 03:53
这个指的是哪个?
如果说是那条custom.key的话,是那位作者写教程时自己新写的一条,你也可以在zh_cn或en_u ...

custom.key = Insert %s and %s, followed by %s.
/tellraw @a {"translate":"custom.key","with":["STRING1":"STRING2","translate":"123"]}
Output = Insert ? and ?, followed by ?.
稍微改动了一下
那么这样?处会输出什么

⊙u⊙
本帖最后由 ⊙u⊙ 于 2020-2-29 18:25 编辑
t1546542 发表于 2020-2-29 17:44
custom.key = Insert %s and %s, followed by %s.
/tellraw @a {"translate":"custom.key","with":["STRI ...

无123翻译文本
Insert STRING1 and STRING2, followed by 123.


有123翻译文本
123 = 反正就是有吧...
Insert STRING1 and STRING2, followed by 反正就是有吧....

另外你后面这个改的写错了,应该这样
"with":["STRING1", "STRING2","translate":"123"]

第一页 上一页 下一页 最后一页