2016年12月19日 星期一

Minecraft指令(一)

一、    指令的使用方法
  在客戶端中,指令由Minecraft的聊天視窗中輸入,藉由按下「T」鍵(預設值)或「/」鍵叫出聊天視窗,而使用「/」鍵同時也會輸入指令必備的前綴斜線。在輸入指令時按下「Tab」鍵會循環可用的指令或參數。
  指令也可以在多人伺服器的伺服端輸入,但是不需要加入前綴斜線。指令方塊中的指令通常會加入前綴斜線,但是非必要。指令方塊中的某些指令可能還會要求加入原本可選擇的參數,通常是玩家的名字。
大多數指令只能在以下狀況有效:
1.     在多人伺服器遊戲中,由管理員輸入或指令方塊執行。
2.     在其他的多人模式遊戲中,由開啟區域網並允許作弊的玩家,或主持多人伺服器的玩家輸入。
3.     在單人模式中,創造世界時允許作弊。
4.     有些指令在不允許作弊的生存模式中仍然可用。
  若在單人遊戲中發現地圖不允許作弊,仍可以藉由公開目前的遊戲至區域網(Esc「公開至局域網」「允許作弊:開啟」「建立局域網世界」)而暫時允許作弊。不必真的在區域網上或讓其他玩家加入。這並不是永久的,但它可以允許使用指令直到離開世界。使用指令所改變的東西都會被存檔。可以在再次開啟遊戲時重複步驟,但當公開至區域網時遊戲便無法暫停,所以在打開遊戲目錄時最好找個安全的地方。可以重新載入世界來取消公開至區域網。
  若在指令方塊中執行測試類指令(例如/testfor),指令方塊會將測試結果以紅石訊號形式輸出到相連的紅石比較器中。然而在1.9及以後的版本裡,指令方塊加入「條件」選項後,您可以選擇開啟它然後直接觸發該指令方塊所指向的後續的指令方塊,當然,您仍然可以用紅石比較器。

二、    波浪號
  很多指令可以使用波浪號(~)來指定相對座標。在波浪號後方的數字是偏移量而不是絕對座標。偏移量可以為正或負。偏移量零(~0)可以簡寫為單一的波浪號(~)。
範例:
/tp 21 94 -65將會傳送玩家到座標(21,94,-65),而/tp ~3 ~ ~-3傳送玩家往正x軸移動3格,保持原本高度,並往負z軸移動3格。
  通常絕對座標和相對座標可以混合使用,例如/tp ~ 100 ~會保持玩家的x軸和z軸座標,但是傳送玩家到絕對高度100
  偏移量的基準點由指令決定。舉例來說,/tp的偏移是從起始位置來算。其他常見的偏移量包括指令的執行位置或者從另一個坐標由該指令指定。
  偏移量的數字如果是正數,可以加上加號(+),也可以不加。



三、    目標選擇器
  目標選擇器在指令中用來選擇符合條件的目標,以在目標上執行指令。

1.     目標選擇器變數
變數
功能
説明
@p
選擇最近的玩家
如果有多個最近的玩家,他們與自己距離完全相同,則會選擇其中最常進入伺服器的玩家。
@r
選擇隨機玩家
利用type參數可以用來選擇非玩家的實體。
@a
選擇所有玩家

@e
選擇所有實體

@s
選擇執行指令的實體
如果指令執行者是指令方塊或是多人伺服器的伺服器控制台,將會提示錯誤訊息「目標選擇器 '@s' 沒有找到任何實體」,因為它們並非實體。

2.     目標選擇器參數
參數
功能
説明
xyz
座標
[x=X,y=Y,z=Z]:選擇基於此準確位置一定距離的目標。結合選擇半徑以選擇在特定位置的唯一目標。座標必須準確,波浪號不可以用於此參數座標選擇器。
rrm
半徑(最大、最小)
[r=R]:只選擇以指令的執行處為中心,半徑小於R的區塊裡的目標。
[rm=RM]:只選擇以指令的執行處為中心,半徑大於RM的區塊裡的目標。
如果座標(參見上一段)和半徑都已被定義,指令會以定義的座標為中心執行指令。如果使用極遠的座標為中心以及極大的半徑,如此可以模擬出一個近於線性的邊緣,用以指定目標。
m
遊戲模式
[m=M]:只選擇目標與指定的遊戲模式。M允許值為:
-1:所有的遊戲模式,0:生存模式,1:創造模式,2:冒險模式,3:旁觀者模式
1.9及以後的版本裡,可以使用[m=!M],還可以使用以下值:
ssurvival:生存模式,ccreative:創造模式,aadventure:冒險模式,spspectator:旁觀者模式
c
數量
[c=C]:只選擇指定數量的目標。通常按與指令執行者的距離排序。
當使用@p@r兩種變數時,此參數被預設為1,因此更大的數值會增加回傳的最近或隨機的目標。當使用@a@e兩種變數時,此參數只會回傳最近的目標。
如果有多名距離最近的玩家,距離完全相同,那麼玩家會藉由玩家最近一次加入伺服器的時間來選擇。舉例來說,如果距離完全相同,@a[c=1]會選擇進入伺服器時間最久的玩家而@e[type=creeper,c=3]會選擇生成最久的三隻苦力怕。
當輸入的值為負值時,目標的順序會被反轉。舉例來說,@p[c=-3]會回傳三個最遠的目標,而且,如果所有目標距離都一樣遠,@e[c=-3]會選擇三個剛生成的目標。
llm
經驗等級(最大、最小)
[l=L]:只選擇不超過L經驗等級的目標。
[lm=LM]:只選擇不低於LM經驗等級的目標。
score_NAMEscore_NAME_min
最高分數、最低分數
[score_NAME=SCORE]:只選擇目標計分板NAME的分數的沒有超過SCORE的目標。
[score_NAME_min=SCOREMIN]:只選擇目標計分板NAME的分數的不低於SCOREMIN的目標。
例如,@a[score_points_min=30,score_points=39]將選擇目標計分板points的分數的不低於30 ,且不高於39的目標。
team
隊伍名稱
[team=TEAM]:只選擇隊伍TEAM的目標。
[team=!TEAM]:只選擇不是隊伍TEAM的目標。
[team=]:只選擇不在任何隊伍的目標。
[team=!]:只選擇存在於任何隊伍的目標
name
實體名稱
[name=NAME]:只選擇名字為NAME的目標。
[name=!NAME]:只選擇名字不是NAME的目標。
dxdydz
體積尺寸
[dx=DX,dy=DY,dz=DZ]:只選擇位於一定體積內部的目標,體積定義為從執行指令的地方開始,向正x方向延伸DX格,向正y方向延伸DY格,並向正z方向延伸DZ格。如果最初的座標已經使用xyz參數定義,則它會取代指令的執行位置,成為體積選擇參數的計算位置。(dxdydz仍然用來指定與座標的距離;它們不是指定一個新的座標)。
玩家可以結合通過半徑和通過體積選擇目標,此指令將會選擇重疊的區塊。(從西北下角算起在一定的半徑以內,且不超過定義的體積)。
rxrxm
垂直旋轉(最大、最小)
[rx=RX]:只選擇最大不超過垂直旋轉值RX的唯一目標。
[rxm=RXM]:只選擇最小不低於垂直旋轉值RXM的唯一目標。
垂直旋轉值從-90.0面對正上方到90.0面對正下方(因此垂直旋轉值增加時會旋轉向下)。
將垂直旋轉值無條件捨去法取到整數(69.8 69-1.1 -2)得到數值x
RX = 0,則只選擇x = 0的目標
RX 0,則選擇0 x RX的目標
RX 0,則選擇x 0RX x -90的目標
RXM = 0,則選擇所有的目標,無視其垂直旋轉值
RXM 0,則選擇x 090 x RXM的目標
RXM 0,則選擇0 x RXM的目標
ryrym
水平旋轉(最大、最小)
[ry=RY]:只選擇與最大不超過水平旋轉值RY的唯一目標。
[rym=RYM]:只選擇與最小不低於水平旋轉值RYM的唯一目標。
水平旋轉值從-180.0(面對正北方),到-90.0(面對正東方),到0.0(面對正南方),到179.9(正北方偏西),旋轉回-180.0(因此水平旋轉值增加時會向右旋轉,或者從上方看來是順時針方向旋轉)。
將水平旋轉值無條件捨去法取到整數得到數值y
RY = 0,則只選擇y = 0的目標
RY 0,則選擇0 y RY的目標
RY 0,則選中y 0RY y -180的目標
RYM = 0,則選擇所有的目標,無視其水平旋轉值
RYM 0,則選擇y 090 y RYM的目標
RYM 0,則選擇0 y RYM的目標
type
實體類型
[type=TYPE]:只選擇特定的實體類型的目標。
[type=!TYPE]:只選擇不是特定的實體類型的目標。
TYPE必須是個用來內部判定不同種類實體的實體ID(舉例來說,creeper指定苦力怕,minecart指定一般的礦車,tnt指定TNT等等)。實體ID必須區別大小寫(1.11以後不需要了),且無效的實體ID會造成指令失敗。
當與@r一起使用時,原本用來選擇玩家的指令也可以被用來選擇其它實體。
tag
實體標籤
[tag=TAG]:只選擇帶有標籤TAG的目標
[tag=!TAG]:只選擇不帶有標籤TAG的目標
[tag=]:只選擇不帶有標籤的目標
[tag=!]:只選擇帶有標籤的目標
  在使用目標選擇器之後,您可以隨意地使用參數來修改所要選擇的群組。當使用@a@e時,參數縮小所選的數量,從所有名單到特定的少數。當使用@p@r時,參數縮小所選的數量,從所有名單變成更小的群組來選擇最近或隨機的玩家。
  在目標選擇器變數之後增加參數 - 數值對做為以逗號分隔的列表,包含在方括號中:
    @<變數>[<參數>=<>,<參數>=<>,,<參數>=<>]
  括號、等號和逗號旁不能有空白鍵,只有逗號可以用來分隔參數 - 數值對。
  參數會區分大小寫,在1.11以前,不支持的參數會直接被忽略掉,舉例來說,/kill @e[type=Creeper,r=20]會殺死20方圓格以內的所有苦力怕,但是 /kill @e[Type=Creeper,r=20](「type」變成大寫)會殺死20方圓格以內的所有實體(包括玩家),因為參數不再有選擇苦力怕的限制。1.11後,若有不支持的參數,則會提示訊息「無效的目標選擇器參數<不支持的參數>」,而使指令失敗,例如上述的/kill @e[Type=Creeper,r=20](「type」變成大寫),不會有任何實體被殺死,因為參數Type是無效的,而提示錯誤訊息「無效的目標選擇器參數Type=Creeper」。
  如果最前面的四個參數值被簡化為只有數值而沒有參數,他們會被假定為,按照順序的xyzr。因此,下列兩個指令是相同的:
    /gamemode creative @a[x=10,y=20,z=30,r=4]
    /gamemode creative @a[10,20,30,4]
  但在1.11後,上述的指令不再能簡化為只有數值而沒有參數,如果簡化,則會提示訊息「無效的目標選擇器參數<不支持的參數>」。

四、    資料標籤
  資料標籤又稱數據標籤,是一段文字序列,使用屬性描述資料結構。指令中的資料標籤可以指定較複雜的玩家、實體和方塊數據。
  資料標籤由零個以上、用逗號分隔的的屬性組成,且用大括弧界定。每個屬性包括屬性名稱和屬性值,用冒號分開。但是有些屬性值可能又包括了屬性,因此數據標籤可以用來描述層次結構。
範例:
{x:-22,Text4:"{\"text\":\"\"}",y:74,Text3:"{\"text\":\"Hello World!\"}",z:-548,Text2:"{\"text\":\"您好,世界!\"}",id:"minecraft:sign",Text1:"{\"text\":\"\"}"}
表示告示牌所含的屬性,第二行的字為「您好,世界!」,第三行的字為「Hello World!」。
  這些資料標籤所描述的資料結構和Minecraft地圖存檔中的資料結構是一樣的。指令會要求數據標籤要使用一樣的屬性名稱並區分大小寫。

1.     資料結構規範
對象
舉例
方塊
儲物箱、熔爐、指令方塊、生成蛋、告示牌...等等
物品
在物品欄中的物品包括附魔、自訂名稱...等等
物品實體
在地上的物品
生物
苦力怕、牛、村民...等等
彈射物
箭矢、火球、飛濺藥水...等等
交通工具
船、礦車...等等
動態方塊
引燃的TNT、正在掉落的沙、礫石
其他實體
煙火、繪畫和物品展示框
  定義的資料結構也要求正確種類的屬性值。

2.     數據標籤屬性値種類
種類
説明
位元組整數(Byte
介於-128127之間包含的整數。
短整數(Short
介於-32,76832,767之間包含的整數。
整數(Int
介於-2,147,483,6482,147,483,647之間包含的整數。
長整數(Long
介於-9,223,372,036,854,775,8089,223,372,036,854,775,807之間包含的整數。
單精度浮點數(Float
雙精度浮點數(Double
可以有浮點數的數字舉例來說:3.14159
單精度浮點數的正數範圍1.4 × 10-453.4028235 × 1038,負數範圍是-3.4028235 × 1038-1.4 × 10-45
雙精度浮點數的正數範圍4.9 × 10-3241.7976931348623157 × 10308,負數範圍是-1.7976931348623157 × 10308-4.9 × 10-324
字串(String
一串文字,可以自由選擇是否要加上雙引號。
如果字串包含逗號、中括號、大括號,一定要加上雙引號。如果字串裡面要包含雙引號,需在雙引號前加上反斜線。
例:"Call me \"Ishmael\""
序列(List
值的序列,用逗號分離並用中括號包含。不必每個值都用同一種類型—所需的類型由數據結構指定。.
例:[3.2,64,129.5]
整數陣列(Int Array
-2,147,483,6482,147,483,647的整數的序列,用逗號分離並用方括號包含。
複合標籤Compound
屬性值對的序列,用逗號分離並用大括號包含。
例:{X:3,Y:64,Z:129}
每個資料標籤的內容本身就是一種複合標籤。
  位元組陣列(Byte Array)類型無法用於指令
  有些指令可能會要求數字的類型,以在數字後面加上一個字母來表示。例如,1b表示位元組整數12s表示短整數23L表示長整數34.5f表示單精度浮點數4.56.7d表示雙精度浮點數6.7
  如果用/testfor/testforblock/clear等指令來尋找相符的資料標籤,它們只會檢查那些實體、方塊、或物品是否存在此標籤。這表示當找到符合的實體、方塊、或物品時,它們可能同時還擁有其他屬性。這在資料標籤序列中也適用,序列的順序可以被調換,只要每個要求的元素都在序列中,那麼即使有額外的元素存在,它也會符合條件。
範例:
/testforblock ~ ~1 ~ minecraft:hopper 2 {Items:[{Slot:0b,id:"minecraft:cobblestone",Damage:0s,Count:2b}]}
測試上方一格的漏斗是否輸出向北方,並檢查其第一格欄位是否有2個鵝卵石。當被測試的漏斗符合上述所有條件時,/testforblock的指令執行成功。但當測試的漏斗不但符合上述所有條件,並於第二格欄位有64個玻璃時,指令依然會執行成功。這是因為指令只測試其輸出方向與第一格欄位,故不論其他格欄位的狀態如何,只要符合所有測試條件即可。
  資料結構的形式是 JSON 的一種形式。
若要繼續閱讀,請到「Minecraft指令(」。

沒有留言:

張貼留言