nbt chat message
Some checks failed
CodeQL / Analyze (go) (push) Has been cancelled
Go / Test (1.22) (push) Has been cancelled
Go / Test (^1.22) (push) Has been cancelled

This commit is contained in:
2025-08-26 23:47:10 +08:00
parent 540ba15e83
commit acb1555ede
3 changed files with 7 additions and 3 deletions

View File

@ -51,7 +51,7 @@ const (
// Message is a message sent by other
type Message struct {
Text string `json:"text" nbt:"text,omitempty"`
Text string `json:"text" nbt:"text,default"`
Bold bool `json:"bold,omitempty" nbt:"bold,omitempty"` // 粗体
Italic bool `json:"italic,omitempty" nbt:"italic,omitempty"` // 斜体

View File

@ -387,7 +387,7 @@ func (d *Decoder) unmarshal(val reflect.Value, tagType byte) error {
// Fall back to linear search.
for i := range fields.list {
ff := &fields.list[i]
if strings.EqualFold(ff.name, tn) {
if strings.EqualFold(ff.name, tn) || ff.asDefault && tn == "" {
f = ff
break
}

View File

@ -19,6 +19,7 @@ type field struct {
index []int
typ reflect.Type
omitEmpty bool
asDefault bool
asList bool
}
@ -105,7 +106,7 @@ func typeFields(t reflect.Type) (tInfo structFields) {
}
// parse options
var omitEmpty, asList bool
var omitEmpty, asList, asDefault bool
for opts != "" {
var name string
name, opts, _ = strings.Cut(opts, ",")
@ -114,6 +115,8 @@ func typeFields(t reflect.Type) (tInfo structFields) {
omitEmpty = true
case "list":
asList = true
case "default":
asDefault = true
}
}
// Deprecated: use `nbt:",list"` instead.
@ -133,6 +136,7 @@ func typeFields(t reflect.Type) (tInfo structFields) {
index: index,
typ: ft,
omitEmpty: omitEmpty,
asDefault: asDefault,
asList: asList,
}