首頁 游戲

Minecraft指令手冊

第八十九章 ride-騎乘

Minecraft指令手冊 你好MC 6788 2020-03-15 00:11:11

  (該章節(jié)已于2022年7月25日重寫,原章節(jié)為『戰(zhàn)利品表(戰(zhàn)利品表下)(/loot 下)』)

  我們知道,在Minecraft中,玩家可以騎上馬,骷髏可以騎上蜘蛛,僵尸可以騎上雞......但不管怎樣,我們都很難使用指令來控制實體的騎乘狀態(tài)。在Java版這尚且可以通過NBT做到,但在基巖版呢?基巖版可用不了NBT。

  好消息是,基巖版雖然用不了NBT,但Mojang卻給了我們一條指令:

  /ride

  作用:控制實體騎乘

  存在版本:基巖版1.16.100-今

  需要權(quán)限等級:基巖版-1

  需要作弊:是

  格式:

  /ride <騎手實體>...

  ... start_riding <坐騎實體>[傳送模式][騎乘建立要求]

  \\使得指定的騎手騎在指定的坐騎上\\

  ... stop_riding

  \\使得指定的騎手停止騎乘\\

  ... summon_ride <實體ID>[召喚要求][生成事件][實體名稱]

  \\給騎手召喚一個坐騎,讓騎手騎上去\\

  /ride <坐騎實體>...

  ... evict_riders

  \\使得指定的坐騎逐出它們的騎手\\

  ... summon_rider <實體ID>[生成事件][實體名稱]

  \\給坐騎召喚一個騎手,讓召喚出來的騎手騎在坐騎上\\

  通過/ride指令,你可以指定實體騎或被騎在某些實體身上。讓我們來試一試:

  /ride @s start_riding @r[type=horse]

  這條指令將會使你隨機騎在某一匹馬的身上。等等,@r不是用來隨機選擇玩家的嗎,怎么能夠拿來隨機選擇馬?

  @r確實是用來隨機選擇玩家的,但在除了Java1.13及以上版本之外,其他版本的@r都可以通過指定type參數(shù)來具體隨機指定種類的實體。在上面的例子中,由于我們指定了type參數(shù)為馬,所以@r[type=horse]在這邊就是隨機選擇一匹馬。

  運行上述指令后,你雖然騎在了馬身上,但同時也被傳送了,畢竟游戲總不可能讓你隔空騎馬吧?但有時候可能你并不想被傳走,而是想讓那匹馬自己過來,這時候該怎么辦?

  指定『傳送模式』參數(shù)。這個參數(shù)可以填寫兩個值:

  teleport_ride——將坐騎傳送至騎手

  teleport_rider——將騎手傳送至坐騎(默認)

  舉個例子:

  /ride @s start_riding @r[type=horse] teleport_ride

  這條指令將會隨機一匹馬傳送到你下面,然后讓你騎在它的身上。

  『騎乘建立要求』這個參數(shù)適用于當你指定多個騎手時的情況,它可以填寫兩個值:

  if_group_fits——當所有騎手都滿足騎乘要求時才會建立騎乘關系

  until_full——給每一個滿足騎乘要求的騎手建立騎乘關系(默認)

  舉個例子:

  /ride @e start_riding @r[type=chicken] teleport_rider if_group_fits

  /ride @e start_riding @r[type=chicken] teleport_rider until_full

  假設現(xiàn)在有三個實體:你自己、一只成年僵尸、一只雞。運行第一條指令,將不會發(fā)生什么,因為你不可能騎在雞上面,雞也不能騎在自己上面,@e選中的三個騎手中有兩個不滿足要求,自然僵尸也不會騎上去。運行第二條指令,僵尸就會騎到雞的上面,因為雖然你和雞都不滿足要求,但僵尸滿足了要求,自然就和雞建立起了騎乘關系。(你干嘛~哎喲)

  這個僵尸還有用,讓我們把它從雞上弄下來:

  /ride @e[type=zombie] stop_riding

  summon_ride子命令可以直接生成一個實體作為坐騎,當然,如果騎手不符合被生成實體的騎乘要求,那么實體即使被召喚出來也不會被騎乘,僅僅只會單純生成出來。還是以剛才的條件,舉個例子:

  /ride @e[type=zombie] summon_ride minecraft:boat

  這將會給那位僵尸生成一艘船,然后讓它坐進去。

  『召喚要求』參數(shù)可以填寫三個值:

  skip_riders ——僅僅為沒有坐騎的騎手召喚坐騎

  no_ride_change ——僅僅為沒有坐騎且也沒有被騎乘的騎手召喚坐騎

  reassign_rides——為所有騎手召喚坐騎(默認)

  舉些例子:

  /ride @e summon_ride minecraft:boat skip_riders

  /ride @e summon_ride minecraft:boat no_ride_change

  /ride @e summon_ride minecraft:boat reassign_rides

  還是以上面的情況為條件。如果我們運行了第一條指令,游戲?qū)L試給玩家(你自己)、雞和船召喚坐騎,僵尸由于已經(jīng)有一個船作為坐騎所以不會嘗試召喚。

  如果我們運行第二條指令,游戲?qū)H給玩家和雞召喚船作為坐騎。僵尸由于已經(jīng)有坐騎、船由于被僵尸騎乘,所以兩者都不會嘗試召喚坐騎。

  如果我們運行第三條指令,游戲?qū)o所有實體都嘗試召喚坐騎。

  當然,不管你運行的是上面哪條指令,最終結(jié)果都是你和雞會坐上船,僵尸和僵尸的船不會發(fā)生變化。因為僵尸已經(jīng)有一個船作為坐騎,再召喚的話,僵尸的新坐騎必定會插入到僵尸和船之間,騎著船也被僵尸騎,也就是得滿足兩個實體的騎乘要求。而船肯定不會被船騎乘,也不會騎著一個船,所以僵尸和船都不會發(fā)生變化。

  evict_riders子命令可以使坐騎趕走自己的騎手:

  /ride @e evict_riders

  這將會使得所有實體趕走自己的騎手,也就是讓你、雞和僵尸都從船上下來。然后你就可以把船回收一下。

  summon_rider子命令可以為一個坐騎生成騎手,舉個例子:

  /ride @e[type=zombie] summon_rider minecraft:zombie

  仍然以上面的情況為條件,這條指令將會給那只僵尸生成一只新的僵尸,然后讓新的僵尸騎在老的僵尸上面。

  值得注意的是,由于成年僵尸也可以像幼年僵尸一樣騎在成年僵尸上,這就給了我們一條途徑在基巖版弄疊羅漢:

  /ride @e[type =zombie] summon_rider zombie minecraft:as_adult

  這將會給讓所有僵尸嘗試生成一個新的成年僵尸作為自己的騎手,然后.......你重復運行下試試?

  這就是/ride指令的基本用法,也就是本章的全部內(nèi)容。

  附表:/ride歷史

  基巖版

  1.16.100——加入了/ride

  ......

  ......

  ......

  ......

  ......

  ......

  ......

  ......

  ......

  自然生成的僵尸,有5%的概率生成出一只幼年僵尸。幼年僵尸不可被成年僵尸騎乘,因此當指令『/ride @e[type=zombie] summon_ride zombie』在目標選擇器『@e[type=zombie]』只選擇到一個僵尸的情況下生成出一只幼年僵尸時,指令將執(zhí)行失敗,返回的成功次數(shù)為0。

  也就是說,上述指令有5%的概率執(zhí)行失敗。我們可以造一個命令模塊驗證一下這5%的概率:

 ?。ㄖ噶畎姹荆夯鶐r版1.19,未開啟實驗性功能)

  A→B→C→D→E→F→G→

  A[重][無][紅]······ride @e[type=zombie,name=a] summon_ride zombie reassign_rides minecraft:entity_spawned

  B[鏈][限][始]······scoreboard players add count test 1

  C[鏈][無][始]······ride @e[type=zombie,name=a] stop_riding

  D[鏈][無][始]······execute @e[type=zombie,name=a]~~~ kill @e[type=zombie,r=6,name=!a]

  E[鏈][無][始]·······execute @e[type=zombie,name=a]~~~ kill @e[type=item]

  F[鏈][無][始]·······scoreboard players add times test 1

  G[鏈][無][始]······tp @e[type=zombie,name=a]-16 -60 0

  \\圖例\\

  [重]重復;[無]無條件;[紅]需要紅石;[脈]脈沖;[限]有條件的;[始]始終活動;[鏈]連鎖

  \\使用到的計分項\\

  test

  \\使用到的變量\\

  count(指令成功次數(shù))、times(指令執(zhí)行次數(shù))

  上面的模塊會不斷重復執(zhí)行『ride @e[type=zombie,name=a] summon_ride zombie reassign_rides minecraft:entity_spawned』這條指令,并計算出指令的成功次數(shù)和執(zhí)行次數(shù)。經(jīng)過運行,加上一點兒人工計算,就可以得到以下數(shù)據(jù):

  執(zhí)行1784次,成功1699次,差值85,失敗概率約4.76%

  執(zhí)行10000次,成功9488次,差值512,失敗概率約5.12%

  可見,概率差不多就是5%。

  為什么我要提這東西呢?

  /ride作為一個使得玩家能夠控制實體騎乘的指令,竟然能夠因為這個特性而用于概率計算中,挺令人驚訝的是不是?但其實,不管是對于指令還是隔壁紅石來說,能夠巧妙運用游戲本身的特性,就是進階玩家的基本要求。/ride只是一個例子,像這樣的例子還有很多。特別是在基巖版,由于指令自由度沒有Java版高,這迫使得許多基巖版的指令玩家大顯神通,通過許多看起來十分取巧的方法實現(xiàn)許多看似不可能實現(xiàn)的功能,這邊舉幾個例子:

 ?、偻ㄟ^玩家攻擊隱形盔甲架來實現(xiàn)點擊牌子、點擊村民NPC的效果

 ?、谕ㄟ^tell指令能夠使用目標選擇器的特性,在tell指令中塞入大量的@e目標選擇器并發(fā)送給指定玩家,來使得指定玩家游戲卡死以實現(xiàn)封禁的效果

  ③在Java1.13版本前,由于沒有能夠讀取NBT數(shù)據(jù)的指令,因此當時普遍的方法是通過選取具有特定NBT標簽值的實體并給予指定標簽或分數(shù),并使用窮舉的方法來實現(xiàn)讀取NBT數(shù)據(jù)的功能

 ?、芡ㄟ^testforblocks指令比較命令方塊,來實現(xiàn)檢測物品和玩家名是否一致

  所以,有時候當你想實現(xiàn)一個功能時卻不知道怎么實現(xiàn),不妨放開腦洞,想一想一些指令的特性,或許你就有了思路!

  本章到此完全為止。

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