大家好,這裡是岩壁巨人
最近為了製作新的地圖而研究了很多關於指令還有NBT Tag的東西
然而,因為我的建築能力實在不太行,建築部分只好交給我室友,我則負責全部的指令。
結果因為建築還沒完工,指令沒辦法繼續弄的情況下,實在是閒得發慌(#
今天就來發文介紹一下"tellraw"這個指令吧
先上圖解釋他的用法
是不是很簡單呢
這個指令強大的地方在於它能做為一個"文本處理系統"
除了能改變文字樣式(顏色、粗體、斜體、底線、刪除線等)
也能利用clickEvents和hoverEvents 去執行更高級的指令
更重要的是,tellraw指令還能支援解析部分Unicode
像是我們利用「§」這個符號('U00A7) 可以改變文字的樣式和格式
比較常見的是在書本裡
實際上,我打的東西是長這樣:
「我名為§5§L雪莉§0 是家中的長女
幾天前遷家於此
在那之後妹妹§d§L薇拉§0無緣無故失蹤了」
當然這個也可以運用在tellraw指令上面
比方說
這四個字串的指令分別是
/tellraw @a {"text":"\ u00a76用法:/tellraw <玩家> <原始 json 訊息>"}
/tellraw @a {"text":"\ u00a72用法:/tellraw <玩家> <原始 json 訊息>"}
/tellraw @a {"text":"\ u00a74用法:/tellraw <玩家> <原始 json 訊息>"}
/tellraw @a {"text":"\ u00a75用法:/tellraw <玩家> <原始 json 訊息>"}
("\"跟"u"中間不應有空格,空格只是為了避免它轉成§符號)
常用的像是
§0黑 §1深藍
§2綠 §3青
§4深紅 §5深紫
§6金 §7灰
§8深灰 §9藍
§a淺綠 §b淺青
§c紅 §d粉紅
§e黃 §f白
§L 粗體 §M 刪除線
§N 底線 §O 斜體
§K 亂碼 §R 重置
注意: 要先打樣式再打格式,不然格式會被樣式吃掉
另外,你還可以使用換行字符「\ n」,不過換行之後的Unicode樣式、格式都會重置。
範例:("\"跟"u"中間不應有空格,空格只是為了避免它轉成§符號)
/tellraw @a {"text":"\ u00a76用法:/tellraw <玩家>\ n \ u00a76<原始 json 訊息>"}
json訊息跟NBT Tag的不同點在於 你想設定的資料要用雙引號刮起來,
印象中這個限制在以前的版本沒有,不知道哪個版本改動之後一定要用雙引號。
/give @a pumpkin_pie 1 3 {display:{Name:"垃圾堆撿來的南瓜派",Lore:[其實也挺豪ㄘ]}}
display、Name這些NBT資料就不必使用雙引號刮起來,用雙引號的話,指令會完全不能使用。
所以在使用json的時候要注意,記得把雙引號加上。
接下來介紹常用的tellraw文本組件
"text":
最基本的文字,
如果有多個{"text"}要用中括號把它們刮起來,並且用逗號分隔。
(當然不只侷限於這個組件的組合,跟其他組件也是一樣)
範例:
/tellraw @a [{"text":"Hello,"},{"text":"everyone."}]
"color"、"bold"、"italic"、"underline"、"strikethrough"、"obfusecated"
這幾個組件分別是:顏色、粗體、斜體、底線、刪除線、亂碼。
因為大部分時候都可以用Unicode來實現,而且可以節省字數,所以我很少用。
比較需要注意的是,除了color以外,其他的組件都是要用true/false來設定,
比方說:
/tellraw @a {"text":"麥當牢歡樂送","color":"gold","bold":"true"}
其實能用更少的字數達成一樣的效果,故可以改寫成這樣:
("\"跟"u"中間不應有空格,空格只是為了避免它轉成§符號)
/tellraw @a {"text":\ u00a76\ u00a7L麥當牢歡樂送"}
"selector"
目標選擇器,顧名思義可以用來選擇目標,指令方塊上有寫道:
@p @r @a 這三個可以選擇玩家(最近、隨機、全部)
@e @s可以選擇實體(全部、執行中)
利用這些東西,再搭配NBT即可精確選擇你要的目標,並且透過tellraw指令印出來。
給大家看幾個例子就會懂了
地圖上只有我跟羊兩個實體,那如果再多幾個實體呢?
由此可知,目標選擇器可以選擇多個實體
"keybind"
熱鍵,會告訴玩家某個動作的熱鍵,這個真的不太常用。
範例:
/tellraw @a {"keybind":"key.jump"}
"translate"
這個我要跟"with"一起介紹
他其實不是一個內建的翻譯語言的功能,因為他能翻譯的東西只限Minecraft裡面的文本
這部分因為不太用到,所以就來解釋一下他的其他功能。
通常translate會跟with一起搭配,會有點像是python的format語法那樣。
先給大家看個範例:
/tellraw @a {"translate":"Nearest player: %s","with":[{"selector":"@p"}]}
%s會抓取"with"內部的第一條數據,該數據為「由目標選擇器來選擇一個最近的玩家(@p)」
那其實還有%d(抓整數) %f(抓浮點數) 之類的東西,因為不常用就不一一介紹了。
那用"text"能不能達到一樣的效果?
請看以下例子:
/tellraw @a {"text":"Nearest player: %s","with":[{"selector":"@p"}]}
答案是不行,"text"物件印出來的東西只能是字串。
如果不使用以上功能,直接打字串上去,其實就跟text一樣,沒有什麼功能。
像是:
/tellraw @a {"translate":"Eating apple."}
"score"
這個組件要搭配/scoreboard 記分板指令才能使用,
記分板上沒設定任何東西的話,tellraw指令就不會印出任何字。
能利用的地方像是:
記分板拿來計時,tellraw指令告訴玩家你的通關時間。
一開始,我先設定一個計時用的記分板↓
/scoreboard objectives add Time dummy
/scoreboard objectives setdisplay sidebar Time
/scoreboard players set LZK Time 200
右邊就會顯示這個
當然也可以不讓他顯示,為了要打文所以才讓他顯示。
至於計時器的方法就用連閃器連接指令方塊把時間累加上去就好
這裡主要是介紹把記分板上的東西印出來的方法
假如200是玩家通關的秒數,而我要把這個時間讓玩家知道
於是我就打出以下指令
/tellraw @a [{"text":"通關時間:"},{"score":{"name":"@p","objective":"Time"}},{"text":"秒"}]
稍微美編一下("\"跟"u"中間不應有空格,空格只是為了避免它轉成§符號)
/tellraw @a [{"text":"\ u00a76通關時間:"},{"score":{"name":"@p","objective":"Time"},"color":"dark_green"},{"text":"\ u00a72秒"}]
這次的介紹就到這邊啦~tellraw指令是不是非常簡單呢?
除了能把文字弄得美美的,也可以做很多事情哦,下集待續
回家作業:
請利用/tellraw指令做出以下結果,並將指令貼上來。
答案下集揭曉