首頁 游戲

Minecraft指令手冊(cè)

第一百零四章 物品的顯示屬性

Minecraft指令手冊(cè) 你好MC 2042 2020-05-01 20:40:20

  在Minecraft中,每個(gè)物品都有自己的名字。比如『minecraft:diamond』這個(gè)物品就叫做『鉆石』、『minecraft:air』就叫做空氣......但物品的名字并不是一直都不變的,我們可以通過鐵砧來更改物品的顯示名稱,比如把『鉆石』更改為『煤炭』,把『空氣』更改為『黃金』.......

  但用鐵砧改名字十分麻煩,那有沒有一種方法,能夠通過指令更改物品的名稱呢?

  在Java版中,是有的。這種方法就是:指定或修改物品的顯示屬性。

  什么是物品的顯示屬性?我們知道,一個(gè)物品有自己的名稱,自己的圖標(biāo)(方塊類物品除外),還有這個(gè)物品顯示出來的信息。比如這把鉆石劍,它就具有如下的顯示屬性:

  [圖標(biāo)]——鉆石劍的圖標(biāo),是一把藍(lán)色的劍

  鉆石劍——鉆石劍的名稱

  在主手時(shí):——這個(gè)和下面這些都是該物品的信息

  7 攻擊傷害

  1.6 攻擊速度

  minecraft:diamond_sword ——這個(gè)和下面的是打開高級(jí)提示框后才會(huì)顯示的信息

  NBT : 1個(gè)標(biāo)簽

 ?。ㄅ鋱D:104-1)

  那我們?cè)撊绾沃付ɑ蛐薷奈锲返娘@示屬性呢?很簡(jiǎn)單,通過物品的NBT標(biāo)簽來修改。

  物品的display標(biāo)簽,是一個(gè)復(fù)合標(biāo)簽,用來自定義該物品的顯示屬性。大部分物品并沒有這個(gè)標(biāo)簽,因?yàn)閷?duì)于游戲來說顯示屬性弄個(gè)默認(rèn)值就好。

  display這個(gè)復(fù)合標(biāo)簽內(nèi),有兩到三個(gè)標(biāo)簽:

  color(Int整形)——這個(gè)標(biāo)簽僅僅對(duì)皮革盔甲才有用,它可以指定皮革盔甲是什么顏色。

  Name(文本)——該標(biāo)簽對(duì)任何物品都管用,它可以自定義該物品的名稱。這東西必須要使用JSON文本。在Java1.13以下版本中,可直接使用普通文本,但無法使用JSON文本。

  Lore(文本列表)——該標(biāo)簽對(duì)任何物品都管用,它可以自定義該物品的描述。列表中的文本必須要使用JSON文本。在Java1.14以下版本中,可直接使用普通文本,但無法使用JSON文本

  看起來還是很簡(jiǎn)單的,讓我們?cè)囋嚹懿荒塬@得一個(gè)名為『這不是鉆石』的鉆石:

  /give @s minecraft:diamond 1 0 {display:{Name:“這不是鉆石“}}

  \\適用于Java1.8~1.12.2\\

  /give @s minecraft:diamond{display:{Name:“\“這不是鉆石\““}}

  \\適用于Java1.13~今\\

  /give @s minecraft:diamond{display:{Name:'“這不是鉆石“'}}

  \\適用于Java1.14~今\\

  上面給出了三條指令。這三條指令所適用的版本范圍各有所不同,但功能都是一樣的:會(huì)給你一個(gè)名叫『這不是鉆石』的鉆石。

  值得注意的是,對(duì)于Java1.13及以上版本來說,Name的值雖然說『必須是一個(gè)JSON文本』,但如果你嘗試下面的指令:

  /give @s minecraft:diamond{display:{Name:“111“}}

  這將會(huì)給你一個(gè)名叫『111』的鉆石。注意!『111』在這并未使用JSON文本,但游戲成功識(shí)別了它。這是怎么一回事?

  其實(shí)不止Name標(biāo)簽,在Minecraft Java版中任意必須使用JSON文本的地方,都具有類似的特性:當(dāng)使用阿拉伯?dāng)?shù)字時(shí),可不使用JSON文本。不信?試一試下面的指令:

  /tellraw @s 114514

  你會(huì)發(fā)現(xiàn)你正常收到了『114514』這條消息,游戲并未報(bào)錯(cuò)。對(duì)了,基巖版則沒有類似的特性,所以如果你在基巖版運(yùn)行上面的指令還是會(huì)報(bào)錯(cuò)的。

  回到正題。既然Name標(biāo)簽我們會(huì)使用了,那Lore標(biāo)簽?zāi)兀?p>  也一樣簡(jiǎn)單。比如我們要獲取一個(gè)描述為『Never Gonna Give You Up』的13號(hào)唱片,只需要:

  /give @s record_13 1 0 {display:{Lore:[“Never Gonna Give You Up“]}}

  \\適用于Java1.8~1.12.2\\

  /give @s music_disc_13{display:{Lore:[“Never Gonna Give You Up“]}}

  \\適用于Java1.13.x\\

  /give @s music_disc_13{display:{Lore:[“\“Never Gonna Give You Up\““]}}

  \\適用于Java1.14~今\\

  /give @s music_disc_13{display:{Lore:['“Never Gonna Give You Up“']}}

  \\適用于Java1.14~今\\

  獲取到后,你會(huì)發(fā)現(xiàn)物品的描述并不是白色的文字,而是紫色的文字。在Java1.14以下版本中,由于Lore無法使用JSON文本,自然也就改不了顏色(除非你有辦法在NBT中使用§)。但在Java1.14及以上版本中,我們就可以試一試改下顏色:

  /give @s music_disc_13{display:{Lore:['{“text“:“Never Gonna Give You Up“,“color“:“red“}']}}

  上述指令將會(huì)給你一個(gè)帶有紅色『Never Gonna Give You Up』描述的物品。

  Lore作為一個(gè)文本列表,我們這么用還是太屈才了。讓我們?cè)囋嚢选篘ever Gonna Give You Up』拆開:

  {Lore:['“Never“','“Gonna“','“Give“','“You“','“Up“']}

  \\這是Java1.14及以上版本的例子\\

  然后放入指令中運(yùn)行,你就會(huì)發(fā)現(xiàn)你獲得了一個(gè)帶有如下描述的13號(hào)唱片:

  Never

  Gonna

  Give

  You

  Up

  如你所見,Lore列表內(nèi)的每一個(gè)元素,都代表了一行文本。

  這就是Name和Lore的使用方法。那color標(biāo)簽,又該如何使用?

  color標(biāo)簽的數(shù)據(jù)類型是Int整形,也就是一個(gè)整數(shù),并不是一個(gè)字符串。也就是說,我們并不能使用red、yellow之類的顏色I(xiàn)D,也不能使用RGB或16進(jìn)制顏色代碼。那這個(gè)color到底該怎么使用?

  color的值要填寫的是顏色值。這個(gè)顏色值本質(zhì)上是基于顏色的RGB算出來的,具體公式如下:

  R×65536+G×256+B×1

  R······Red紅色值,0~255

  G······Green綠色值,0~255

  B······Blue藍(lán)色值,0~255

  舉個(gè)例子。標(biāo)準(zhǔn)黃色的RGB值為(255,255,0),我們就可以通過上述公式算出標(biāo)準(zhǔn)黃色的顏色值為:

  255×65536+255×256=16776960

  讓我們?cè)囈辉囘@個(gè)值正不正確:

  /give @s minecraft:leather_helmet 1 0 {display:{color:16776960}}

  \\Java1.13之前\\

  /give @s minecraft:leather_helmet{display:{color:16776960}}

  \\Java1.13及之后\\

  然后我們就獲得了一個(gè)顏色為(#FFFF00)的黃色皮革帽子。其中,#FFFF00正是標(biāo)準(zhǔn)黃色的16進(jìn)制顏色代碼。

  到這里,物品的顯示屬性,也就是display標(biāo)簽就講完了,但這不代表本章到此結(jié)束。

  如果我們不想要顯示某些東西該怎么辦?

  Mojang給了我們一個(gè)標(biāo)簽可以用來指定隱藏物品的哪些信息:

  HideFlags(Int整形)

  HideFlags的使用方式和上面的color有異曲同工之妙。和color類似,HideFlags的值是『信息值』(這名字隨便取的),你需要通過以下信息加上具體情況來計(jì)算出它的值:

  1——附魔信息,對(duì)應(yīng)Enchantments(ench)標(biāo)簽

  2——屬性修飾符信息,對(duì)應(yīng)AttributeModifiers標(biāo)簽

  4——無法損壞信息,對(duì)應(yīng)Unbreakable標(biāo)簽

  8——能夠破壞的方塊信息,對(duì)應(yīng)CanDestroy標(biāo)簽

  16——能夠放在哪些方塊上的信息,對(duì)應(yīng)CanPlaceOn標(biāo)簽

  32——其他大部分信息(包括藥水效果、魔咒信息[StoredEnchantments標(biāo)簽]、成書的版本和作者信息[generation和author標(biāo)簽]、煙花火箭的信息[Explosion和Fireworks標(biāo)簽]、地圖的信息)

  64——[1.16.2版本新增]皮革盔甲的顏色信息,對(duì)應(yīng)上面的color標(biāo)簽

  比如我們要隱藏皮革盔甲的顏色信息,只需要:

  /give @s minecraft:leather_helmet{display:{color:16776960},HideFlags:64}

  \\Java1.16.2及之后\\

  然后你就會(huì)驚喜的發(fā)現(xiàn),相比之前的那個(gè)黃色帽子,這個(gè)新的黃色帽子沒有了顏色信息。

  但如果我們還要隱藏掉附魔信息該怎么辦?

  很簡(jiǎn)單,加起來就可以了:

  /give @s minecraft:leather_helmet{display:{color:16776960},Enchantments:[{id:“protection“,lvl:255}],HideFlags:65}

  \\Java1.16.2及之后\\

  運(yùn)行上述指令,你將會(huì)獲得一個(gè)附魔有保護(hù)255級(jí)的黃色帽子,但這個(gè)帽子并不會(huì)顯示自己的顏色和附魔信息,除非你用的版本低于1.16.2才會(huì)顯示出來顏色信息。

  不難發(fā)現(xiàn),上面的HideFlags標(biāo)簽的值為65,是將64和1相加得到的。同理,如果你把上面表格的所有信息對(duì)應(yīng)的值都加起來,得到的127這個(gè)值就代表所有信息,將其作為HideFlags的值就可以隱藏掉物品的所有信息。

  這就是本章的全部?jī)?nèi)容。

  附錄①:本章相關(guān)歷史

  Java

  1.8——加入了HideFlags標(biāo)簽和能夠用來自定義顯示屬性的display標(biāo)簽。

  1.13——Name標(biāo)簽現(xiàn)在必須使用JSON文本。原本用來翻譯用的LocName標(biāo)簽被合并到了Name標(biāo)簽里。

  1.14——Lore標(biāo)簽現(xiàn)在必須使用JSON文本。

  1.16.2——為皮革盔甲的顏色信息加入了64(Flag 64)信息值。

  附錄②:LocName標(biāo)簽用法

  和JSON文本的translate組件一樣,LocName標(biāo)簽在Java1.13以下版本用于物品名稱的翻譯。比如:

  /give @s diamond 1 0 {display:{LocName:“item.compass.name“}}

  \\Java1.13以下版本\\

  這將會(huì)給你一個(gè)叫做『指南針』的鉆石。如果你把游戲切換成英文,那么這個(gè)鉆石的名稱也會(huì)變成『Compass』(指南針的英文)。在上面的指令中,『item.compass.name』是『指南針』這個(gè)物品名稱的本地化鍵名。

  雖然我們還未接觸到Java版的translate組件,但其實(shí)Java版JSON的translate組件和基巖版的translate組件的用法幾乎一模一樣。

  ......

  ......

  ......

  ......

  張三又一次大老遠(yuǎn)的從主城跑了回來。

  『嘿,李四,你看這個(gè)附了魔的蘋果!』

  李四很好奇:『附了什么魔?』

  『你自己看』

  張三把蘋果丟給了李四。

  『這沒寫?。俊?p>  張三從李四的手中拿回蘋果,然后說道:『我也不知道。但據(jù)某位管理說,誰被這個(gè)蘋果打到,就會(huì)獲得無限時(shí)長的最高等級(jí)幸運(yùn)效果?!?p>  『真的?快打我一下試試!』

  『那你待會(huì)也要打我一下,不能夠你自己獨(dú)享』

  『OK,畢竟咱倆可是兄弟』

  『準(zhǔn)備好了嗎?3——2——1——』

  李四被張三用蘋果殺死了

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