A chat.Message can be deserialized from json array.

This commit is contained in:
Tnze
2022-05-30 11:25:56 +08:00
parent 3c078fc503
commit 6eb5f35c75
3 changed files with 46 additions and 38 deletions

View File

@ -12,23 +12,11 @@ import (
pk "github.com/Tnze/go-mc/net/packet"
)
/*
"translation.test.none": "Hello, world!",
"translation.test.complex": "Prefix, %s %[2]s again %s and %[1]s lastly %s and also %[1]s again!"
"Prefix, str1str2 again str3 and str1 lastly str2 and also str1 again!"
"Prefix, str1str2 again str2 and str1 lastly str3 and also str1 again!"
"translation.test.escape": "%%s %%%s %%%%s %%%%%s",
"translation.test.invalid": "hi %",
"translation.test.invalid2": "hi % s",
"translation.test.args": "%s %s",
"translation.test.world":
*/
var jsons = []string{
`{"extra":[{"color":"green","text":"故我依然"},{"color":"white","text":"™ "},{"color":"gray","text":"Kun_QwQ"},{"color":"white","text":": 为什么想要用炼药锅灭火时总是跳不进去"}],"text":""}`,
`{"translate":"chat.type.text","with":[{"insertion":"Xi_Xi_Mi","clickEvent":{"action":"suggest_command","value":"/tell Xi_Xi_Mi "},"hoverEvent":{"action":"show_entity","value":{"text":"{name:\"{\\\"text\\\":\\\"Xi_Xi_Mi\\\"}\",id:\"c1445a67-7551-4d7e-813d-65ef170ae51f\",type:\"minecraft:player\"}"}},"text":"Xi_Xi_Mi"},"好像是这个id。。"]}`,
`{"translate":"translation.test.none"}`,
//`{"translate":"translation.test.complex","with":["str1","str2","str3"]}`,
`{"translate":"translation.test.escape","with":["str1","str2"]}`,
`{"translate":"translation.test.args","with":["str1","str2"]}`,
`{"translate":"translation.test.world"}`,
@ -45,7 +33,6 @@ var texts = []string{
"<Xi_Xi_Mi> 好像是这个id。。",
"Hello, world!",
//"Prefix, str1str2 again str2 and str1 lastly str3 and also str1 again!",
"%s %str1 %%s %%str2",
"str1 str2",
"world",
@ -62,7 +49,6 @@ var clearTexts = []string{
"<Xi_Xi_Mi> 好像是这个id。。",
"Hello, world!",
//"Prefix, str1str2 again str2 and str1 lastly str3 and also str1 again!",
"%s %str1 %%s %%str2",
"str1 str2",
"world",
@ -92,7 +78,7 @@ func TestMessage_ClearString(t *testing.T) {
chat.SetLanguage(en_us.Map)
for i, v := range jsons {
var cm chat.Message
err := cm.UnmarshalJSON([]byte(v))
err := json.Unmarshal([]byte(v), &cm)
if err != nil {
t.Error(err)
}
@ -161,6 +147,32 @@ func TestMessage_MarshalJSON_issue151(t *testing.T) {
}
}
func TestMessage_UnmarshalJSON_hoverEvent(t *testing.T) {
msg := `{
"text": "Text0",
"extra": [
{
"hoverEvent": {"action": "show_text","value": "la"},
"text": "Text1"
},
{
"hoverEvent": {"action": "show_text","value": {"text":"la","color":"red"}},
"text": "Text2"
},
{
"hoverEvent": {"action": "show_text","value": [{"color": "white","text": "Normal"}]},
"text": "Text3"
}
]
}`
var message chat.Message
err := json.Unmarshal([]byte(msg), &message)
if err != nil {
t.Fatal(err)
}
t.Log(message)
}
func ExampleTranslateMsg() {
fmt.Println(chat.TranslateMsg("translation.test.none"))
fmt.Println(chat.TranslateMsg(