扫码在手机阅读
手机阅读《Minecraft指令手册》
Minecraft指令手册

第123章JSON的内容下

猪你当我是猪吗?

如果调成英文那么是这样的:

Pig你当我是猪吗?

我们在第六十章,基岩版的JSON文本中,讲到了translate,也就是翻译。我们可以使用游戏里自带的语言文件名称来达成翻译的效果。

等等,是不是有什么不对的地方?

这两个竟然作用一模一样!连元素名都长得一模一样!等等,基岩版的translate还有带一个with参数,那么难不成.......

但是如果我的读者里面有外国人,那么这群外国人肯定会表示对这条指令不太满意,因为他们认为说的话里面的“猪”字也可以翻译成英文,那么这该怎么办呢?

很简单,可以修改上面的指令变成:、

{“translate“:“%s%s%s%s%2$s%s“,“with“:[““,{“translate“:““},““,“你当我是“,“吗?“]}

然后把游戏调成英文,再运行一次:

Pig你当我是Pig吗?

好了,现在这群外国人都已经表示对这条指令满意了,但是他们对其喜欢的主播造的桥仍然非常不满意,于是作者为了让这群外国人彻底满意,就造出了一个桥,这个桥可以方便河两岸的村民非常“便捷”的来往交易,这群外国人看到我造的桥特别满意,于是每人随手就给了我这本书投了一张推荐票。

好了,这就是translate的全部了,但这不是JSON内容元素的全部。在JSON里,还有一个和translate类似的元素,那就是keybind内容元素。

格式和translate差不多,都是要填标识符。而translate是翻译标识符,keybind是按键标识符。

这有什么用?keybind的作用就在于可以非常方便的显示出游戏的按键,把服务器做得高大上起来。特别是使用keybind,还可以制作出一个很简单的新手教程。

而且其显示内容也会随着玩家在设置里更改而更改。

比如:

{“keybind“:““}就是显示游戏打开背包的按键,如果玩家没有更改,使用默认设置,那么将会显示e。

是不是很简单?对,但是标识符找起来就难了。

为何?如果你去MinecraftWiki找到对应的内容,你会发现其“键位标识符”指向了“控制”词条,而这个词条压根儿就没有键位标识符。

MinecraftWiki没有,那么该去哪找呢?

2020年初,MinecraftWiki为了方便中国大陆的用户查找资料,分别在Bilibili和网易分别设立了镜像,网址分别是:

哔哩哔哩:/mc/Minecraft_Wiki

网易:/wikigrab/

而哔哩哔哩就是一个真的镜像映射,内容还是Minecraft Wiki。

而网易就不一样了,还专门重新写了一个界面。但是在其他人看来,网易的这波操作让该MinecraftWiki从有用到有个锤子用来了一个一百八十度大反转,其他人宁愿去哔哩哔哩,也不愿去看看网易的镜像站。

那么网易的镜像站就真的没用了吗?还真不一定。

在网易的Minecraft Wiki首页点击“游戏内容”,往下拉一下,你就会发现了一个新的大陆:原创教程!

实际上这些教程是从Minecraft WIKI那里搬过来的,但网易把其放在了最醒目的地方,加上界面UI的优化,使我们可以很容易找到这里。

其中,有一篇教程叫做原始JSON文本,里面详细的说明了原始JSON文本的各个元素,就在这里,我们就可以找到原版的大部分键位标识符:

——向前移动——W

——向左移动——A

——向右移动——D

——向后移动——S

——潜行——左Shift

——疾跑——左ctrl

——跳跃——space

——使用物品|放置方块——鼠标右键

——攻击|摧毁——鼠标左键

——选取方块——鼠标中键

——丢弃所选物品——Q

——交换副手和主手中的物品——F

——开启|关闭物品栏——E

9]——快捷栏1到9——19

——保存物品工具栏——C

——加载物品工具栏——X

——打开聊天栏——T

——玩家列表——Ta

——输入命令——/

——全屏显示切换——F11

——切换电影视角——无默认按键

——切换视角——F5

——截图——F2

——进度——L

——高亮旁观者玩家——无默认按键

keybind也完了,那么内容完了没有?

还没完,但也快完了,只剩最后一个:nbt。

nbt也是一个内容元素,使用nbt,可以读取指定实体、方块或命令存储的NBT其中的某个值,并把它显示出来,比如直接显示出一个玩家的经验值,或者是一头阿米驴的血量——哦不!阿米驴被服务器的防刷物品装置清除了!阿——米——驴——!

只不过这个内容,我们就放到接下来讲NBT时再讲吧。

(嘿,作者,JSON怎么换行啊?)

额,这个......

“\”这个符号叫做“反斜杠”,和“正斜杠”(/)是相反的。在计算机语言中,反斜杠通常叫做“转义符号”,而在转义符号后面添加一些数字或字母,是可以有特殊作用的。而JSON本身作为JAVA的一部分,自然而然也可以使用转义符号。

比如要显示英文的引号,可以在英文的引号前面加上一个\,让其失去意义,比如:

{“text“:“小明说:\“你好\““}

这样子,输出的结果是:小明说:“你好“,而两个转义符号是一次性物品,转了“成为没意义的符号就没了。

那么如果想要在文本显示里显示“\”该怎么办?

很简单,在\前面再加一个\让转义符号转前面的转义符号成为没意义的转义符号,这样子就可以显示了,比如:

{“text“:“\\我去?\\“}

这样子得出来的结果是:

\我去?\

懂了吧,那么你应该也知道怎么输出:

知道吗,转义符号还可以这么用:{“text“:“\\小明:\“你好\“\\“}

了吧?其实很简单:

{“text“:“知道吗,转义符号还可以这么用:{\“text\“:\“\\\\小明:\\\“你好\\\“\\\\\“}“}

那么该怎么换行呢?

可以在转义符号后面添加:

(换行)或\r(回车)来换行。

为什么有两个呢?

这就要涉及到计算机的操作系统了。

我们知道,目前为止,世界上有四大系统:

苹果系统(Mac OS、iPai OS、iPhone OS、IOS什么奇奇怪怪的苹果旗下系统都统一为苹果)

安卓系统

Windows

Linux

其中,苹果系统采用的是\r回车符CR代表换行,Winodws采用的是\r和

都用,Linux采用的是

换行符LF换行。所以,如果你在Linux上使用

且运行正常,那么到了苹果上就可能无法识别只显示一个方框里面显示LF两字。苹果系统换Linux也是同理。而\r也是同理。

所以这就是为什么你在Windows上的Minecraft使用\r换行时只会出现一个方框里面有CR两字,这就是因为Windows的Minecraft可能并不支持\r,只能使用

,可能换到苹果系统上就没问题了,当然由于MinecraftJAVA是使用JAVA编的,JAVA又是全平台,可能是JAVA并不支持\r吧,所以虽然可以选择\r和

,但最好还是选择

来换行。

但是你以为这就完了吗?如果你到百度百科上去搜索“转义字符”,找到转义字符词条,那么你就会发现在计算机语言当中,转义字符的作用不止一点:

\a——响铃(BEL)

\b——退格(BS),将当前位置移到前一列

\f——换页(FF),将当前位置移到下页开头

——换行(LF),将当前位置移到下一行开头

\r——回车(CR),将当前位置移到本行开头

\t——水平制表(HT)(跳到下一个TAB位置)

\v——垂直制表(VT)

\\——代表一个反斜线字符''\'

\'——代表一个单引号(撇号)字符

\“——代表一个双引号字符

\?——代表一个问号

\0——空字符(NUL)

\ddd——1到3位八进制数所代表的任意字符

\xhh——十六进制所代表的任意字符、

而其中,除了

、\r、\\、\“和\'(这个也可以用,只不过删了\也是可以的)上面讲过了或有同类的,剩下的其中\b、\f、\t在Minecraft中同样也可以用,只不过和\r一样,实际上游戏并不能识别它们只不过是JSON语法对了而已,实践起来只会显示方框里有BS、FF和HT而已。

张三抱着一堆2147483647级锋利的剑从刷物品房走了出来,看见王五正在拿着纸和笔专心的做笔记,旁边还放着一台正在工作的电脑。

“奇怪了,王五兄不是最讨厌做笔记了吗,怎么今天像换了个人似的。”张三嘀咕着。

好奇心驱使着张三放下了手中的一堆剑,转而走到正在专心写笔记的王五后面。王五似乎并没有注意到张三来到了他的后面,继续在写东西。

在王五后面的张三定睛一看,发现王五的笔记上面写满了各种密密麻麻的单词、数字,好像是什么计算机语言。“没想到王五竟然会对这种东西产生兴趣。”张三想。

突然间王五伸了一个懒腰,把在后面的张三下了一大跳。王五听见后面有动静,转头一看:“唉,张三兄,你怎么在这里?”

张三平静了一下心情,说:“我这不是刚刚做完事情,出来看到你王五兄你今天竟然在学计算机语言,觉得稀奇嘛所以过来看一下。”

说着张三指了指放在门口的那一堆附了魔的下界合金剑。

王五看到张三这么说,不禁觉得好笑,回答道:“唉张三兄,你还是太高估我了,我那点连初中都没上完的头脑,指望着去学计算机语言?”

“嗯?那么你写的是什么东西?”张三听王五这么一说顿时来了兴趣。

“额,这该怎么说呢......哦对了,”说着王五拿起一把下界合金剑,“比如这把剑,它附魔了2147483647级的锋利对吧?你想知道为什么这个等级会超过32767吗?”

“额这个问题不是你最先......”

“我后来加了几个大佬的QQ,和他们仔细研究了好几天,然后我又去某视频平台上看其他大佬制作的教程,还去看了MC

S的相关文章,同时我还去了MinecraftWiki查找了一下文献,最终的结果没有让我失望,我找到了!”王五得意的说。

“原来在版本Mojang把附魔的NBT标签的等级数字类型由short短整型改成了int长整形,自然而然附魔的等级上限就由32767上升到了2147483647!”

“你说什么?”张三听得一头雾水,“这和你写的又有什么关系?”

“有很大的关系,”王五压低了声音,“你知道腐竹是怎么获得这把剑的吗?”

“怎么获得的?快说!”

“用了指令!加上NBT!”

“?”张三头上的雾水更多了,“那然后呢?”

“我在网上找到了一位大佬,他给出了如下指令。”说着王五打开了他的笔记本,并翻到了第一页指了其中一行,“呐,就是这个。”

张三拍散了头上的雾水,然后把目光转向了王五指着的那一行,只见上面写着:

/give s netherite_sword{“Enchantments“:[{“lvl“:2147483647,“id“:“sharpness“}]}

张三头上冒出了个大大的问号:“就是这么简单?”

王五笑着说:“没错,而且这可以直接在聊天栏输入并运行。”

张三虽然不知道为什么王五会笑,但他听王五这么一说,赶紧打开了聊天栏,输入了王五刚刚提供的那个指令,并回车:

[未知的命令

/give s netherite_sword{“Enchantments“:[{“lvl“:2147483647,“id“:“sharpness“}]}——此处

张三:?

王五看张三一脸疑惑的样子,笑得更加的猖狂了:“哦对了哈,张三兄。”

张三以为王五又有什么重要的事情来讲,打起了10倍的精神准备迎接接下来的内容,以免又是一头雾水。

“哪会那么简单啊哈,你只是完成了第一步而已!接下来,你需要找到末地传送门,注意是没激活的!激活的就弄不了了!”王五强忍着笑意装正经说,“然后你需要将一把满耐久的没有附魔的下界合金剑丢进下面的岩浆,静静等待5分钟,这5分钟千万不要动!到点了后你就需要激活传送门,然后跳进去,你就会被传送到一个神秘的房间,这个房间里面放满了神器!我们在管理员手中买到的只不过是最初级的而已,里面还有更加牛批的!”

“真的?”张三现在恨不得立马传送到末地传送门旁边。

“千真万确,我们可是好哥们我咋会骗你呢?不信你可以现在就启程。”

张三听王五这么一说,更加确认了王五说的是真的,毕竟是好哥们嘛。于是他操起一把下界合金剑,就进入了地狱门.......

“哈哈哈哈哈哈哈哈哈哈哈哈哈哈,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈咳。”

没错!在JAVA版的JSON的translate,也有一个附加的with参数,作用也和基岩版一样。

唉不对,有一点不一样,就是格式和替换符号不一样。

{“translate“:“%s%s%s%s“,“with“:[““,{“translate“:““},““,“你当我是猪吗?“]}

这样子最终得出来的结果是这样的:

with的作用,就是可以在translate里插入一段固定的文字,不会因为语言的变化而变化。

我们上一章讲到了translate,也就是翻译。我们可以使用游戏里自带的翻译标识符来达成翻译的效果。

在JAVA版的JSON里,with可以识别translate里的%s(下一个参数)和%1$s(第一个参数),其中%1$s中的1可以替换为其他的数字,这个数字代表着显示第几个参数。

而with的格式是这样的:

[{“with“:[{“with“:[{“with“:[{“with“:[{“with“:[{“with“:[{......}]}]}]}]}]}]}

那么现在来举个例子,比如我们要弄一段文字:

猪你当我是猪吗?

而其中,“猪”是要翻译的,如果我们只能使用with和translate,就可以这么做:

等等?这不就是?套娃?

没错,这的确是可以套娃的:

可能有人已经注意到了,作者并没有直接把放在第一个translate里,而是把它放在了with里。这是为什么?

很简单,放第一个translate游戏就识别不出来了,因为我们还有%s这些干扰项,所以我们只能放出来。

而这个with本身的内容是一个列表,按从左到右排列,所以使用%s,第一个%s显示第一个,第二个%s显示第二个,第三个%s显示第三个,以此类推。

那么这个with到底有什么用?对哦,作者在第六十章没讲明白唉。那么这里讲明白吧。

[{“with“:[{原始JSON文本},对象]}

  • 加入收藏
  • 目录
  • A+
  • A-