2016年12月19日 星期一

Minecraft指令(二)

五、    原始 JSON 文字
  /tellraw/title指令使用特殊的JSON格式來表示更複雜的文字。和上述NBT格式表示法相似,Strings(字串)、Objects (Compounds)(物件,或複合體)、Lists(表單)被用來表示原始文字的不同性質。
  分數與目標選擇器會在告示牌被放置或修改時或在一本完成的書被「翻開」(書寫後第一次打開)時解析成具體的值。它們在此之後不會更新,也不會在使用NBT編輯器修改已存在的告示牌或已被標明翻開的書時起作用。在resolution中告示牌無法換行,書不會轉到下一頁,而所有額外的文字都會消失。
  JSON的形式是支持以下大多是可選擇的元素的JSON物件:
l   基礎聊天組成物件
n   textString(字串)代表在聊天中直接出現的純文字。注意像是「@a」和「@p」的選擇器並不會轉譯成玩家名字;必須使用selector代替。「\n」是新的一行(Enter鍵)。
n   keybind:顯示用於執行特定操作的按鍵鍵位。例如,key.inventory會向玩家顯示打開物品欄的按鍵,若玩家使用預設設置,則會顯示「E」。
n   extra:外加物件的表單,使用和基礎物件相同的格式。
u  為使用和基礎物件相同格式的表單元素(遞歸的)。注意所有物件的性質都會被子物件所繼承,除了textextratranslatewithscore。這表示子物件會保留和這個物件一樣的格式和情況,除非子物件明確的覆蓋原物件。
n   color:用來渲染文字的顏色。有效值有:blackdark_bluedark_greendark_aqua(碧綠)、dark_reddark_purplegoldgraydark_graybluegreenaquaredlight_purpleyellowwhitereset(取消母對象使用的顏色效果)。技術上來說,bold(粗體)、underline(底線)、italic(斜體)、strikethrough(刪除線)和obfuscated(模糊處理)都是可接受的,不過最好還是使用下方提到的標籤格式。
n   bold:布林值(true/false - 是否將文字渲染為粗體,預設為false
n   underlined:布林值(true/false - 是否將文字渲染為加底線,預設為false
n   italic:布林值(true/false - 是否將文字渲染為斜體,預設為false
n   strikethrough:布林值(true/false - 是否將文字渲染為加上刪除線,預設為false
n   obfuscated:布林值(true/false - 是否將文字渲染為模糊處理,預設為false
n   insertion:當玩家按著Shift並點擊時,這個字串就會插入至聊天文字欄。它不會覆蓋原有的正在輸入的文字。



n   clickEvent:當玩家在文字上點擊時發生動作。
u  action:當點擊時所引發的動作。有效值為open_url(在玩家的預設瀏覽器中打開值為valueURL位址),run_command(在聊天欄輸入value,就好像是玩家自己輸入的一樣。這可以用來執行指令,但是如果玩家沒有所需的權限,或是指令過長,指令會失敗),change_page(只能用在完成的書,翻至第value頁如果該頁存在),和suggest_command(和run_command相似,但是指令文字只會出現在玩家的聊天輸入欄,並不會自動執行。不像insertion,這會直接取代原先就存在於聊天輸入欄中的內容)。
u  value:特定的action會使用到的URL位址、聊天內容或指令。注意,指令之前一定要加上「/」斜線。
n   hoverEvent:允許當玩家將滑鼠指針懸浮在文字之上時顯示提示。
u  action:提示所顯示的種類。有效值為show_text(顯示純JSON文字),show_item(顯示可能帶有NBT標籤的物品的提示工具),show_achievement(顯示用來描述成就或數據的標準格式。一般的成就是綠色的,最終的成就是深紫色的,數據名稱是灰色的。除此之外,還有成就的描述),和show_entity(顯示實體的名字,或可能是它的種類、和它的UUID)。
u  value:這個標籤的格式取決於action(動作)。注意,show_text是唯一支持物體當作值的動作;其他動作的值都是字串,所以必須用引號包含。
Ø  show_text:可以是純字串,或是和這個基礎物體的格式一樣的物體。注意,clickEventhoverEvent在提示工具中不會有效果,但是它的格式和extra標籤仍然有作用。
Ø  show_item:像NBT標籤的格式化的字串。包含id標籤,和可選的Damage標籤和tag標籤(和/give指令所用的數據值和數據標籤一樣)。
Ø  show_achievement:這個成就或遊戲數據的名字。它使用和成就、遊戲數據記分板對象數據以及/achievement指令一樣的格式。
Ø  show_entity:一個像是複合體,包含字串值type(例如minecraft:zombie)、nameid(應該要是實體UUID,但實際上可以是任何字串)的格式化字串。
n   translate:使用玩家選擇的語言來顯示的翻譯識別器。此識別器和assets資料夾或資源包裡的語言文件(Lang Files)可以找到的識別器是一樣的。翻譯過的文字只會在text字串未被使用時顯示。
n   withtranslate所使用的聊天組件參數列表和/或字串參數。
u  該參數對應於在當前的語言中翻譯字串使用的參數文字,並依序排列(例如,列表中的第一個元素將被匹配翻譯字串中的「%1$s」)。
n   score:顯示一個玩家在一個記分板目標裡的分數。若該玩家沒有被該記分板目標追蹤,則什麼都不顯示。完全忽視可能存在的texttranslate
u  name:要被顯示分數的玩家的名字。選擇器(例如@p)可被使用,除了被記分板系統創造的「假」玩家名。另外,如果名稱為「*」(萬用字元),它將會顯示玩家自己的分數(例如,/tellraw @a {"score":{"name":"*","objective":"obj"}}將給每個在線玩家顯示他們自己在obj目標裡的分數)。注意非玩家實體不會顯示分數(例如@e[type=cow]),即使該實體已在記分板目標裡被給予了一個分數。
u  objective:要被顯示玩家分數的記分板名。
u  value:可選。如果存在,此值將被使用,無論該目標本身的分數是多少。
n   selector:一串包含了一個選擇器(@p@a@r@e@s)的字串以及可選的選擇器參數。不像text,選擇器將會被譯解為正確的玩家/實體名。如果多於一個玩家/實體被選擇器發現了,其將會被以例如「名字1 and 名字2」或「名字1, 名字2, 名字3 and 名字4」的形式顯示。完全忽視可能存在的texttranslatescore
  由於extra的緣故,以上格式可遞歸地嵌套成非常複雜與多功能的文字串。然而,原始JSON文字不必弄得如此複雜:幾乎所有的屬性都是可選或者丟棄的。
  為了使JSON有效,每一個JSON文字至少應該有以下中的一個元素:texttranslatescore或是selector(其餘的元素都是可選的)。為便於速記,整個對象也可以被用一個字串代替。在這個時候,這個字串將被視作text的值。例如,"This is raw text"{"text":"This is raw text"}是等價的。這種速記寫法在任何需要使用原始JSON文字的地方都是有效的(包括/tellraw裡面所用到的<原始JSON訊息>參數,extra中的元素,和show_texthover_event的值)。
  /tellraw也接受一個對象或字串的陣列(array);它們是連鎖的。它甚至接受嵌套的陣列樹;並從最內層向外遍歷。例如:
/tellraw @a ["Hello there, ",{"selector":"@p"},"."]
/tellraw @a [[[["The "],[["quick ","brown "],[{"selector":"@p"}," jumps "],"over "],"the "],["lazy ","dog."]]]
  不像是其它使用 JSON 的指令, /tellraw字串支持以\u####形式表示的Unicode, 其中####是所需的十六進位的Unicode字元。
  從版本1.9開始,JSON語句書寫的格式被標準化。元素名以及類型為string的值都需要使用引號將之包括,例如{text:"Good morning, ",extra:{selector:"@p"}}這樣的格式在1.9後失效,取而代之的是{"text":"Good morning, ","extra":{"selector":"@p"}}

六、    方塊、物品、實體名稱
許多指令要求指定某種方塊、物品或實體。在下文的指令語法中,這些參數會被標註為<方塊><物品><實體>或類似的表述,在舉例中會以類似minecraft:stoneminecraft:pig的形式出現。在PC版中,方塊和物品名稱擁有特定的命名空間,應全部添加minecraft:前綴,不過可以省略;而在攜帶版及Windows 10版中,這些前綴必須刪去,否則指令會失敗。

七、    所有指令列表

指令
描述
是否需要OP權限
OP權限等級
是否需要多人遊戲
影響類型
指令方塊是否可用
攜帶版及W10版是否可用
/advancement
賜予玩家進度
2
玩家
/ban
封鎖玩家並列入黑名單,令其永遠無法登進此伺服器。
3
玩家
/ban-ip
封鎖一個特定的IP位置並列入黑名單。
3
玩家
/banlist
顯示封鎖名單。
3
玩家
/blockdata
編輯指定座標的資料標籤。
2
方塊
/clear
清空玩家的物品欄,或清除特定的物品。
2
玩家
/clone
複製指定區域的方塊。
2
方塊
/debug
開始或停止除錯程序。
3
/defaultgamemode
設置新玩家進入伺服器預設的遊戲模式。
4
世界
/deop
撤銷玩家的管理員身份。
3
玩家
/difficulty
設定遊戲難度。
2
世界
/effect
給予玩家持續指定時間的指定特殊效果或清除玩家身上的所有效果。
2
玩家、實體
/enchant
附魔玩家手中持有的物品。
2
玩家
/entitydata
編輯實體的資料標籤,對玩家無效。
2
實體
/execute
讓玩家在別的位置執行一條指令。
2
玩家、實體
/fill
用指定方塊填滿指定區域。
2
方塊
/function
執行一個函數。
2
/gamemode
改變玩家的遊戲模式。
2
玩家
/gamerule
設置或查詢一條遊戲規則值。
2
世界
/give
給一位玩家一種物品。
2
玩家
/help
列出可以使用的指令或有關指令名稱更多的訊息。
0
/kick
強制斷開玩家與伺服器的連接。
3
玩家
/kill
使玩家或生物直接死亡,或刪除非生物實體。
2
玩家、實體
/list
顯示當前在線的玩家。
0
玩家
/locate
為執行此指令的玩家在聊天視窗裡顯示給定類型的最近結構的座標。
2
世界
/me
以敘述的方式顯示這個玩家在做什麼。
0
玩家
/op
授予玩家管理員權限。
3
玩家
/pardon
將玩家移出黑名單。
3
玩家
/particle
創造粒子效果。
2
玩家
/playsound
播放音效。
2
玩家
/publish
將單人遊戲開放至區域網。
4
世界
/recipe
給玩家提供或取消(解鎖或鎖定)合成配方。
2
玩家
/reload
從硬碟中重新加載戰利品表、進度和函數。
4
世界
/replaceitem
修改實體或方塊物品欄。
2
方塊、玩家、實體
/save-all
強制將伺服器尚未儲存的變更寫入存檔。
4
世界
/save-off
取消伺服器對地圖存檔的寫入。所有的更改都會暫時進入佇列。
4
世界
/save-on
允許伺服器寫入地圖存檔。
4
世界
/say
廣播訊息至所有在線的玩家。
1
玩家
/scoreboard
設置或修改記分板的分數。
2
玩家、實體
/seed
顯示地圖種子碼。
2
世界
/setblock
創造、刪除,或代替單個方塊。
2
方塊
/setidletimeout
自動將閒置過久的玩家踢下線。
3
玩家
/setmaxplayers
設置可加入多人遊戲的玩家數量上限。
0
是,僅限攜帶版及W10
/setworldspawn
設置所有玩家的預設出生點。
2
世界
/spawnpoint
將玩家的出生點移到指定位置。
2
玩家
/spreadplayers
將玩家分散到一個起始點。
2
玩家、實體
/stats
以其他指令的執行結果來更新記分板的數據。
2
方塊、玩家、實體
/stop
正常關閉伺服器。
4
世界
/stopsound
停止播放音效。
2
玩家
/summon
召喚實體。
2
實體
/teleport
傳送實體(玩家、生物、物品等)。
2
玩家、實體
/tell
發送給伺服器裡的玩家一條私訊。
0
玩家
/tellraw
發送JSON訊息給玩家。
2
玩家
/testfor
檢測玩家是否在線或玩家是否在指定位置。
2
玩家、實體
/testforblock
檢測在指定位置的方塊是否與指定的方塊相同。
2
方塊
/testforblocks
檢測在指定區域的方塊是否與另一區域的方塊相同。
2
方塊
/time
設置世界時間。
2
世界
/title
控制螢幕標題。
2
玩家
/toggledownfall
更改天氣。
2
世界
/tp
傳送實體至指定位置。
2
玩家、實體
/transferserver
將玩家傳送到另一個伺服器。
0
是,僅限攜帶版及W10
/trigger
修改帶有trigger準則的目標(被稱為觸發器)。
0
玩家
/weather
設置天氣。
2
世界
/whitelist
將玩家加入、移出白名單或啟用、停用伺服器的白名單機制。
3
玩家
/worldborder
管理世界邊界大小。
2
世界
/wsserver
代表「Web Socket伺服器」(Web Socket Server)。偵錯工具,由開發人員使用。
0
是,僅限攜帶版及W10
/xp
給予玩家經驗值或等級。
2
玩家
若要繼續閱讀,請到「Minecraft指令(」。

沒有留言:

張貼留言