發這篇文章起因算是興起
因為之前周圍朋友他想製作地圖卻遇到一些困難
我就花了一些時間找資料
可是好像我用的關鍵字都找不到中文說明
所以就想辦法google出英文wiki的相關教學來研究
不過我不確定是不是還有沒有更多是我沒找到的東西在
---以下正文---
說明前我先隨便舉一個範例 以範例來邊解釋邊教學
範例內容 : 在告示板第2行輸入
測試文字(前面粗體深藍色 後面紅色沒其他)
首先要將不同格式的字各自分開來分別輸入格式
我們得用 "格式名稱":"數據" 來讓遊戲知道內容是什麼
格式有很多可以用 基本上可簽署的書能用的格式全部都可以拿來用
在這邊介紹的參考資料來自英文的
minecraft wiki formatting code頁面
格式名稱 |
說明 |
text |
要讓告示板輸出的文字 |
color |
文字顏色 顏色名稱使用英文 |
bold |
粗體字 |
underline |
底線 |
strikethrough |
刪除線 |
italic |
斜體字 |
obfuscated |
亂碼文字 注意它只支援半形 |
格式名稱的開頭皆不需大寫
除了text跟color後面的數據比較不同以外
其餘的只需要使用true(是)跟false(否)即可
還有一點是 順序不影響實際效果
不過避免難以閱讀 各位可以以自己習慣方式來排順序
怕有人不清楚顏色名稱
這邊就順便附上
顏色
|
英文名稱 |
黑色
|
black |
深藍色
|
dark_blue |
深綠色
|
dark_green |
青色
|
dark_aqua |
暗紅色
|
dark_red |
深紫色
|
dark_purple |
金色
|
gold |
淺灰色
|
gray |
灰色
|
dark_gray |
藍色
|
blue |
綠色
|
green |
天藍色
|
aqua |
紅色
|
red |
亮紫色
|
light_purple |
黃色
|
yellow |
白色
|
white |
上面的範例是用粗體/深藍色字表示測試 紅色字表示文字
排好就會像這樣
測試 -> {"text":"測試","color":"dark_blue","bold":"true"}
文字 -> {"text":"文字","color":"red"}
每個格式請記得要用,來隔開
{ } 表示這些效果是一組的
因為是同一行文字 所以連在一起之後要使用 [ ] 包起來 並且還是記得中間以,隔開
[{"text":"測試","color":"dark_blue","bold":"true"},{"text":"文字","color":"red"}]
下一步是在這裡的所有 " 前面都必須要加入 \ 跳脫字元 否則遊戲會無法分析
完成之後會像下面這樣 ((前面一步一步慢慢來是到這邊之後會開始不好閱讀
[{\"text\":\"測試\",\"color\":\"dark_blue\",\"bold\":\"true\"},{\"text\":\"文字\",\"color\":\"red\"}]
接下來就是一般告示板的輸入法
使用{Text#:"訊息"} 來告訴系統我該將文字放置在告示板第幾行
範例為第二行 所以就是
{Text2:"[{\"text\":\"測試\",\"color\":\"dark_blue\",\"bold\":\"true\"},{\"text\":\"文字\",\"color\":\"red\"}]"}
到此文字訊息的格式化已經算完成 不過其實還隱藏一個問題在裡面要在放出來之後才會發現
下圖是以現在這樣直接呼叫之後的內容
會發現後面兩個字也變粗體了
這是系統沒有把前面的格式取消
所以變成是要自己在後面手動取消 所以我還得在後面兩個字的格式加入,\"bold\":\"false\" (取消粗體)
修正之後的內容是
{Text2:"[{\"text\":\"測試\",\"color\":\"dark_blue\",\"bold\":\"true\"},{\"text\":\"文字\",\"color\":\"red\",\"bold\":\"false\"}]"}
這樣就OK了
接下來可以使用give指令或者setblock兩種方式其中一種來設置告示板
以下兩種我都會說明 不過我會建議用give指令會比較簡單
先說明give指令
在1.8的時候 NBT tag有新增一個標籤叫作BlockEntityTag
這個標籤的作用就是在手上的物品上儲存一個資料標記
而這個資料標記會跟著你手上的方塊放置在地上時一起被設置在地上
該標籤的使用方式是 BlockEntityTag:{標籤名稱:"標籤數據"}
跟上面的指令合併起來是
{BlockEntityTag:{Text2:"[{\"text\":\"測試\",\"color\":\"dark_blue\",\"bold\":\"true\"},{\"text\":\"文字\",\"color\":\"red\",\"bold\":\"false\"}]"}}
我們要呼叫一塊告示板(物品名稱sign)在手上 然後他沒有資料值
整個指令合在一起之後變成 (@p是給最靠近的玩家)
/give @p sign 1 0 {BlockEntityTag:{Text2:"[{\"text\":\"測試\",\"color\":\"dark_blue\",\"bold\":\"true\"},{\"text\":\"文字\",\"color\":\"red\",\"bold\":\"false\"}]"}}
如果是以setblock來呼叫的話
指令則需知道幾樣物品
先看這指令的使用法
/setblock <x> <y> <z> <方塊名稱> [方塊附加值] [原始方塊處理] [附加資料標籤]
一般不需附加資料標籤時候 前面附加值跟原始方塊處理都可省略
但是要標籤就必須前面都得輸入
第一個是方塊名稱 我們要用的不是只有單純sign
我們必須要告訴遊戲 是要放置
站著的告示板(standing_sign) 還是貼在牆壁的告示板(wall_sign)
第二個是方塊附加值 在這邊指的是面向的方向
站著的告示板總共有16方向(0~15)可以設置
0是文字面向遊戲南方 (我們面向北) 順著時鐘的方向旋轉(由上往下看)
貼在牆上的告示板則只有4個方向 可是不是0~3而是 2~5
以告示板上字的面向為準分別是
2北 3南 4西 5東
以玩家面向為準則是
2南 3北 4東 5西
第三個是原始方塊處理
常用的就2種方式
keep設置 replace取代
前者在目標座標有方塊卡住時候指令會呼叫失敗 後者就不管有沒有
座標部份1.8版的F3介面有個方便的功能是當你滑鼠指到了1個方塊的時候
在最底下會出現一條looking at
這個就是你滑鼠指向的那顆方塊座標點
所以可以利用它來確認你的告示板要放在哪
第二種選擇則是用 ~ 這符號代表當前座標
有XYZ 3個座標都用~的話會覆蓋掉指令方塊本身
((除非前面是用keep 這時候會顯示無法設置方塊
另外如果是輸入 ~1
這則是代表以當前座標為基準+1
指令打完樣子大概像下面這樣
假設告示板貼牆 字的面向朝東 我要把告示板設置在指令方塊的上面一格 整體指令如下
/setblock ~ ~1 ~ wall_sign 5 keep {Text2:"[{\"text\":\"測試\",\"color\":\"dark_blue\",\"bold\":\"true\"},{\"text\":\"文字\",\"color\":\"red\",\"bold\":\"false\"}]"}
最後的完成品就如下圖