創作內容

3 GP

告示板訊息json格式化教學 (適用版本1.8 up)

作者:最討厭的傑│我的世界(PC)│2015-03-23 16:26:39│巴幣:6│人氣:590
發這篇文章起因算是興起
因為之前周圍朋友他想製作地圖卻遇到一些困難
我就花了一些時間找資料
可是好像我用的關鍵字都找不到中文說明
所以就想辦法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\"}]"}


最後的完成品就如下圖


引用網址:https://home.gamer.com.tw/TrackBack.php?sn=2786076
Some rights reserved. 姓名標示-非商業性 2.5 台灣

相關創作

同標籤作品搜尋:我的世界(PC)

留言共 2 篇留言

葉奇
請問一下 那指令方塊的/say指令也適用這個嗎??

04-26 16:12

最討厭的傑
say不支援這個東西喔 你要用tellraw才有支援04-26 19:59
最討厭的傑
我在minecraft也有發一篇這個文章 後面我還有再新增其他東西
去看那邊內容會更多04-26 20:01
納蘭映雪
http://i.imgur.com/ax6VSlV.gif

08-23 21:35

我要留言提醒:您尚未登入,請先登入再留言

3喜歡★mark53682 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:2013/08/09 心...

追蹤私訊切換新版閱覽

作品資料夾

Lobster0627全體巴友
大家可以多多來我的YT頻道看看哦(*´∀`)~♥https://www.youtube.com/@lobstersandwich看更多我要大聲說昨天15:59


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】