首頁 游戲

Minecraft指令手冊

第一百零二章 物品組件

Minecraft指令手冊 你好MC 1151 2020-04-28 18:06:24

 ?。ù苏鹿?jié)已于2022年8月5日重寫)

  在第八章中,我們了解了/give指令的用法。讓我們回顧一下:

  --Java1.13以下

  /give <玩家:目標選擇器><物品id:字符串>[物品數(shù)量:整數(shù)][物品數(shù)據(jù)值:整數(shù)][NBT標簽]

  --Java1.13及以上

  /give <玩家:目標選擇器><物品英文id:字符串>[物品數(shù)量:整數(shù)]

  --基巖版

  /give <玩家:目標選擇器><物品id:字符串>[物品數(shù)量:整數(shù)][物品數(shù)據(jù)值:整數(shù)][附加標簽:JSON]

  值得注意的是,在基巖版的格式中,『物品數(shù)據(jù)值』參數(shù)后面竟然還有一個『附加標簽』參數(shù)。等等,附加『標簽』?難不成基巖版的指令中也可以使用NBT?

  你想多了,這當然不是NBT,而是一個基巖版獨有的非常類似于NBT但實際上是JSON的東西:

  物品組件(Item Components)

  物品組件這東西,正如其名,是可以用在物品上的JSON組件。由于使用的是JSON而不是SNBT的語法,因此物品組件的格式和Java版的NBT有些許不同。那到底有哪些物品組件?我們又該如何使用它們呢?

  截止基巖版1.19.10版本,一共有4個物品組件:

  can_place_on

  can_destroy

  item_lock

  keep_on_death

  雖然這里的JSON不是JSON文本,但這些組件和普通的原始JSON文本組件的用法仍然一樣。

  物品組件的值必須是一個JSON對象,也就是像下面這樣:

  {“物品組件“:{}}

  而具體這個JSON對象內能夠填寫哪些東西,得看使用的是什么物品組件。

  can_place_on和can_destroy這兩個物品組件十分類似,它們倆也是最年長的物品組件,你或許早已知道它們的用途:

  can_place_on——指定該『方塊類物品』可以被放置于哪些方塊上方

  can_destroy——指定該物品可以破壞哪些方塊

  這兩個物品組件適用于冒險模式。你應該知道,在基巖版中,處于冒險模式的玩家無法破壞或放置任何方塊。因此,妥善運用上述組件,就可以指定玩家能夠破壞或放置哪些方塊,使得玩家的自由度更高,也能夠弄出更多的玩法。

  那么它們到底該怎么使用呢?

  你需要在這兩個組件的值,也就是它們的JSON對象中,使用blocks組件(值類型為字符串列表),指定具體可以破壞或放置的方塊。比如:

  /give @s diamond_shovel 1 0 {“can_destroy“:{“blocks“:[“minecraft:dirt“,“minecraft:grass“]}}

  這將會給你一把在冒險模式中能夠破壞泥土和草方塊的鉆石鏟鏟。can_place_on組件的使用方法同理:

  /give @s diamond_block 1 0 {“can_place_on“:{“blocks“:[“minecraft:dirt“,“minecraft:grass“]}}

  這將會給你一塊在冒險模式中能夠放置于泥土和草方塊上方的鉆石塊。

  可惜的是,這兩個組件似乎無法指定具體的方塊數(shù)據(jù)值以及方塊狀態(tài),這就限制了這兩個組件的使用范圍。

  item_lock和keep_on_death這兩個組件是基巖版于1.16.100版本中新添加的。由于它們倆比較新,所以目前知道的人并不多。但這兩個的用處可不是一般的大:

  item_lock——將物品鎖定于背包或指定欄位中,使得物品無法被移除、丟棄或用于合成。

  keep_on_death——使得物品在死亡后不會掉落

  keep_on_death組件的使用方法非常簡單,你甚至不需要指定它的JSON對象內到底該填寫什么,只需要放一個空空如也的JSON對象作為它的值即可:

  /give @s diamond_shovel 1 0 {“minecraft:keep_on_death“:{}}

  這將會給你一把不會因死亡而掉落的鉆石鏟(不受游戲規(guī)則『死亡不掉落』是否開啟的影響),可以說十分簡單且有用。你應該注意到了,物品組件也具有命名空間。

  item_lock組件可以將物品鎖定在玩家的物品欄中。它具有兩個模式,需要使用mode組件在它的JSON對象中指定:

  lock_in_inventory——鎖定在玩家的背包中,玩家可以在背包中調整物品的位置,但物品無法被移除、丟棄或用于合成。

  lock_in_slot——鎖定在玩家的欄位中,玩家不可在背包中調整物品的位置,物品也無法被移除、丟棄或用于合成。

  舉個例子:

  /give @s apple 64 0 {“item_lock“:{“mode“:“l(fā)ock_in_inventory“}}

  這將會給你自己一組蘋果。你雖然可以使用它并調整它的位置,但這些蘋果無法被銷毀、丟棄或用于合成,你也無法將這些蘋果放到其他容器中。但如果你死亡的話,這些蘋果仍然會掉落。另外,這些蘋果也可以通過指令移除掉。

  再來一個例子:

  /replaceitem entity @a slot.hotbar 0 book 1 0 {“item_lock“:{“mode“:“l(fā)ock_in_slot“}}

  這將會把所有玩家的快捷欄第一格的物品替換為一本書,并且這本書會被鎖定在這個欄位中。當然,這本書也會在死亡時掉落。

  有趣的是,雖然你握不住空氣,但是下面這條指令卻可以強制讓你『握住空氣』:

  /replaceitem entity @s slot.hotbar 0 air 1 0 {“item_lock“:{“mode“:“l(fā)ock_in_slot“}}

  當你使用上述指令后,看起來你的快捷欄第一格只是變空了而已,也可以把其他物品放在這一格。但如果你把主手切換到這一格然后去嘗試挖或使用方塊,你就會發(fā)現(xiàn):你破壞不了也使用不了方塊了!破壞方塊后方塊會迅速恢復原來的狀態(tài),就像服務器保護一樣!只不過,當你把其他東西放到這一格時,使用這一格來挖或破壞方塊便不會出現(xiàn)什么問題。

  上面這些就是基巖版的JSON物品組件的全部內容。既然基巖版有類似NBT的物品組件,那么Java版有沒有類似這些功能的NBT標簽呢?

  答案當然是有的,只不過是部分有,也就是:

  can_place_on → CanPlaceOn

  can_destroy → CanDestroy

  在Java版中,CanPlaceOn和CanDestroy這兩個NBT標簽的用途和基巖版的對應物品組件一模一樣,唯一的區(qū)別就在于使用的方法。Java版的這兩個標簽的數(shù)據(jù)類型都是『文本列表』,而不是一個復合標簽。列表內就直接填寫能夠放置或破壞的方塊ID,比如:

  /give @s diamond_shovel{CanDestroy:[“minecraft:dirt“,“minecraft:grass_block“]} 1

  這條指令是剛才的『/give @s diamond_shovel 1 0 {“can_destroy“:{“blocks“:[“minecraft:dirt“,“minecraft:grass“]}}』在Java1.13及以上版本的寫法,它們具有同樣的作用:給你一把在冒險模式中能夠破壞泥土和草方塊的鉆石鏟鏟。CanPlaceOn的用法和CanDestroy標簽一樣,這里就不多講解了。

  這就是本章的全部內容。

  附錄①:物品組件歷史

  攜帶版/基巖版

  ?——加入了can_place_on和can_destroy兩個物品組件,但沒有用

  1.1.0——can_place_on和can_destroy兩個物品組件現(xiàn)在可正常使用

  1.16.100——加入了item_lock和keep_on_death兩個物品組件

  附錄②:類似物品組件的NBT標簽歷史

  Java版

  1.8——加入了CanPlaceOn和CanDestroy標簽

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