首頁 游戲

Minecraft指令手冊

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

Minecraft指令手冊 你好MC 2240 2020-08-13 10:18:28

  我們都知道在JSON里面可以使用text來輸入文本。

  而且我們也知道在基巖版顯示文本的地方是可以寫目標(biāo)選擇器的。

  那么有沒有什么辦法能不能幫助我們在JAVA版在JSON使用目標(biāo)選擇器呢?

  有!

  這就是:selector元素。

  selector元素屬于內(nèi)容類別。內(nèi)容元素能有什么作用?在Minecraft的JSON中,一個(gè)JSON要生效,必須要每個(gè)對象都至少有一個(gè)內(nèi)容元素,比如text就是內(nèi)容元素。

  那么selector該怎么用?

  很簡單,比如:

  /tellraw @a {“selector“:“@p“}

  這樣子寫,然后游戲就會根據(jù)元素內(nèi)的內(nèi)容來轉(zhuǎn)義,分析這個(gè)目標(biāo)選擇器,最終得出來這個(gè)目標(biāo)選擇器的意思:顯示最近的玩家。

  好了,然后游戲就要找到距離執(zhí)行地點(diǎn)最近的玩家,然后就向全服廣播:

  當(dāng)然,就算你不填目標(biāo)選擇器也可以,因?yàn)橛螒蛉匀话阉J(rèn)為是目標(biāo)選擇器,比如:

  /tellraw @a {“selector“:“我靠“}

  然后游戲就會尋找名為“我靠”的玩家,但實(shí)際上并沒有這個(gè)玩家。

  最后游戲找不到,干脆就不干了,直接給你顯示一個(gè)空空如也的消息。

  但如果真有叫做“我靠”的玩家,那么游戲就會正常顯示這個(gè)名叫“我靠”的玩家的名字。

  對了,還會顯示前后綴。

  當(dāng)然,selector還不高級,接下來我們來更高級一些:

  score(內(nèi)容類別)——記分板元素

  這個(gè)score可以顯示玩家的指定計(jì)分項(xiàng)分?jǐn)?shù),讓你的服務(wù)器更加的高級。

  score也很簡單,其格式大概是這個(gè)樣子的:

  {“score“:{“name“:“目標(biāo)選擇器“,“objective“:“計(jì)分項(xiàng)名“}}

 ?。ê僮髡?,你不是說大括號里不能套大括號嗎?怎么現(xiàn)在就出現(xiàn)了?)

  (額,凡事都有例外嘛)

  我相信各位都看得懂這個(gè)格式吧,現(xiàn)在我們舉個(gè)例子:

  /tellraw @a {“score“:{“name“:“@s“,“objective“:“綠寶石“}}

  這樣子,執(zhí)行后在場的所有玩家都會知道自己有多少綠寶石了。

  然鵝,name不光可以填目標(biāo)選擇器,還可以填*號!

  這個(gè)*號是什么作用呢?

  @s類似,也是顯示自己的分?jǐn)?shù),只不過為了準(zhǔn)確,還要在顯示前面加上“讀者”二字。

  為何?待會你就明白了。

  其實(shí)score不光是name和objevctive這兩個(gè)子元素,還有一個(gè)子元素:value。

  這個(gè)value填不填都沒關(guān)系,反正填了之后,這個(gè)objective就失效了,值就固定顯示這個(gè)value的值。神奇的是,這個(gè)value竟然支持?jǐn)?shù)字(不帶引號)和字符串。

  至于Mojang為什么要添加這個(gè)元素,可能是因?yàn)榉奖愫笃诰庉嫲伞?p>  對了,注意一下,一個(gè)對象里只能有一個(gè)內(nèi)容元素,所以你不可能在一個(gè)對象里同時(shí)寫上兩個(gè)text,不然游戲只會顯示其中一個(gè)元素。

  我們知道,游戲內(nèi)是可以選擇語言的,因?yàn)楦鱾€(gè)地方的語言都是不一樣的。Minecraft也不例外,里面有很多可選的語言,起碼可以滿足全球大部分人了。

  既然游戲都要這樣,那么出名的Minecraft服務(wù)器也要這樣,就算不支持那些奇怪的語言,起碼也要支持英文和中文繁體。

  那么我們自己開的服務(wù)器該怎么翻譯?

  很簡單:使用JSON里的translate元素就可以了。

  translate元素也是屬于內(nèi)容元素,但它和其他元素不一樣的是,它并不是完全固定的,而是會根據(jù)玩家選擇的語言來自動翻譯。

  看到這你可能會說:Minecraft還可以翻譯英文中文?

  其實(shí)并不是這樣的,實(shí)際上Minecraft沒有內(nèi)置的翻譯軟件,所以translate你只能填翻譯標(biāo)識符。

  什么是翻譯標(biāo)識符?

  翻譯標(biāo)識符可以指定游戲里的一個(gè)特定物品,比如“石頭”,它的標(biāo)識符是:

  block.minecraft.stone

  其中,block是它的類別,minecraft是它的命名空間,stone是它的id。

  把它放進(jìn)translate里:

  {“translate“:“block.minecraft.stone“}

  運(yùn)行。

  唉,輸出了一個(gè)石頭!

  這時(shí)候把游戲語言換成英文,再運(yùn)行一次。

  唉,輸出了一個(gè)Stone!

  你也可以改成其他的語言再嘗試一遍,或者是把stone換成其他方塊的id也可以,比如紅石塊(redstone_block)

  你也可以嘗試把block改成item,然后把id改成一個(gè)沒有方塊狀態(tài)的物品,比如弓(bow)。

  為什么要沒有方塊狀態(tài)的物品?

  很簡單,方塊物品id都一樣,那就節(jié)省節(jié)省,只在block里寫就行了,item就不用寫了。

  除了item,你還可以嘗試改成其他的東西,比如entity(實(shí)體)什么的。

  但是如果標(biāo)識符亂寫會怎么樣?

  這樣子游戲就翻譯不過來,找不到對應(yīng)的含義,干脆直接給你輸出原文了。

  對了,如果你想知道一個(gè)游戲中的物品的翻譯標(biāo)識符名,你可以去Minecraft WIKi該物品的詞條中使用“查找”輸入“翻譯”兩字,有大概率會跳出來搜索結(jié)果是一行叫做“翻譯關(guān)鍵字”,這就是該東西的翻譯標(biāo)識符了。

  如果你裝了mod,比如工業(yè)時(shí)代2,你就可以更深入的了解一下這個(gè)翻譯它到底是怎么翻譯的:

  1.使用WinRAR或者其他解壓軟件打開工業(yè)時(shí)代2的mod文件。

  2.打開assets

  這時(shí)候你就會發(fā)現(xiàn)這里面有兩個(gè)文件夾:ic2和minecraft

  這就是命名空間了,其中ic2就是ic2自個(gè)mod的命名空間。

  3.打開ic2

  這時(shí)候你就會發(fā)現(xiàn)這里存著這個(gè)mod的物品、方塊什么的。

  其中有一個(gè)文件夾它叫做lang_ic2,說中國話就是“語言ic2”。

  沒錯(cuò),這就是ic2語言翻譯存儲的地方。

  點(diǎn)進(jìn)去一看,有很多個(gè)語言文件。

  這時(shí)候你就可以上網(wǎng)查一下各個(gè)語言的英文縮寫,比如英文縮寫就是en,中文縮寫是zh。

  但如果你深入了解過語言的話,你就會知道語言還可以再劃分,比如英文由于覆蓋范圍廣,導(dǎo)致出現(xiàn)了加拿大版本、英國原版本、美國版本什么奇奇怪怪的版本,所以這些語言縮寫后面還有一個(gè)國家或地區(qū)的縮寫。

  其實(shí)我們不需要看英文,看中文就行了。

  我們發(fā)現(xiàn)中午翻譯有兩個(gè)文件:

  zh_cn

  zh_tw

  很明顯,cn那個(gè)就是大陸簡體,而tw就是臺灣繁體,且這縮寫還是臺灣其字的拼音第一個(gè)字符拼出來的。

  這里建議大家打開zh_cn的文件,這時(shí)候就會出現(xiàn)一大堆的翻譯標(biāo)識符了。

  可以發(fā)現(xiàn),這文件的每一行就是一個(gè)翻譯,格式都是:

  標(biāo)識符=翻譯語言

  而你可能也同時(shí)發(fā)現(xiàn),這標(biāo)識符竟然其實(shí)是沒有固定的格式的。

  也就是說,就算你再添加一行:

  nizhenben=我真笨

  然后去游戲里面運(yùn)行一下,那也是絲毫沒有問題的。

  這就說明什么?

  你可以照葫蘆畫瓢地自己寫一個(gè)mod,里面全是奇奇怪怪的翻譯,然后放到服務(wù)器一用,唉,立馬就高大上了起來,這下子你的服務(wù)器就可以開展跨國業(yè)務(wù)了!

  

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