這次我要修改的例子是這個:
/setblock ~ ~1 ~ minecraft:standing_sign 0 replace {Text1:"[{\"text\":\"\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/give @p golden_sword 1 0 {display:{Name:\u00a76斷鋼神劍}}\"}}]"}
我們可以清楚的看到 為何 " 前面要使用一個 "\"
明明在平常打Json的時候就不需要 到底為什麼要呢
很簡單 因為Json智商不是這麼高 如果直接打上 " 系統會錯亂
而在前面加上一個 "\" 能夠有效的讓Java解讀出在括號中的 "
那我們就來修改囉
首先 不明原因 在括號裡面算三級符號 因此只需要在括號裡面的 " 前面新增3個 \ 就好囉
修改後像是這樣
/setblock ~ ~1 ~ minecraft:standing_sign 0 replace {Text1:"[{\"text\":\"\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/give @p golden_sword 1 0 {display:{Name:\\\"\\u00a76斷鋼神劍\\\"}}\"}}]"}
你可能會問我 為什麼裡面要有兩個 "\" 對吧
其實一直都需要 只是因為之前指令太過鬆散 而忽略了這個符號
剛剛測試了一下 這個東西還可以運作喔 只是 "display:{Name:" 的括號一定要加
並且需要再前面打上3個 "\" 才可以運作喔
統整後:
1.須將原Name後面新增一個 " ,並且在前面加上 \\\
2.須將\u00a7的前面多加一個 \ 變成 \u00a7 -> 前面 \ 有兩個 巴哈顯示不出來...
希望有幫到大家 祝各位暑假快樂!
補充: 同樣的 AttributeModifiers與其他需使用到括號的NBT 也可以使用前面加上三個 \ 的方式
來讓指令運作喔