第七章 指令的格式與指令執(zhí)行的三要素
(本章的指令并不是原版真實存在的指令,而是作者瞎編的。)
在學(xué)習(xí)指令之前,你還得了解一下指令格式的語法,不然到時候看不懂格式別怪我。
Minecra官方的指令格式有六種術(shù)語、三種括號(基巖版是兩種)。一種是<>(安卓客戶端會亂碼,建議用網(wǎng)頁版或IOS客戶端,不然接下來你怎么看指令格式???),另一種是[],還有一種是()。具體的內(nèi)容如下:
純文本-照著寫即可(如/server info中的info參數(shù))
<參數(shù)描述>-必填,根據(jù)括號內(nèi)對參數(shù)的描述填寫(如/name <玩家>中的“玩家”參數(shù))
<參數(shù)描述|參數(shù)描述>-必填,選擇括號內(nèi)其中一項填寫,符號“|”在這里表示“或”的意思(如/drop <物品ID|方塊ID>中的“物品ID或方塊ID”參數(shù))
(第一項|第二項)-必填,選擇括號內(nèi)其中一項參數(shù)填寫(如/learn (math|physics)中的“math或physics”參數(shù))
[參數(shù)描述]-選填,根據(jù)括號內(nèi)對參數(shù)的描述填寫(如/set [坐標]中的“坐標”參數(shù))
[第一項|第二項]-選填,選擇括號內(nèi)其中一項填寫(如/find [item|entity]中的“item或entity”參數(shù))
在基巖版中,并沒有“(第一項|第二項)”這樣的指令格式,而是“<第一項|第二項>”。并且,基巖版的參數(shù)描述也有特定的格式:“描述內(nèi)容:值類型”。如“方塊坐標:Int”,在這邊Int就是參數(shù)填的是整數(shù)數(shù)值的意思(實際上Int這個值類型并不完全是這樣的,具體的內(nèi)容會在以后NBT的教學(xué)中講到)
需要注意:本書中文指令格式較為混亂,且并沒有完全按照Minecraft本身的指令格式,因此建議真的要查指令格式還是到Minecraft Wiki。至于為什么不完全按照Minecraft本身的指令格式,因為剛開始寫本書的時候沒怎么注意[doge]。
目前我已經(jīng)在改善本書的指令格式,現(xiàn)在的情況已經(jīng)好很多了。
本書采用的指令格式大體是這樣的:
純文本-同官方
<參數(shù)描述>-同官方,但部分舊章節(jié)會采用一些奇奇怪怪的括號,如“《》”和“〈〉”。
(第一項|第二項)-大部分章節(jié)還是采用類似基巖版的尖括號包裹。
<參數(shù)描述|參數(shù)描述>-同官方
[參數(shù)描述]-同官方
[第一項|第二項]-同官方
[參數(shù)描述|參數(shù)描述]-選填,根據(jù)括號內(nèi)其中一項對參數(shù)的描述填寫。
[<參數(shù)描述|參數(shù)描述>]-同『[參數(shù)描述|參數(shù)描述]』
[<第一項|第二項>]-同『[第一項|第二項]』
參數(shù)描述- Java版和基巖版混用
除了指令格式的語法外,你還得了解一下指令執(zhí)行時的三要素:執(zhí)行位置、執(zhí)行者、參數(shù)。
執(zhí)行位置——簡單來說就是指令執(zhí)行的位置,你可以通過一個問句來理解它:這條指令在哪里運行?
執(zhí)行者——就是執(zhí)行指令的東西,你也可以通過一個問句來理解它:執(zhí)行這條指令的人是誰?
參數(shù)——就是你給指令提供的參數(shù),你還是可以通過一個問句來理解它:執(zhí)行這條指令的人要對什么東西干什么事情?
?。ㄗⅲ褐噶畋举|(zhì)上并無對這三個東西有三要素之稱,這里只是為了方便大家理解給它們套了個頭銜)
這三要素有什么用呢?
如果你用過MCreator這個軟件來創(chuàng)建指令,你會發(fā)現(xiàn)創(chuàng)建指令后MCreator要求你寫一個指令運行時的流程(也就是游戲解析并運行指令的過程),同時游戲?qū)⒔o這個流程提供以下信息:
Entity -執(zhí)行指令的實體(對應(yīng)“執(zhí)行者”)
xyz -執(zhí)行指令的X、Y、Z坐標(對應(yīng)“執(zhí)行位置”)
World -執(zhí)行指令的維度(還是對應(yīng)“執(zhí)行位置”)
Cmdparams -提供的參數(shù)(對應(yīng)“參數(shù)”)
也就是說,一條指令執(zhí)行的時候,肯定會被提供以上信息。
其中『參數(shù)』我們得稍微講一下。
我們在序言中講解參數(shù)時是通過舉例的方式,并沒有給其下一個明確的定義,所以其實我們還是不知道參數(shù)究竟是什么。
所以參數(shù)究竟是什么呢?
參數(shù)(Parameter),又稱元素(Elements),是指一條指令中除指令開頭的單詞和前綴外,提供的其他信息。
比如在指令/tp @s ~~~~20 0 true中,前綴『/』和指令單詞tp(有些指令教程也叫做指令頭,反正怎么叫都可以,沒有一個固定稱謂)之外的『@s』目標選擇器,相對坐標『~~~』,旋轉(zhuǎn)角度『~20 0』和安全檢查模式『true』均為參數(shù)。
參數(shù)按照其作用,可以籠統(tǒng)地分為六類:
子命令——有些指令,比如scoreboard會有很多的作用,此時就需要子命令來將不同的作用區(qū)分開來。(為什么不叫子指令呢?)
位置(坐標)——指令執(zhí)行的地點,也就是上面的三要素之一,一般是一個坐標
目標——指令所操作的對象。如果對象是實體,一般用的是UUID、玩家名或目標選擇器;如果對象是方塊,一般用的是坐標;如果對象是其他的一些東西,一般就會用一些特殊的ID。
?。ㄗⅲ罕緯校J將UUID、玩家名和目標選擇器合并起來。所以后面如果你看到一個參數(shù)可以填寫目標選擇器,那就大概率也能填寫玩家名和UUID)
值——這東西無法很好的定義,因為在不同的指令中,值類型的參數(shù)的作用不一致,但大多數(shù)情況下的作用都是具體化對目標的操作。比如在『將玩家傳送至一個地點』的指令中,這個地點的坐標就是一個值類型的參數(shù)。當然你其實并不需要現(xiàn)在就將它理解得十分透徹,后面學(xué)習(xí)的過程中你慢慢就會懂了。
模式——對目標進行操作時,所采取的模式。比如傳送玩家的時候,你可以選擇是默認模式,還是開啟安全傳送模式。
NBT、JSON——一般位于指令的末尾,對目標進行更具體的選擇或進行一些更高級的操作。
一條指令大多數(shù)情況下可以填寫多個參數(shù)。參數(shù)與指令開頭的單詞還有其他參數(shù)之間在大多數(shù)情況下要有一個空格予以區(qū)分。例外情況是基巖版的相對坐標和目標選擇器,參數(shù)內(nèi)一般不會包含空格。
所以空格在指令中十分重要,千萬要記住了!
這就是本章的全部內(nèi)容。接下來我們將會步入正式的指令學(xué)習(xí)階段。