天才一秒記住【UU看書】地址:www.uukanshu.co
(本章寫作時作者使用的是Java1122、1171和基岩1170)
這裡有一隻牛。
我們要用指令鎖定這頭牛。
但怎麼鎖定呢?
你在命令方塊介面可能見到過這段話:
用“p”來代表最近的玩家
用“r”來代表隨機玩家
用“a”來代表全部玩家
用“e”來代表全部實體
用“s”來代表執行實體
(這段話在Java新版本被移除了)
這段話中所講的東西,就是指令中常見的一個引數型別:目標選擇器。
目標選擇器,顧名思義就是選擇目標,而目標就是Minecraft中的“實體”。不懂實體是什麼?MinecraftWiki對實體的定義是:『包括在Minecraft中所有動態的、移動中的物件』。簡單且不嚴謹地來說,實體指的是非方塊的東西,比如玩家、生物等都是,還有例如掉落的方塊、點燃的TNT也是實體。
目標選擇器的本質就是透過一系列的引數指定篩選的條件,然後遊戲根據給出的條件對所有實體進行篩選,進而得到指令執行的作用目標。透過目標選擇器,我們可以指定指令執行時所產生的效果會在哪些實體上奏效。比如我們一開始就提到的kill指令,這條指令就可以使用目標選擇器來選擇哪些實體會被殺死。
實際上我們也可以不用目標選擇器指定目標,反而使用玩家名稱或實體UUID(UUID是一串很長且隨機生成的字串,每個Minecraft實體都有一個唯一的UUID以便遊戲區分)。但這兩個東西,一方面效率低下,另一方面不能自動化。下面就是一個例子:
假設此時有一名玩家,其名稱叫做“JIE灬揮刀亂砍”(如有同名,純屬巧合),玩家UUID是“5409be4a63334912ab5b58265ccbfe3c“。如果他想要用指令給自己一個鑽石塊,還不用目標選擇器指定,就要這麼寫:
giveJIE灬揮刀亂砍commandblock
或者是這樣寫
give5409be4a63334912ab5b58265ccbfe3ccommandblock
使用目標選擇器,只需要:
givescommandblock
其中,s就代指了執行該指令的實體。
命令方塊中的介紹有點過於簡單,還是得具體介紹一下:
p——代指距離執行地點最近的玩家,包括死亡玩家,如果沒有執行地點,預設是主世界座標0,0,0的地方,一般來說這種情況只會在伺服器控制檯執行指令時出現。關於座標會在下一章講到。
s——代指執行指令者,不管執行指令者是否已經死亡。如果執行指令者不是個實體,比如是個命令方塊,那麼將會什麼也不會發生。
a——代指所有玩家,包括已經死亡的玩家
r——隨機選擇一位玩家,包括已經死亡的玩家
e——代指所有實體,不包括已死亡實體
c——代指自己的吉祥物僅教育版
v——代指所有吉祥物僅教育版
initiator——代指正在與該NPC互動的玩家僅基岩版,不管這名玩家是否在互動時被殺死
最後一個initiator是一個比較新奇的東西,它無法用在除基岩版NPC以外的地方,關於基岩版的NPC以後的章節會講到。