首頁 游戲

Minecraft指令手冊

第一百二十三章 JSON的內(nèi)容 下

Minecraft指令手冊 你好MC 4666 2020-08-17 03:10:44

  我們上一章講到了translate,也就是翻譯。我們可以使用游戲里自帶的翻譯標(biāo)識(shí)符來達(dá)成翻譯的效果。

  我們在第六十章,基巖版的JSON文本中,講到了translate,也就是翻譯。我們可以使用游戲里自帶的語言文件名稱來達(dá)成翻譯的效果。

  等等,是不是有什么不對(duì)的地方?

  這兩個(gè)竟然作用一模一樣!連元素名都長得一模一樣!等等,基巖版的translate還有帶一個(gè)with參數(shù),那么難不成.......

  沒錯(cuò)!在JAVA版的JSON的translate,也有一個(gè)附加的with參數(shù),作用也和基巖版一樣。

  唉不對(duì),有一點(diǎn)不一樣,就是格式和替換符號(hào)不一樣。

  在JAVA版的JSON里,with可以識(shí)別translate里的%s(下一個(gè)參數(shù))和%1$s(第一個(gè)參數(shù)),其中%1$s中的1可以替換為其他的數(shù)字,這個(gè)數(shù)字代表著顯示第幾個(gè)參數(shù)。

  而with的格式是這樣的:

  [{“with“:[{原始JSON文本},對(duì)象]}]

  等等?這不就是?套娃?

  沒錯(cuò),這的確是可以套娃的:

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

  而這個(gè)with本身的內(nèi)容是一個(gè)列表,按從左到右排列,所以使用%s,第一個(gè)%s顯示第一個(gè),第二個(gè)%s顯示第二個(gè),第三個(gè)%s顯示第三個(gè),以此類推。

  那么這個(gè)with到底有什么用?對(duì)哦,作者在第六十章沒講明白唉。那么這里講明白吧。

  with的作用,就是可以在translate里插入一段固定的文字,不會(huì)因?yàn)檎Z言的變化而變化。

  那么現(xiàn)在來舉個(gè)例子,比如我們要弄一段文字:

  <豬>你當(dāng)我是豬嗎?

  而其中,“豬”是要翻譯的,如果我們只能使用with和translate,就可以這么做:

  {“translate“:“%s%s%s%s“,“with“:[“<“,{“translate“:“entity.minecraft.pig“},“>“,“你當(dāng)我是豬嗎?“]}

  這樣子最終得出來的結(jié)果是這樣的:

  <豬>你當(dāng)我是豬嗎?

  如果調(diào)成英文那么是這樣的:

  <Pig>你當(dāng)我是豬嗎?

  可能有人已經(jīng)注意到了,作者并沒有直接把entity.minecraft.pig放在第一個(gè)translate里,而是把它放在了with里。這是為什么?

  很簡單,放第一個(gè)translate游戲就識(shí)別不出來了,因?yàn)槲覀冞€有%s這些干擾項(xiàng),所以我們只能放出來。

  但是如果我的讀者里面有外國人,那么這群外國人肯定會(huì)表示對(duì)這條指令不太滿意,因?yàn)樗麄冋J(rèn)為說的話里面的“豬”字也可以翻譯成英文,那么這該怎么辦呢?

  很簡單,可以修改上面的指令變成:、

  {“translate“:“%s%s%s%s%2$s%s“,“with“:[“<“,{“translate“:“entity.minecraft.pig“},“>“,“你當(dāng)我是“,“嗎?“]}

  然后把游戲調(diào)成英文,再運(yùn)行一次:

  <Pig>你當(dāng)我是Pig嗎?

  好了,現(xiàn)在這群外國人都已經(jīng)表示對(duì)這條指令滿意了,但是他們對(duì)其喜歡的主播造的橋仍然非常不滿意,于是作者為了讓這群外國人徹底滿意,就造出了一個(gè)橋,這個(gè)橋可以方便河兩岸的村民非?!氨憬荨钡膩硗灰?,這群外國人看到我造的橋特別滿意,于是每人隨手就給了我這本書投了一張推薦票。

  好了,這就是translate的全部了,但這不是JSON內(nèi)容元素的全部。在JSON里,還有一個(gè)和translate類似的元素,那就是keybind內(nèi)容元素。

  格式和translate差不多,都是要填標(biāo)識(shí)符。而translate是翻譯標(biāo)識(shí)符,keybind是按鍵標(biāo)識(shí)符。

  這有什么用?keybind的作用就在于可以非常方便的顯示出游戲的按鍵,把服務(wù)器做得高大上起來。特別是使用keybind,還可以制作出一個(gè)很簡單的新手教程。

  而且其顯示內(nèi)容也會(huì)隨著玩家在設(shè)置里更改而更改。

  比如:

  {“keybind“:“key.inventory“}就是顯示游戲打開背包的按鍵,如果玩家沒有更改,使用默認(rèn)設(shè)置,那么將會(huì)顯示e。

  是不是很簡單?對(duì),但是標(biāo)識(shí)符找起來就難了。

  為何?如果你去MinecraftWiki找到對(duì)應(yīng)的內(nèi)容,你會(huì)發(fā)現(xiàn)其“鍵位標(biāo)識(shí)符”指向了“控制”詞條,而這個(gè)詞條壓根兒就沒有鍵位標(biāo)識(shí)符。

  MinecraftWiki沒有,那么該去哪找呢?

  2020年初,MinecraftWiki為了方便中國大陸的用戶查找資料,分別在Bilibili和網(wǎng)易分別設(shè)立了鏡像,網(wǎng)址分別是:

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

  網(wǎng)易:mc.163.com/wikigrab/

  而嗶哩嗶哩就是一個(gè)真的鏡像映射,內(nèi)容還是Minecraft Wiki。

  而網(wǎng)易就不一樣了,還專門重新寫了一個(gè)界面。但是在其他人看來,網(wǎng)易的這波操作讓該MinecraftWiki從有用到有個(gè)錘子用來了一個(gè)一百八十度大反轉(zhuǎn),其他人寧愿去嗶哩嗶哩,也不愿去看看網(wǎng)易的鏡像站。

  那么網(wǎng)易的鏡像站就真的沒用了嗎?還真不一定。

  在網(wǎng)易的Minecraft Wiki首頁點(diǎn)擊“游戲內(nèi)容”,往下拉一下,你就會(huì)發(fā)現(xiàn)了一個(gè)新的大陸:原創(chuàng)教程!

  實(shí)際上這些教程是從Minecraft WIKI那里搬過來的,但網(wǎng)易把其放在了最醒目的地方,加上界面UI的優(yōu)化,使我們可以很容易找到這里。

  其中,有一篇教程叫做原始JSON文本,里面詳細(xì)的說明了原始JSON文本的各個(gè)元素,就在這里,我們就可以找到原版的大部分鍵位標(biāo)識(shí)符:

  key.forward——向前移動(dòng)——W

  key.left——向左移動(dòng)——A

  key.right——向右移動(dòng)——D

  key.back——向后移動(dòng)——S

  key.sneak——潛行——左Shift

  key.sprint——疾跑——左ctrl

  key.jump——跳躍——space

  key.use——使用物品|放置方塊——鼠標(biāo)右鍵

  key.attack——攻擊|摧毀——鼠標(biāo)左鍵

  key.pickItem——選取方塊——鼠標(biāo)中鍵

  key.drop——丟棄所選物品——Q

  key.swapHands——交換副手和主手中的物品——F

  key.inventory——開啟|關(guān)閉物品欄——E

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

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

  key.loadToolbarActivator——加載物品工具欄——X

  key.chat——打開聊天欄——T

  key.playerlist——玩家列表——Tab

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

  key.fullscreen——全屏顯示切換——F11

  key.smoothCamera——切換電影視角——無默認(rèn)按鍵

  key.togglePerspective——切換視角——F5

  key.screenshot——截圖——F2

  key.advancements——進(jìn)度——L

  key.spectatorOutlines——高亮旁觀者玩家——無默認(rèn)按鍵

  keybind也完了,那么內(nèi)容完了沒有?

  還沒完,但也快完了,只剩最后一個(gè):nbt。

  nbt也是一個(gè)內(nèi)容元素,使用nbt,可以讀取指定實(shí)體、方塊或命令存儲(chǔ)的NBT其中的某個(gè)值,并把它顯示出來,比如直接顯示出一個(gè)玩家的經(jīng)驗(yàn)值,或者是一頭阿米驢的血量——哦不!阿米驢被服務(wù)器的防刷物品裝置清除了!阿——米——驢——!

  只不過這個(gè)內(nèi)容,我們就放到接下來講NBT時(shí)再講吧。

  (嘿,作者,JSON怎么換行???)

  額,這個(gè)......

  “\”這個(gè)符號(hào)叫做“反斜杠”,和“正斜杠”(/)是相反的。在計(jì)算機(jī)語言中,反斜杠通常叫做“轉(zhuǎn)義符號(hào)”,而在轉(zhuǎn)義符號(hào)后面添加一些數(shù)字或字母,是可以有特殊作用的。而JSON本身作為JAVA的一部分,自然而然也可以使用轉(zhuǎn)義符號(hào)。

  比如要顯示英文的引號(hào),可以在英文的引號(hào)前面加上一個(gè)\,讓其失去意義,比如:

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

  這樣子,輸出的結(jié)果是:小明說:“你好“,而兩個(gè)轉(zhuǎn)義符號(hào)是一次性物品,轉(zhuǎn)了“成為沒意義的符號(hào)就沒了。

  那么如果想要在文本顯示里顯示“\”該怎么辦?

  很簡單,在\前面再加一個(gè)\讓轉(zhuǎn)義符號(hào)轉(zhuǎn)前面的轉(zhuǎn)義符號(hào)成為沒意義的轉(zhuǎn)義符號(hào),這樣子就可以顯示了,比如:

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

  這樣子得出來的結(jié)果是:

  \我去?\

  懂了吧,那么你應(yīng)該也知道怎么輸出:

  知道嗎,轉(zhuǎn)義符號(hào)還可以這么用:{“text“:“\\小明:\“你好\“\\“}

  了吧?其實(shí)很簡單:

  {“text“:“知道嗎,轉(zhuǎn)義符號(hào)還可以這么用:{\“text\“:\“\\\\小明:\\\“你好\\\“\\\\\“}“}

  那么該怎么換行呢?

  可以在轉(zhuǎn)義符號(hào)后面添加:

  \n(換行)或\r(回車)來換行。

  為什么有兩個(gè)呢?

  這就要涉及到計(jì)算機(jī)的操作系統(tǒng)了。

  我們知道,目前為止,世界上有四大系統(tǒng):

  蘋果系統(tǒng)(Mac OS、iPai OS、iPhone OS、IOS什么奇奇怪怪的蘋果旗下系統(tǒng)都統(tǒng)一為蘋果)

  安卓系統(tǒng)

  Windows

  Linux

  其中,蘋果系統(tǒng)采用的是\r回車符CR代表換行,Winodws采用的是\r和\n都用,Linux采用的是\n換行符LF換行。所以,如果你在Linux上使用\n且運(yùn)行正常,那么到了蘋果上就可能無法識(shí)別只顯示一個(gè)方框里面顯示LF兩字。蘋果系統(tǒng)換Linux也是同理。而\r也是同理。

  所以這就是為什么你在Windows上的Minecraft使用\r換行時(shí)只會(huì)出現(xiàn)一個(gè)方框里面有CR兩字,這就是因?yàn)閃indows的Minecraft可能并不支持\r,只能使用\n,可能換到蘋果系統(tǒng)上就沒問題了,當(dāng)然由于MinecraftJAVA是使用JAVA編的,JAVA又是全平臺(tái),可能是JAVA并不支持\r吧,所以雖然可以選擇\r和\n,但最好還是選擇\n來換行。

  但是你以為這就完了嗎?如果你到百度百科上去搜索“轉(zhuǎn)義字符”,找到轉(zhuǎn)義字符詞條,那么你就會(huì)發(fā)現(xiàn)在計(jì)算機(jī)語言當(dāng)中,轉(zhuǎn)義字符的作用不止一點(diǎn):

  \a——響鈴(BEL)

  \b——退格(BS),將當(dāng)前位置移到前一列

  \f——換頁(FF),將當(dāng)前位置移到下頁開頭

  \n——換行(LF),將當(dāng)前位置移到下一行開頭

  \r——回車(CR),將當(dāng)前位置移到本行開頭

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

  \v——垂直制表(VT)

  \\——代表一個(gè)反斜線字符''\'

  \'——代表一個(gè)單引號(hào)(撇號(hào))字符

  \“——代表一個(gè)雙引號(hào)字符

  \?——代表一個(gè)問號(hào)

  \0——空字符(NUL)

  \ddd——1到3位八進(jìn)制數(shù)所代表的任意字符

  \xhh——十六進(jìn)制所代表的任意字符、

  而其中,除了\n、\r、\\、\“和\'(這個(gè)也可以用,只不過刪了\也是可以的)上面講過了或有同類的,剩下的其中\(zhòng)b、\f、\t在Minecraft中同樣也可以用,只不過和\r一樣,實(shí)際上游戲并不能識(shí)別它們只不過是JSON語法對(duì)了而已,實(shí)踐起來只會(huì)顯示方框里有BS、FF和HT而已。

  

  

  

  

  

  

  

  

  

  張三抱著一堆2147483647級(jí)鋒利的劍從刷物品房走了出來,看見王五正在拿著紙和筆專心的做筆記,旁邊還放著一臺(tái)正在工作的電腦。

  “奇怪了,王五兄不是最討厭做筆記了嗎,怎么今天像換了個(gè)人似的?!睆埲止局?。

  好奇心驅(qū)使著張三放下了手中的一堆劍,轉(zhuǎn)而走到正在專心寫筆記的王五后面。王五似乎并沒有注意到張三來到了他的后面,繼續(xù)在寫東西。

  在王五后面的張三定睛一看,發(fā)現(xiàn)王五的筆記上面寫滿了各種密密麻麻的單詞、數(shù)字,好像是什么計(jì)算機(jī)語言?!皼]想到王五竟然會(huì)對(duì)這種東西產(chǎn)生興趣?!睆埲?。

  突然間王五伸了一個(gè)懶腰,把在后面的張三下了一大跳。王五聽見后面有動(dòng)靜,轉(zhuǎn)頭一看:“唉,張三兄,你怎么在這里?”

  張三平靜了一下心情,說:“我這不是剛剛做完事情,出來看到你王五兄你今天竟然在學(xué)計(jì)算機(jī)語言,覺得稀奇嘛所以過來看一下?!?p>  說著張三指了指放在門口的那一堆附了魔的下界合金劍。

  王五看到張三這么說,不禁覺得好笑,回答道:“唉張三兄,你還是太高估我了,我那點(diǎn)連初中都沒上完的頭腦,指望著去學(xué)計(jì)算機(jī)語言?”

  “嗯?那么你寫的是什么東西?”張三聽王五這么一說頓時(shí)來了興趣。

  “額,這該怎么說呢......哦對(duì)了,”說著王五拿起一把下界合金劍,“比如這把劍,它附魔了2147483647級(jí)的鋒利對(duì)吧?你想知道為什么這個(gè)等級(jí)會(huì)超過32767嗎?”

  “額這個(gè)問題不是你最先......”

  “我后來加了幾個(gè)大佬的QQ,和他們仔細(xì)研究了好幾天,然后我又去某視頻平臺(tái)上看其他大佬制作的教程,還去看了MCBBS的相關(guān)文章,同時(shí)我還去了MinecraftWiki查找了一下文獻(xiàn),最終的結(jié)果沒有讓我失望,我找到了!”王五得意的說。

  “原來在Minecraft1.13版本Mojang把附魔的NBT標(biāo)簽的等級(jí)數(shù)字類型由short短整型改成了int長整形,自然而然附魔的等級(jí)上限就由32767上升到了2147483647!”

  “你說什么?”張三聽得一頭霧水,“這和你寫的又有什么關(guān)系?”

  “有很大的關(guān)系,”王五壓低了聲音,“你知道腐竹是怎么獲得這把劍的嗎?”

  “怎么獲得的?快說!”

  “用了指令!加上NBT!”

  “?”張三頭上的霧水更多了,“那然后呢?”

  “我在網(wǎng)上找到了一位大佬,他給出了如下指令?!闭f著王五打開了他的筆記本,并翻到了第一頁指了其中一行,“吶,就是這個(gè)?!?p>  張三拍散了頭上的霧水,然后把目光轉(zhuǎn)向了王五指著的那一行,只見上面寫著:

  /give @s netherite_sword{“Enchantments“:[{“l(fā)vl“:2147483647,“id“:“sharpness“}]}

 ?。?p>  張三頭上冒出了個(gè)大大的問號(hào):“就是這么簡單?”

  王五笑著說:“沒錯(cuò),而且這可以直接在聊天欄輸入并運(yùn)行?!?p>  張三雖然不知道為什么王五會(huì)笑,但他聽王五這么一說,趕緊打開了聊天欄,輸入了王五剛剛提供的那個(gè)指令,并回車:

  [未知的命令

  /give @s netherite_sword{“Enchantments“:[{“l(fā)vl“:2147483647,“id“:“sharpness“}]}<——此處]

  張三:?

  王五看張三一臉疑惑的樣子,笑得更加的猖狂了:“哦對(duì)了哈,張三兄?!?p>  張三以為王五又有什么重要的事情來講,打起了10倍的精神準(zhǔn)備迎接接下來的內(nèi)容,以免又是一頭霧水。

  “哪會(huì)那么簡單啊哈,你只是完成了第一步而已!接下來,你需要找到末地傳送門,注意是沒激活的!激活的就弄不了了!”王五強(qiáng)忍著笑意裝正經(jīng)說,“然后你需要將一把滿耐久的沒有附魔的下界合金劍丟進(jìn)下面的巖漿,靜靜等待5分鐘,這5分鐘千萬不要?jiǎng)?!到點(diǎn)了后你就需要激活傳送門,然后跳進(jìn)去,你就會(huì)被傳送到一個(gè)神秘的房間,這個(gè)房間里面放滿了神器!我們在管理員手中買到的只不過是最初級(jí)的而已,里面還有更加牛批的!”

  “真的?”張三現(xiàn)在恨不得立馬傳送到末地傳送門旁邊。

  “千真萬確,我們可是好哥們我咋會(huì)騙你呢?不信你可以現(xiàn)在就啟程?!?p>  張三聽王五這么一說,更加確認(rèn)了王五說的是真的,畢竟是好哥們嘛。于是他操起一把下界合金劍,就進(jìn)入了地獄門.......

  “哈哈哈哈哈哈哈哈哈哈哈哈哈哈,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈咳~?!?

按 “鍵盤左鍵←” 返回上一章  按 “鍵盤右鍵→” 進(jìn)入下一章  按 “空格鍵” 向下滾動(dòng)
目錄
目錄
設(shè)置
設(shè)置
書架
加入書架
書頁
返回書頁
指南