無插件!在遊戲中產生含顏色代碼之物品/實體
在遊戲中,若不安裝相應的插件或模組,是無法直接輸入顏色代碼的「§」字元的,但可以利用Unicode編碼來「輸入」。在Minecraft的JSON語法中,可以利用「\u」來印出指定的Unicode字元,而分節符號「§」的編碼為「\u00A7」,故若要輸出分節符號,則需要以JSON來迂迴。
為了放置含有樣式代碼的指令方塊,我們需要先放置一塊告示牌,再點擊告示牌來放置含代碼的指令方塊,如下:
/setblock ~ ~1 ~ minecraft:standing_sign 0 replace {Text1:"[{\"text\":\"\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/setblock ~ ~1 ~ minecraft:command_block 0 replace {Command:\\\"/say \u00A71\\\\\\\"Hello \u00A71World!\\\\\\\"\\\"}\"}}]"}
當要顯示反斜線要輸入「\\」;要顯示雙引號要輸入「\"」;要顯示單引號要輸入「\'」。但當要在引號內使用第二層引號時,就必須使用三條反斜線,而第三層的引號須使用七條反斜線,依此類推。具體公式為: 「(2^層數) - 1」。目前標籤解析還尚有許多未知錯誤,建議盡量不要在引號內顯示引號,容易造成錯誤。
註:某些NBT標籤可以省略引號不括,但容易造成執行上的錯誤,請自行斟酌。
上述的指令可以拆解成以下的部分:
/setblock ~ ~1 ~ minecraft:standing_sign 0 replace {Text1:"[{\"text\":\"\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/setblock ~ ~1 ~ minecraft:command_block 0 replace {Command:\\\"/say \u00A71\\\\\\\"Hello \u00A71World!\\\\\\\"\\\"}\"}}]"}
藍色的部分為指令殼層,也就是最一開始放置告示牌的指令,而綠色是放置的告示牌點擊時所執行的指令,為放置含有指令的指令方塊。而綠色的部分又可拆解成:
/setblock ~ ~1 ~ minecraft:command_block 0 replace {Command:\\\"/say \u00A71\\\\\\\"Hello \u00A71World!\\\\\\\"\\\"}
黃色的部分才是我們真正得到最後執行的指令,執行結果為[@] "Hello World!"。
指令範例:
.產生藍色「Dinnerbone」名稱的綿羊:/setblock ~ ~1 ~ minecraft:standing_sign 0 replace {Text1:"[{\"text\":\"\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/setblock ~ ~1 ~ minecraft:command_block 0 replace {Command:\\\"/summon sheep ~ ~1 ~ {CustomName:\\\\\\\"\u00A71Dinnerbone\\\\\\\"}\\\"}\"}}]"}
.將上述的綿羊名字改成綠色的「Grumm」:/setblock ~ ~1 ~ minecraft:standing_sign 0 replace {Text1:"[{\"text\":\"\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/setblock ~ ~1 ~ minecraft:command_block 0 replace {Command:\\\"/entitydata @e[name=\u00A71Dinnerbone] {CustomName:\\\\\\\"\u00A7AGrumm\\\\\\\"}\\\"}\"}}]"}
.給予最靠近的玩家指令方塊,執行時伺服器顯示簡易告示「[System] Hello, players!」:/setblock ~ ~1 ~ minecraft:standing_sign 0 replace {Text1:"[{\"text\":\"\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/setblock ~ ~1 ~ minecraft:command_block 0 replace {Command:\\\"/give @p minecraft:command_block 1 0 {BlockEntityTag:{CustomName:\\\\\\\"\u00A7C\u00A7LSystem\\\\\\\",Command:\\\\\\\"/say \u00A79Hello, \u00A79players!\\\\\\\"}}\\\"}\"}}]"}
(待續)