为什么我不使用Minecraft JSON生成器

并不是不想用,而是生成出来的东西可读性太差。而且,很多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。对于批量设置颜色并没有什么用,但是关键是可以用这个功能批量设置clickEventhoverEvent
    /tellraw @r {text: "首项,默认颜色", extra: [{text: "黑色", color: black, extra: ["还是黑色"]}, "默认颜色"]}
  • 生成器的用途是简化命令编写,但是我却没有看到哪个生成器可以帮助编写hoverEvent: {action: show_item, value: “…”}里的物品信息。很可惜Minecraft不支持value作为一个对象,只能是字符串。

最重要的事情是,Minecraft的JSON系统是支持不规范的JSON表达式非线性的格式化的。然而,我从未见过有如此厚颜无耻之人支持这两个之中任意一个的。

是的,我又水了一篇文章。

发表评论

电子邮件地址不会被公开。 必填项已用*标注