并不是不想用,而是生成出来的东西可读性太差。而且,很多JSON命令生成器也都功能不全面。例如,几乎所有的/tellraw命令生成器都无法生成下列命令:
/tellraw @r [{text: "some random entities:", extra: [{selector: "@r[type=!Player]"}, {selector: "@r[type=!Player]"}, {selector: "@r[type=!Player]"}, {selector: "@r[type=!Player]"}], color: aqua}, "\n"]
/tellraw @r [ { text: "some random entities:", extra: [ {selector: "@r[type=!Player]"}, {selector: "@r[type=!Player]"}, {selector: "@r[type=!Player]"}, {selector: "@r[type=!Player]"} ], color: aqua }, "\n" ]
这是我手写的不规范的JSON,但是其中有一些神奇的特性让Minecraft能够接受这个命令且达到一些生成器无法方便制作的效果。
- 一般的生成器产生的命令是这样的:
/tellraw @r {text: "", extra: [{text: "文字"}, ...]}
但是事实上它可以是简写为这样的,并且我没有见过哪个生成器是这样给出命令的:
/tellraw @r ["文字", ...]
- 对于首项无需格式化的文本,可以这样使用(这个应该都知道,但是无法生成):
/tellraw @r {text: "文本", extra: []}
但是如果只有一项(例如要输出Unicode字符),其实可以这样:
/tellraw @r "文本"
- extra中还是可以包含extra。对于批量设置颜色并没有什么用,但是关键是可以用这个功能批量设置clickEvent和hoverEvent。
/tellraw @r {text: "首项,默认颜色", extra: [{text: "黑色", color: black, extra: ["还是黑色"]}, "默认颜色"]}
- 生成器的用途是简化命令编写,但是我却没有看到哪个生成器可以帮助编写hoverEvent: {action: show_item, value: “…”}里的物品信息。很可惜Minecraft不支持value作为一个对象,只能是字符串。
最重要的事情是,Minecraft的JSON系统是支持不规范的JSON表达式和非线性的格式化的。然而,我从未见过有如此厚颜无耻之人支持这两个之中任意一个的。
是的,我又水了一篇文章。