nbt.StringifiedNBT as nbt.NBTEncoder
This commit is contained in:
58
nbt/snbt.go
58
nbt/snbt.go
@ -1,10 +1,58 @@
|
||||
package nbt
|
||||
|
||||
type StringifiedNBT struct {
|
||||
Name string
|
||||
Content string
|
||||
import "io"
|
||||
|
||||
type StringifiedNBT string
|
||||
|
||||
func (n StringifiedNBT) TagType() (tagType byte) {
|
||||
d := decodeState{data: []byte(n)}
|
||||
d.scan.reset()
|
||||
d.scanWhile(scanSkipSpace)
|
||||
switch d.opcode {
|
||||
case scanBeginLiteral:
|
||||
start := d.readIndex()
|
||||
if d.scanWhile(scanContinue); d.opcode == scanError {
|
||||
return
|
||||
}
|
||||
literal := d.data[start:d.readIndex()]
|
||||
tagType, _ = parseLiteral(literal)
|
||||
|
||||
case scanBeginCompound:
|
||||
tagType = TagCompound
|
||||
|
||||
case scanBeginList:
|
||||
d.scanWhile(scanSkipSpace)
|
||||
if d.opcode == scanBeginLiteral {
|
||||
start := d.readIndex()
|
||||
if d.scanWhile(scanContinue); d.opcode == scanError {
|
||||
return
|
||||
}
|
||||
literal := d.data[start:d.readIndex()]
|
||||
if d.opcode == scanSkipSpace {
|
||||
d.scanWhile(scanSkipSpace)
|
||||
}
|
||||
if d.opcode == scanListType {
|
||||
switch literal[0] {
|
||||
case 'B':
|
||||
tagType = TagByteArray
|
||||
case 'I':
|
||||
tagType = TagIntArray
|
||||
case 'L':
|
||||
tagType = TagLongArray
|
||||
}
|
||||
}
|
||||
} else {
|
||||
tagType = TagList
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (n *StringifiedNBT) Decode(tagType byte, tagName string, r DecoderReader) error {
|
||||
panic("unimplemented")
|
||||
func (n StringifiedNBT) Encode(w io.Writer) error {
|
||||
d := decodeState{data: []byte(n)}
|
||||
d.scan.reset()
|
||||
return writeValue(NewEncoder(w), &d, "")
|
||||
}
|
||||
|
||||
//func (n *StringifiedNBT) Decode(tagType byte, r DecoderReader) error {
|
||||
//}
|
||||
|
Reference in New Issue
Block a user