support block state & nbt improvement

This commit is contained in:
Tnze
2022-03-09 16:12:47 +08:00
parent 86592931c6
commit aa8e611644
915 changed files with 6566 additions and 8605 deletions

View File

@ -49,8 +49,8 @@ func (e *Encoder) marshal(val reflect.Value, tagType byte, tagName string) error
return err
}
if val.CanInterface() {
if encoder, ok := val.Interface().(NBTEncoder); ok {
return encoder.Encode(e.w)
if encoder, ok := val.Interface().(Marshaler); ok {
return encoder.MarshalNBT(e.w)
}
}
return e.writeValue(val, tagType)
@ -205,7 +205,7 @@ func getTagType(v reflect.Value) (byte, reflect.Value) {
v.Set(reflect.New(v.Type().Elem()))
}
if v.Type().NumMethod() > 0 && v.CanInterface() {
if u, ok := v.Interface().(NBTEncoder); ok {
if u, ok := v.Interface().(Marshaler); ok {
return u.TagType(), v
}
}
@ -214,7 +214,7 @@ func getTagType(v reflect.Value) (byte, reflect.Value) {
}
if v.CanInterface() {
if encoder, ok := v.Interface().(NBTEncoder); ok {
if encoder, ok := v.Interface().(Marshaler); ok {
return encoder.TagType(), v
}
}