Update languages file. Add two function to chat packet: Append and TranslateMsg

This commit is contained in:
Tnze
2020-04-12 14:58:44 +08:00
parent 72c389c86f
commit ebf1d5c2c2
121 changed files with 214 additions and 4510 deletions

View File

@ -38,6 +38,9 @@ type jsonChat struct {
//UnmarshalJSON decode json to Message
func (m *Message) UnmarshalJSON(jsonMsg []byte) (err error) {
if len(jsonMsg) == 0 {
return io.EOF
}
if jsonMsg[0] == '"' {
err = json.Unmarshal(jsonMsg, &m.Text) //Unmarshal as jsonString
} else {
@ -65,6 +68,33 @@ func (m Message) Encode() []byte {
return pk.String(code).Encode()
}
func (m *Message) Append(extraMsg ...Message) {
origLen := len(m.Extra)
finalLen := origLen + len(extraMsg)
if cap(m.Extra) < len(m.Extra)+len(extraMsg) {
// pre expansion
extra := make([]jsonChat, finalLen)
copy(extra, m.Extra)
m.Extra = extra
}
for _, v := range extraMsg {
m.Extra = append(m.Extra, jsonChat(v))
}
}
func Text(str string) Message {
return Message{Text: str}
}
func TranslateMsg(key string, with ...Message) (m Message) {
m.Translate = key
m.With = make([]json.RawMessage, len(with))
for i, v := range with {
m.With[i], _ = json.Marshal(v)
}
return
}
var fmtCode = map[byte]string{
'0': "30",
'1': "34",

View File

@ -2,6 +2,7 @@ package chat_test
import (
"bytes"
"fmt"
"github.com/Tnze/go-mc/chat"
"testing"
@ -107,3 +108,27 @@ func TestMessage_Encode(t *testing.T) {
t.Error("encode Message error: get", string(msg), ", want", wantMsg)
}
}
func ExampleMessage_Append() {
msg := chat.Message{Text: "1111"}
msg.Append(
chat.Message{Text: "22222"},
chat.Message{Text: "333333"},
chat.Message{Text: "4444444"},
)
fmt.Print(msg)
// Output: 1111222223333334444444
}
func ExampleTranslateMsg() {
fmt.Println(chat.TranslateMsg("translation.test.none"))
fmt.Println(chat.TranslateMsg(
"translation.test.complex",
chat.Text("1111"),
chat.Text("2222"),
chat.Text("3333"),
).String())
// Output:
// Hello, world!
// Prefix, 11112222 again 3333 and 1111 lastly 2222 and also 1111 again!
}