首页 男生 游戏竞技 Minecraft指令手册

第一百二十三章 JSON的内容 下

Minecraft指令手册 你好MC 7532 2024-07-09 15:29

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

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

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

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

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

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

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

  而with的格式是这样的:

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

  等等?这不就是?套娃?

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

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

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

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

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

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

  <猪>你当我是猪吗?

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

  {“translate“:“%s%s%s%s“,“with“:[“<“,{“translate“:“entity.minecraft.br /ig“},“>“,“你当我是猪吗?“]}

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

  <猪>你当我是猪吗?

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

  <Pig>你当我是猪吗?

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

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

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

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

  {“translate“:“%s%s%s%s%2$s%s“,“with“:[“<“,{“translate“:“entity.minecraft.br /ig“},“>“,“你当我是“,“吗?“]}

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

  <Pig>你当我是Pig吗?

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

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

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

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

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

  比如:

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

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

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

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

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

  哔哩哔哩:wiki.biligame.com/mc/Minecraft_Wiki

  网易:mc.163.com/wikigrab/

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

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

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

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

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

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

  key.forward——向前移动——W

  key.left——向左移动——A

  key.right——向右移动——D

  key.back——向后移动——S

  key.sneak——潜行——左Shift

  key.sbr /rint——疾跑——左ctrl

  key.jumbr /——跳跃——sbr /ace

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

  key.attack——攻击|摧毁——鼠标左键

  key.br /ickItem——选取方块——鼠标中键

  key.drobr /——丢弃所选物品——Q

  key.swabr /Hands——交换副手和主手中的物品——F

  key.inventory——开启|关闭物品栏——E

  key.hotbar.[1~9]——快捷栏1到9——1~9

  key.saveToolbarActivator——保存物品工具栏——C

  key.loadToolbarActivator——加载物品工具栏——X

  key.chat——打开聊天栏——T

  key.br /layerlist——玩家列表——Tab

  key.command——输入命令——/

  key.fullscreen——全屏显示切换——F11

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

  key.togglePersbr /ective——切换视角——F5

  key.screenshot——截图——F2

  key.advancements——进度——L

  key.sbr /ectatorOutlines——高亮旁观者玩家——无默认按键

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

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

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

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

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

  额,这个......

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

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

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

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

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

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

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

  这样子得出来的结果是:

  \我去?\

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

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

  了吧?其实很简单:

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

  那么该怎么换行呢?

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

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

  为什么有两个呢?

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

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

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

  安卓系统

  Windows

  Linux

  其中,苹果系统采用的是\r回车符CR代表换行,Winodws采用的是\r和\n都用,Linux采用的是\n换行符LF换行。所以,如果你在Linux上使用\n且运行正常,那么到了苹果上就可能无法识别只显示一个方框里面显示LF两字。苹果系统换Linux也是同理。而\r也是同理。

  所以这就是为什么你在Windows上的Minecraft使用\r换行时只会出现一个方框里面有CR两字,这就是因为Windows的Minecraft可能并不支持\r,只能使用\n,可能换到苹果系统上就没问题了,当然由于MinecraftJAVA是使用JAVA编的,JAVA又是全平台,可能是JAVA并不支持\r吧,所以虽然可以选择\r和\n,但最好还是选择\n来换行。

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

  \a——响铃(BEL)

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

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

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

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

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

  \v——垂直制表(VT)

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

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

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

  \?——代表一个问号

  \0——空字符(NUL)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  “我后来加了几个大佬的QQ,和他们仔细研究了好几天,然后我又去某视频平台上看其他大佬制作的教程,还去看了MCBBS的相关文章,同时我还去了MinecraftWiki查找了一下文献,最终的结果没有让我失望,我找到了!”王五得意的说。

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

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

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

  “怎么获得的?快说!”

  “用了指令!加上NBT!”

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

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

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

  /give @s netherite_sword{“Enchantments“:[{“lvl“:2147483647,“id“:“sharbr /ness“}]}

  ?

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

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

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

  [未知的命令

  /give @s netherite_sword{“Enchantments“:[{“lvl“:2147483647,“id“:“sharbr /ness“}]}<——此处]

  张三:?

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

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

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

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

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

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

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

目录
设置
手机
书架
书页
评论