1. 程式人生 > 遊戲資訊 >[我的世界]Minecraft Java版1.12指令進階講解 P2目標選擇器

[我的世界]Minecraft Java版1.12指令進階講解 P2目標選擇器

      這次為大家分享的是基於我的世界Java版1.12.2的高階指令目標選擇器的知識。如果你想在原版中實現高階多樣的效果,一定不要錯過此篇。

           什麼是目標選擇器?

      簡單來說,我們所使用的指令中大部分選擇的目標都是可以進行拓展的,原版中的如@e是選取所有實體,但我們有時並不需要。在其後面加上[],裡面填上內容(即引數),就可以實現篩選。


注意,這裡面所有的特殊符號如[],=,!等都為英文輸入法中的。


             目標選擇器引數

       team 即隊伍,用於選取scoreboard(計分板)命令中的分支team(隊伍)裡某個隊伍的玩家。

格式為@a[team=<隊伍名>],前面的@a可以替換,詳見上一篇專欄,下面的也以此類推,都用@a。

而建立隊伍的指令歸屬於scoreboard系列指令,那又是一篇高價指令了,內容很多,下次贅述。

據此,舉個例子,比如我已經建立了一個名為Red的隊伍,我想將所有在Red隊伍的玩家傳送到我這裡來,就直接輸入

/tp @a[team=Red] @s

       tag,即標籤,用於選取所有帶有某個特定標籤或所有沒有此標籤的目標。


格式為@a[tag=<標籤名>],這是正選帶有該標籤的玩家,也可以反選沒有該標籤的玩家,格式為@a[tag=!<標籤名>]

給予/刪除/列出標籤的指令也歸屬於scoreboard,這裡簡要介紹一下:

/scoreboard players tag <目標選擇器> <add/remove> <標籤名>

給予/刪除目標的一個標籤


/scoreboard players tag <目標選擇器> list

列出目標的所有標籤

◆標籤名隨意,可以是任意字母數字和漢字(Java1.12和基岩版可用)的組合。


據此,舉個例子,我想給我自己一個創造模式的標籤,然後讓有這個標籤的玩家模式改為創造,沒有的玩家改為生存。那麼只要依次輸入

/scoreboard players tag @s add 創造模式


/gamemode 1 @a[tag=創造模式]

/gamemode 0 @a[tag=!創造模式]

     name,即名字,用於選取名字為xx的實體,用法與tag相似,也可以加上!進行反選。

比如:/tp @a[name=TCD] @s 將名字是TCD的傳送到自己位置

或是/tp @a[name=!TCD] @s 將名字不是TCD的傳送到自己位置

     c=<數值>,用於選取距離自己最近的<數值>個實體,若該數值為負數,則是最遠。使用時應注意該選擇器沒有自己(如果是自己輸出的指令而不是命令方塊)。

比如我想將距離自己的其他玩家傳送到自己位置,若輸入/tp @a[c=1] @s就會原地tp自己,可以這樣寫/tp @a[name=!<自己名字>,c=1] @s

     m=<遊戲模式>,用於選取遊戲模式為xx的玩家,注意這裡面只能填英文id而非數字。可以進行反選。


     l=<較大數值>,lm=<較小數值>,用於選取等級在<較小數值>和<較大數值>之間的玩家,如果不寫lm只寫l是選取較大數值以下的所有玩家,反之是向上。

比如選取所有的1級~8級玩家@a[lm=1,l=8],選取所有的等級大於13的玩家@a[lm=14],選取所有的等級小於等於5級的玩家@a[l=5]

     rym=<較小數值1>,ry=<較大數值1>,選取水平視角朝向在2個數值之間的玩家,若是rxm和rx則是垂直朝向,具體用法與l,lm(等級)相似。一般作用於高階的指向型效果,如向前閃現,平常用處不大。


     r=<較大數值>,rm=<較小數值>,選取命令執行的位置附近<較小數值>到<較大數值>範圍內的實體,用法也與l,lm相似,比如:

/tp @a[r=3] @s   傳送距離我3格以內的所有玩家到我的位置


     x=<數值>,y=<數值>,z=<數值>,用於設定指令執行的中心點,若沒有填寫則預設為指令的執行位置,舉個例子幫助理解:


我在座標(65,75,83)的位置放置了命令方塊,無限重複執行指令,讓在(80,75,90)位置附近3格內的玩家傳送到命令方塊這裡來,那麼就只要在命令方塊裡輸入

/tp @a[x=80,y=75,z=90,r=3] 65 75 83


而如果只填/tp @a[r=3] 65 75 83就會變成傳送所有命令方塊附近3格內的玩家過來了。

      dx=<數值>,dy=<數值>,dz=<數值>,與上一個相似,但這個是向x(或y或z)正方向的幾格,這幾格內的實體都會被選取,若數值為負數,就是負方向,比如

/tp @a[dx=5] @s就是把所有從我這一點向南5格內的玩家都傳送到我這裡。


另外,向外延伸的及格是從命令方塊外圍開始的,也就是說上面的那個指令實際生效的範圍是6格(命令方塊本身和延伸的5格)。

      type,即型別,用於選取minecraft中預設的某個生物種類,如zombie(殭屍),armor_stand(盔甲架)等等。

格式為@e[type=<實體種類>],與上面的tag一樣,<實體種類>前面加上!代表反選。

據此,舉個例子,我想在我正上方2格位置召喚出一個殭屍(該殭屍距離我最近),然後給它一個npc的標籤,之後殺死除了它以外的所有殭屍。那麼只要依次輸入

/summon zombie ~ ~2 ~


/scoreboard players tag @e[c=1] add npc

/kill @e[type=zombie,tag=!npc]

我的世界中的具體每個實體型別的英文id網上都有,很詳細,這裡就不再列出來了。另外,插一嘴, 盔甲架將是以後重要的經常使用的實體。

       score_<專案名>=<較大數值>,score_<專案名>_min=<較小數值>,選取分數為xx到xx間的實體,這個本次就不再展開了,因為涉及到scoreboard計分板,需要搭配計分板一起使用。下次講解計分板的時候再詳細闡述。

      補充說明,@r是隻能選取隨機玩家的,但當其後面加上[type=<型別>]的時候就能選取隨機的某型別實體。@a不能使用type。@p近似於@a[c=1]。@s是可以搭配任何引數的,其作用會在後面講解execute和function的時候凸顯出來。

       以後,我會逐漸把其餘的各塊高價的命令/命令組的知識分享給大家,這次講解的目標選擇器具有很大的輔助作用,幫助精確定位目標,可以多在遊戲中試驗試驗。

       如果覺得不錯,記得點贊支援一下~

來自:三個硬幣-叮