From a05f8e0a3392d707dbe385d092e5865ec750b6fb Mon Sep 17 00:00:00 2001 From: Tnze Date: Fri, 11 Mar 2022 14:02:21 +0800 Subject: [PATCH] All block states' properties are parsed and all enums represented as byte --- level/block/block.go | 6 +- level/block/block_states.nbt | Bin 82577 -> 82551 bytes level/block/blocks.go | 1248 ++++++++--------- level/block/blocks.nbt | Bin 69619 -> 7201 bytes .../generator/{ => blocks}/blocks.go.tmpl | 0 level/block/generator/{ => blocks}/main.go | 32 +- level/block/generator/properties/main.go | 97 ++ .../properties/properties_enum.go.tmpl | 45 + level/block/properties.go | 50 +- level/block/properties_enum.go | 980 +++++++++++++ nbt/decode.go | 3 + nbt/decode_test.go | 69 - nbt/encode.go | 35 +- nbt/encode_test.go | 38 +- nbt/rawmsg_test.go | 66 + nbt/snbt_encode_test.go | 37 +- server/gameplay.go | 8 +- 17 files changed, 1954 insertions(+), 760 deletions(-) rename level/block/generator/{ => blocks}/blocks.go.tmpl (100%) rename level/block/generator/{ => blocks}/main.go (76%) create mode 100644 level/block/generator/properties/main.go create mode 100644 level/block/generator/properties/properties_enum.go.tmpl create mode 100644 level/block/properties_enum.go create mode 100644 nbt/rawmsg_test.go diff --git a/level/block/block.go b/level/block/block.go index ac7642e..8b759e1 100644 --- a/level/block/block.go +++ b/level/block/block.go @@ -2,7 +2,7 @@ package block import ( "bytes" - "compress/zlib" + "compress/gzip" _ "embed" "fmt" "math/bits" @@ -14,7 +14,7 @@ type Block interface { ID() string } -// This file stores all possible block states into a TAG_List with zlib compressed. +// This file stores all possible block states into a TAG_List with gzip compressed. //go:embed block_states.nbt var blockStates []byte @@ -33,7 +33,7 @@ type State struct { func init() { var states []State // decompress - z, err := zlib.NewReader(bytes.NewReader(blockStates)) + z, err := gzip.NewReader(bytes.NewReader(blockStates)) if err != nil { panic(err) } diff --git a/level/block/block_states.nbt b/level/block/block_states.nbt index b47edb99199155ba27a3aa99502ae8b75a1ef0a2..3deaa3b39cd818e48f045e2081b9f6afd95a3686 100644 GIT binary patch delta 77898 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

+o?^cN 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 Qz)%A@&AOLwORN6>5AJtqP5=M^ diff --git a/level/block/generator/blocks.go.tmpl b/level/block/generator/blocks/blocks.go.tmpl similarity index 100% rename from level/block/generator/blocks.go.tmpl rename to level/block/generator/blocks/blocks.go.tmpl diff --git a/level/block/generator/main.go b/level/block/generator/blocks/main.go similarity index 76% rename from level/block/generator/main.go rename to level/block/generator/blocks/main.go index 757c0ec..1f34619 100644 --- a/level/block/generator/main.go +++ b/level/block/generator/blocks/main.go @@ -1,7 +1,10 @@ package main import ( + "bytes" + "compress/gzip" _ "embed" + "go/format" "log" "os" "strings" @@ -20,7 +23,7 @@ var temp = template.Must(template. "UpperTheFirst": UpperTheFirst, "ToGoTypeName": ToGoTypeName, "GetType": GetType, - "Generator": func() string { return "generator/main.go" }, + "Generator": func() string { return "generator/blocks/main.go" }, }). Parse(tempSource)) @@ -45,25 +48,31 @@ func readBlockStates(states *[]State) { } defer f.Close() + r, err := gzip.NewReader(f) + if err != nil { + log.Panic(err) + } + // parse the nbt format - if _, err := nbt.NewDecoder(f).Decode(states); err != nil { + if _, err := nbt.NewDecoder(r).Decode(states); err != nil { log.Panic(err) } } func genSourceFile(states []State) { - file, err := os.Create("blocks.go") - if err != nil { + var source bytes.Buffer + if err := temp.Execute(&source, states); err != nil { log.Panic(err) } - defer file.Close() - // clean up the file - if err := file.Truncate(0); err != nil { - return - } - if err := temp.Execute(file, states); err != nil { - log.Panic(err) + formattedSource, err := format.Source(source.Bytes()) + if err != nil { + panic(err) + } + + err = os.WriteFile("blocks.go", formattedSource, 0666) + if err != nil { + panic(err) } } @@ -79,7 +88,6 @@ func ToGoTypeName(name string) string { var typeMaps = map[string]string{ "BooleanProperty": "Boolean", "DirectionProperty": "Direction", - "EnumProperty": "string", "IntegerProperty": "Integer", } diff --git a/level/block/generator/properties/main.go b/level/block/generator/properties/main.go new file mode 100644 index 0000000..116289a --- /dev/null +++ b/level/block/generator/properties/main.go @@ -0,0 +1,97 @@ +package main + +import ( + "bytes" + _ "embed" + "go/format" + "log" + "os" + "strings" + "text/template" + "unicode" +) + +type EnumProperty struct { + Name string + TrimPrefix bool + Values []string +} + +var EnumProperties = []EnumProperty{ + {Name: "AttachFace", Values: []string{"floor", "wall", "ceiling"}}, + {Name: "BambooLeaves", Values: []string{"none", "small", "large"}}, + {Name: "BedPart", Values: []string{"head", "foot"}}, + {Name: "BellAttachType", Values: []string{"floor", "ceiling", "single_wall", "double_wall"}}, + {Name: "ChestType", Values: []string{"single", "left", "right"}}, + {Name: "ComparatorMode", Values: []string{"compare", "subtract"}}, + {Name: "Direction", TrimPrefix: true, Values: []string{"down", "up", "north", "south", "west", "east"}}, + {Name: "Axis", TrimPrefix: true, Values: []string{"x", "y", "z"}}, + {Name: "DoorHingeSide", Values: []string{"left", "right"}}, + {Name: "DoubleBlockHalf", Values: []string{"upper", "lower"}}, + {Name: "DripstoneThickness", Values: []string{"tip_merge", "tip", "frustum", "middle", "base"}}, + {Name: "Half", TrimPrefix: true, Values: []string{"top", "bottom"}}, + {Name: "NoteBlockInstrument", Values: []string{ + "harp", "basedrum", "snare", "hat", + "bass", "flute", "bell", "guitar", + "chime", "xylophone", "iron_xylophone", "cow_bell", + "didgeridoo", "bit", "banjo", "pling", + }}, + {Name: "PistonType", Values: []string{"normal", "sticky"}}, + {Name: "RailShape", Values: []string{ + "north_south", "east_west", + "ascending_east", "ascending_west", "ascending_north", "ascending_south", + "south_east", "south_west", "north_west", "north_east", + }}, + {Name: "RedstoneSide", Values: []string{"up", "side", "none"}}, + {Name: "SculkSensorPhase", Values: []string{"inactive", "active", "cooldown"}}, + {Name: "SlabType", Values: []string{"top", "bottom", "double"}}, + {Name: "StairsShape", Values: []string{"straight", "inner_left", "inner_right", "outer_left", "outer_right"}}, + {Name: "StructureMode", Values: []string{"save", "load", "corner", "data"}}, + {Name: "Tilt", Values: []string{"none", "unstable", "partial", "full"}}, + {Name: "WallSide", Values: []string{"none", "low", "tall"}}, + {Name: "FrontAndTop", TrimPrefix: true, Values: []string{ + "down_east", "down_north", "down_south", "down_west", + "up_east", "up_north", "up_south", "up_west", + "west_up", "east_up", "north_up", "south_up", + }}, +} + +//go:embed properties_enum.go.tmpl +var tempSource string + +func main() { + var source bytes.Buffer + err := template.Must(template. + New("properties_enum"). + Funcs(template.FuncMap{ + "UpperTheFirst": UpperTheFirst, + "ToLower": strings.ToLower, + "Generator": func() string { return "generator/properties/main.go" }, + }). + Parse(tempSource)). + Execute(&source, EnumProperties) + if err != nil { + log.Panic(err) + } + + formattedSource, err := format.Source(source.Bytes()) + if err != nil { + log.Panic(err) + } + err = os.WriteFile("properties_enum.go", formattedSource, 0666) + if err != nil { + log.Panic(err) + } +} + +func UpperTheFirst(word string) string { + var sb strings.Builder + for _, word := range strings.Split(word, "_") { + runes := []rune(word) + if len(runes) > 0 { + runes[0] = unicode.ToUpper(runes[0]) + } + sb.WriteString(string(runes)) + } + return sb.String() +} diff --git a/level/block/generator/properties/properties_enum.go.tmpl b/level/block/generator/properties/properties_enum.go.tmpl new file mode 100644 index 0000000..6a47a86 --- /dev/null +++ b/level/block/generator/properties/properties_enum.go.tmpl @@ -0,0 +1,45 @@ +// Code generated by {{Generator}}; DO NOT EDIT. +package block + +import ( + "errors" + "strconv" +) +{{range $prop := .}} +type {{.Name}} byte + +const ( +{{- range $index, $element := .Values}} + {{if not $prop.TrimPrefix}}{{$prop.Name}}{{end}}{{$element | UpperTheFirst}}{{if eq $index 0 }} {{$prop.Name}} = iota{{end}} +{{- end}} +) + +{{- $v := slice (.Name | ToLower) 0 1 }} +var str{{.Name}} = [...]string{ {{- range $index, $elem := .Values }}{{$elem | printf "%q"}}{{if ne $index (len $prop.Values)}}, {{end}}{{end -}} } + +func ({{$v}} {{.Name}}) String() string { + if int({{$v}}) < len(str{{.Name}}) { + return str{{.Name}}[{{$v}}] + } + return "invalid {{.Name}}" +} + +func ({{$v}} {{.Name}}) MarshalText() (text []byte, err error) { + if int({{$v}}) < len(str{{.Name}}) { + return []byte(str{{.Name}}[{{$v}}]), nil + } + return nil, errors.New("invalid {{.Name}}: " + strconv.Itoa(int({{$v}}))) +} + +func ({{$v}} *{{.Name}}) UnmarshalText(text []byte) error { + switch str := string(text); str { +{{- range .Values}} + case {{. | printf "%q"}}: + *{{$v}} = {{if not $prop.TrimPrefix}}{{$prop.Name}}{{end}}{{. | UpperTheFirst}} +{{- end}} + default: + return errors.New("unknown {{.Name}}: " + str) + } + return nil +} +{{end}} \ No newline at end of file diff --git a/level/block/properties.go b/level/block/properties.go index 07f95ee..469a58b 100644 --- a/level/block/properties.go +++ b/level/block/properties.go @@ -1,14 +1,8 @@ package block -import ( - "strconv" -) +import "strconv" -type ( - Boolean bool - Direction string - Integer int -) +type Boolean bool func (b Boolean) MarshalText() (text []byte, err error) { return []byte(strconv.FormatBool(bool(b))), nil @@ -19,14 +13,7 @@ func (b *Boolean) UnmarshalText(text []byte) (err error) { return } -func (d Direction) MarshalText() (text []byte, err error) { - return []byte(d), nil -} - -func (d *Direction) UnmarshalText(text []byte) error { - *d = Direction(text) - return nil -} +type Integer int func (i Integer) MarshalText() (text []byte, err error) { return []byte(strconv.Itoa(int(i))), nil @@ -36,3 +23,34 @@ func (i *Integer) UnmarshalText(text []byte) (err error) { *((*int)(i)), err = strconv.Atoi(string(text)) return } + +func (f FrontAndTop) Directions() (front, top Direction) { + switch f { + case DownEast: + return Down, East + case DownNorth: + return Down, North + case DownSouth: + return Down, South + case DownWest: + return Down, West + case UpEast: + return Up, East + case UpNorth: + return Up, North + case UpSouth: + return Up, South + case UpWest: + return Up, West + case WestUp: + return West, Up + case EastUp: + return East, Up + case NorthUp: + return North, Up + case SouthUp: + return South, Up + default: + panic("invalid FrontAndTop") + } +} diff --git a/level/block/properties_enum.go b/level/block/properties_enum.go new file mode 100644 index 0000000..5e9a63d --- /dev/null +++ b/level/block/properties_enum.go @@ -0,0 +1,980 @@ +// Code generated by generator/properties/main.go; DO NOT EDIT. +package block + +import ( + "errors" + "strconv" +) + +type AttachFace byte + +const ( + AttachFaceFloor AttachFace = iota + AttachFaceWall + AttachFaceCeiling +) + +var strAttachFace = [...]string{"floor", "wall", "ceiling"} + +func (a AttachFace) String() string { + if int(a) < len(strAttachFace) { + return strAttachFace[a] + } + return "invalid AttachFace" +} + +func (a AttachFace) MarshalText() (text []byte, err error) { + if int(a) < len(strAttachFace) { + return []byte(strAttachFace[a]), nil + } + return nil, errors.New("invalid AttachFace: " + strconv.Itoa(int(a))) +} + +func (a *AttachFace) UnmarshalText(text []byte) error { + switch str := string(text); str { + case "floor": + *a = AttachFaceFloor + case "wall": + *a = AttachFaceWall + case "ceiling": + *a = AttachFaceCeiling + default: + return errors.New("unknown AttachFace: " + str) + } + return nil +} + +type BambooLeaves byte + +const ( + BambooLeavesNone BambooLeaves = iota + BambooLeavesSmall + BambooLeavesLarge +) + +var strBambooLeaves = [...]string{"none", "small", "large"} + +func (b BambooLeaves) String() string { + if int(b) < len(strBambooLeaves) { + return strBambooLeaves[b] + } + return "invalid BambooLeaves" +} + +func (b BambooLeaves) MarshalText() (text []byte, err error) { + if int(b) < len(strBambooLeaves) { + return []byte(strBambooLeaves[b]), nil + } + return nil, errors.New("invalid BambooLeaves: " + strconv.Itoa(int(b))) +} + +func (b *BambooLeaves) UnmarshalText(text []byte) error { + switch str := string(text); str { + case "none": + *b = BambooLeavesNone + case "small": + *b = BambooLeavesSmall + case "large": + *b = BambooLeavesLarge + default: + return errors.New("unknown BambooLeaves: " + str) + } + return nil +} + +type BedPart byte + +const ( + BedPartHead BedPart = iota + BedPartFoot +) + +var strBedPart = [...]string{"head", "foot"} + +func (b BedPart) String() string { + if int(b) < len(strBedPart) { + return strBedPart[b] + } + return "invalid BedPart" +} + +func (b BedPart) MarshalText() (text []byte, err error) { + if int(b) < len(strBedPart) { + return []byte(strBedPart[b]), nil + } + return nil, errors.New("invalid BedPart: " + strconv.Itoa(int(b))) +} + +func (b *BedPart) UnmarshalText(text []byte) error { + switch str := string(text); str { + case "head": + *b = BedPartHead + case "foot": + *b = BedPartFoot + default: + return errors.New("unknown BedPart: " + str) + } + return nil +} + +type BellAttachType byte + +const ( + BellAttachTypeFloor BellAttachType = iota + BellAttachTypeCeiling + BellAttachTypeSingleWall + BellAttachTypeDoubleWall +) + +var strBellAttachType = [...]string{"floor", "ceiling", "single_wall", "double_wall"} + +func (b BellAttachType) String() string { + if int(b) < len(strBellAttachType) { + return strBellAttachType[b] + } + return "invalid BellAttachType" +} + +func (b BellAttachType) MarshalText() (text []byte, err error) { + if int(b) < len(strBellAttachType) { + return []byte(strBellAttachType[b]), nil + } + return nil, errors.New("invalid BellAttachType: " + strconv.Itoa(int(b))) +} + +func (b *BellAttachType) UnmarshalText(text []byte) error { + switch str := string(text); str { + case "floor": + *b = BellAttachTypeFloor + case "ceiling": + *b = BellAttachTypeCeiling + case "single_wall": + *b = BellAttachTypeSingleWall + case "double_wall": + *b = BellAttachTypeDoubleWall + default: + return errors.New("unknown BellAttachType: " + str) + } + return nil +} + +type ChestType byte + +const ( + ChestTypeSingle ChestType = iota + ChestTypeLeft + ChestTypeRight +) + +var strChestType = [...]string{"single", "left", "right"} + +func (c ChestType) String() string { + if int(c) < len(strChestType) { + return strChestType[c] + } + return "invalid ChestType" +} + +func (c ChestType) MarshalText() (text []byte, err error) { + if int(c) < len(strChestType) { + return []byte(strChestType[c]), nil + } + return nil, errors.New("invalid ChestType: " + strconv.Itoa(int(c))) +} + +func (c *ChestType) UnmarshalText(text []byte) error { + switch str := string(text); str { + case "single": + *c = ChestTypeSingle + case "left": + *c = ChestTypeLeft + case "right": + *c = ChestTypeRight + default: + return errors.New("unknown ChestType: " + str) + } + return nil +} + +type ComparatorMode byte + +const ( + ComparatorModeCompare ComparatorMode = iota + ComparatorModeSubtract +) + +var strComparatorMode = [...]string{"compare", "subtract"} + +func (c ComparatorMode) String() string { + if int(c) < len(strComparatorMode) { + return strComparatorMode[c] + } + return "invalid ComparatorMode" +} + +func (c ComparatorMode) MarshalText() (text []byte, err error) { + if int(c) < len(strComparatorMode) { + return []byte(strComparatorMode[c]), nil + } + return nil, errors.New("invalid ComparatorMode: " + strconv.Itoa(int(c))) +} + +func (c *ComparatorMode) UnmarshalText(text []byte) error { + switch str := string(text); str { + case "compare": + *c = ComparatorModeCompare + case "subtract": + *c = ComparatorModeSubtract + default: + return errors.New("unknown ComparatorMode: " + str) + } + return nil +} + +type Direction byte + +const ( + Down Direction = iota + Up + North + South + West + East +) + +var strDirection = [...]string{"down", "up", "north", "south", "west", "east"} + +func (d Direction) String() string { + if int(d) < len(strDirection) { + return strDirection[d] + } + return "invalid Direction" +} + +func (d Direction) MarshalText() (text []byte, err error) { + if int(d) < len(strDirection) { + return []byte(strDirection[d]), nil + } + return nil, errors.New("invalid Direction: " + strconv.Itoa(int(d))) +} + +func (d *Direction) UnmarshalText(text []byte) error { + switch str := string(text); str { + case "down": + *d = Down + case "up": + *d = Up + case "north": + *d = North + case "south": + *d = South + case "west": + *d = West + case "east": + *d = East + default: + return errors.New("unknown Direction: " + str) + } + return nil +} + +type Axis byte + +const ( + X Axis = iota + Y + Z +) + +var strAxis = [...]string{"x", "y", "z"} + +func (a Axis) String() string { + if int(a) < len(strAxis) { + return strAxis[a] + } + return "invalid Axis" +} + +func (a Axis) MarshalText() (text []byte, err error) { + if int(a) < len(strAxis) { + return []byte(strAxis[a]), nil + } + return nil, errors.New("invalid Axis: " + strconv.Itoa(int(a))) +} + +func (a *Axis) UnmarshalText(text []byte) error { + switch str := string(text); str { + case "x": + *a = X + case "y": + *a = Y + case "z": + *a = Z + default: + return errors.New("unknown Axis: " + str) + } + return nil +} + +type DoorHingeSide byte + +const ( + DoorHingeSideLeft DoorHingeSide = iota + DoorHingeSideRight +) + +var strDoorHingeSide = [...]string{"left", "right"} + +func (d DoorHingeSide) String() string { + if int(d) < len(strDoorHingeSide) { + return strDoorHingeSide[d] + } + return "invalid DoorHingeSide" +} + +func (d DoorHingeSide) MarshalText() (text []byte, err error) { + if int(d) < len(strDoorHingeSide) { + return []byte(strDoorHingeSide[d]), nil + } + return nil, errors.New("invalid DoorHingeSide: " + strconv.Itoa(int(d))) +} + +func (d *DoorHingeSide) UnmarshalText(text []byte) error { + switch str := string(text); str { + case "left": + *d = DoorHingeSideLeft + case "right": + *d = DoorHingeSideRight + default: + return errors.New("unknown DoorHingeSide: " + str) + } + return nil +} + +type DoubleBlockHalf byte + +const ( + DoubleBlockHalfUpper DoubleBlockHalf = iota + DoubleBlockHalfLower +) + +var strDoubleBlockHalf = [...]string{"upper", "lower"} + +func (d DoubleBlockHalf) String() string { + if int(d) < len(strDoubleBlockHalf) { + return strDoubleBlockHalf[d] + } + return "invalid DoubleBlockHalf" +} + +func (d DoubleBlockHalf) MarshalText() (text []byte, err error) { + if int(d) < len(strDoubleBlockHalf) { + return []byte(strDoubleBlockHalf[d]), nil + } + return nil, errors.New("invalid DoubleBlockHalf: " + strconv.Itoa(int(d))) +} + +func (d *DoubleBlockHalf) UnmarshalText(text []byte) error { + switch str := string(text); str { + case "upper": + *d = DoubleBlockHalfUpper + case "lower": + *d = DoubleBlockHalfLower + default: + return errors.New("unknown DoubleBlockHalf: " + str) + } + return nil +} + +type DripstoneThickness byte + +const ( + DripstoneThicknessTipMerge DripstoneThickness = iota + DripstoneThicknessTip + DripstoneThicknessFrustum + DripstoneThicknessMiddle + DripstoneThicknessBase +) + +var strDripstoneThickness = [...]string{"tip_merge", "tip", "frustum", "middle", "base"} + +func (d DripstoneThickness) String() string { + if int(d) < len(strDripstoneThickness) { + return strDripstoneThickness[d] + } + return "invalid DripstoneThickness" +} + +func (d DripstoneThickness) MarshalText() (text []byte, err error) { + if int(d) < len(strDripstoneThickness) { + return []byte(strDripstoneThickness[d]), nil + } + return nil, errors.New("invalid DripstoneThickness: " + strconv.Itoa(int(d))) +} + +func (d *DripstoneThickness) UnmarshalText(text []byte) error { + switch str := string(text); str { + case "tip_merge": + *d = DripstoneThicknessTipMerge + case "tip": + *d = DripstoneThicknessTip + case "frustum": + *d = DripstoneThicknessFrustum + case "middle": + *d = DripstoneThicknessMiddle + case "base": + *d = DripstoneThicknessBase + default: + return errors.New("unknown DripstoneThickness: " + str) + } + return nil +} + +type Half byte + +const ( + Top Half = iota + Bottom +) + +var strHalf = [...]string{"top", "bottom"} + +func (h Half) String() string { + if int(h) < len(strHalf) { + return strHalf[h] + } + return "invalid Half" +} + +func (h Half) MarshalText() (text []byte, err error) { + if int(h) < len(strHalf) { + return []byte(strHalf[h]), nil + } + return nil, errors.New("invalid Half: " + strconv.Itoa(int(h))) +} + +func (h *Half) UnmarshalText(text []byte) error { + switch str := string(text); str { + case "top": + *h = Top + case "bottom": + *h = Bottom + default: + return errors.New("unknown Half: " + str) + } + return nil +} + +type NoteBlockInstrument byte + +const ( + NoteBlockInstrumentHarp NoteBlockInstrument = iota + NoteBlockInstrumentBasedrum + NoteBlockInstrumentSnare + NoteBlockInstrumentHat + NoteBlockInstrumentBass + NoteBlockInstrumentFlute + NoteBlockInstrumentBell + NoteBlockInstrumentGuitar + NoteBlockInstrumentChime + NoteBlockInstrumentXylophone + NoteBlockInstrumentIronXylophone + NoteBlockInstrumentCowBell + NoteBlockInstrumentDidgeridoo + NoteBlockInstrumentBit + NoteBlockInstrumentBanjo + NoteBlockInstrumentPling +) + +var strNoteBlockInstrument = [...]string{"harp", "basedrum", "snare", "hat", "bass", "flute", "bell", "guitar", "chime", "xylophone", "iron_xylophone", "cow_bell", "didgeridoo", "bit", "banjo", "pling"} + +func (n NoteBlockInstrument) String() string { + if int(n) < len(strNoteBlockInstrument) { + return strNoteBlockInstrument[n] + } + return "invalid NoteBlockInstrument" +} + +func (n NoteBlockInstrument) MarshalText() (text []byte, err error) { + if int(n) < len(strNoteBlockInstrument) { + return []byte(strNoteBlockInstrument[n]), nil + } + return nil, errors.New("invalid NoteBlockInstrument: " + strconv.Itoa(int(n))) +} + +func (n *NoteBlockInstrument) UnmarshalText(text []byte) error { + switch str := string(text); str { + case "harp": + *n = NoteBlockInstrumentHarp + case "basedrum": + *n = NoteBlockInstrumentBasedrum + case "snare": + *n = NoteBlockInstrumentSnare + case "hat": + *n = NoteBlockInstrumentHat + case "bass": + *n = NoteBlockInstrumentBass + case "flute": + *n = NoteBlockInstrumentFlute + case "bell": + *n = NoteBlockInstrumentBell + case "guitar": + *n = NoteBlockInstrumentGuitar + case "chime": + *n = NoteBlockInstrumentChime + case "xylophone": + *n = NoteBlockInstrumentXylophone + case "iron_xylophone": + *n = NoteBlockInstrumentIronXylophone + case "cow_bell": + *n = NoteBlockInstrumentCowBell + case "didgeridoo": + *n = NoteBlockInstrumentDidgeridoo + case "bit": + *n = NoteBlockInstrumentBit + case "banjo": + *n = NoteBlockInstrumentBanjo + case "pling": + *n = NoteBlockInstrumentPling + default: + return errors.New("unknown NoteBlockInstrument: " + str) + } + return nil +} + +type PistonType byte + +const ( + PistonTypeNormal PistonType = iota + PistonTypeSticky +) + +var strPistonType = [...]string{"normal", "sticky"} + +func (p PistonType) String() string { + if int(p) < len(strPistonType) { + return strPistonType[p] + } + return "invalid PistonType" +} + +func (p PistonType) MarshalText() (text []byte, err error) { + if int(p) < len(strPistonType) { + return []byte(strPistonType[p]), nil + } + return nil, errors.New("invalid PistonType: " + strconv.Itoa(int(p))) +} + +func (p *PistonType) UnmarshalText(text []byte) error { + switch str := string(text); str { + case "normal": + *p = PistonTypeNormal + case "sticky": + *p = PistonTypeSticky + default: + return errors.New("unknown PistonType: " + str) + } + return nil +} + +type RailShape byte + +const ( + RailShapeNorthSouth RailShape = iota + RailShapeEastWest + RailShapeAscendingEast + RailShapeAscendingWest + RailShapeAscendingNorth + RailShapeAscendingSouth + RailShapeSouthEast + RailShapeSouthWest + RailShapeNorthWest + RailShapeNorthEast +) + +var strRailShape = [...]string{"north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south", "south_east", "south_west", "north_west", "north_east"} + +func (r RailShape) String() string { + if int(r) < len(strRailShape) { + return strRailShape[r] + } + return "invalid RailShape" +} + +func (r RailShape) MarshalText() (text []byte, err error) { + if int(r) < len(strRailShape) { + return []byte(strRailShape[r]), nil + } + return nil, errors.New("invalid RailShape: " + strconv.Itoa(int(r))) +} + +func (r *RailShape) UnmarshalText(text []byte) error { + switch str := string(text); str { + case "north_south": + *r = RailShapeNorthSouth + case "east_west": + *r = RailShapeEastWest + case "ascending_east": + *r = RailShapeAscendingEast + case "ascending_west": + *r = RailShapeAscendingWest + case "ascending_north": + *r = RailShapeAscendingNorth + case "ascending_south": + *r = RailShapeAscendingSouth + case "south_east": + *r = RailShapeSouthEast + case "south_west": + *r = RailShapeSouthWest + case "north_west": + *r = RailShapeNorthWest + case "north_east": + *r = RailShapeNorthEast + default: + return errors.New("unknown RailShape: " + str) + } + return nil +} + +type RedstoneSide byte + +const ( + RedstoneSideUp RedstoneSide = iota + RedstoneSideSide + RedstoneSideNone +) + +var strRedstoneSide = [...]string{"up", "side", "none"} + +func (r RedstoneSide) String() string { + if int(r) < len(strRedstoneSide) { + return strRedstoneSide[r] + } + return "invalid RedstoneSide" +} + +func (r RedstoneSide) MarshalText() (text []byte, err error) { + if int(r) < len(strRedstoneSide) { + return []byte(strRedstoneSide[r]), nil + } + return nil, errors.New("invalid RedstoneSide: " + strconv.Itoa(int(r))) +} + +func (r *RedstoneSide) UnmarshalText(text []byte) error { + switch str := string(text); str { + case "up": + *r = RedstoneSideUp + case "side": + *r = RedstoneSideSide + case "none": + *r = RedstoneSideNone + default: + return errors.New("unknown RedstoneSide: " + str) + } + return nil +} + +type SculkSensorPhase byte + +const ( + SculkSensorPhaseInactive SculkSensorPhase = iota + SculkSensorPhaseActive + SculkSensorPhaseCooldown +) + +var strSculkSensorPhase = [...]string{"inactive", "active", "cooldown"} + +func (s SculkSensorPhase) String() string { + if int(s) < len(strSculkSensorPhase) { + return strSculkSensorPhase[s] + } + return "invalid SculkSensorPhase" +} + +func (s SculkSensorPhase) MarshalText() (text []byte, err error) { + if int(s) < len(strSculkSensorPhase) { + return []byte(strSculkSensorPhase[s]), nil + } + return nil, errors.New("invalid SculkSensorPhase: " + strconv.Itoa(int(s))) +} + +func (s *SculkSensorPhase) UnmarshalText(text []byte) error { + switch str := string(text); str { + case "inactive": + *s = SculkSensorPhaseInactive + case "active": + *s = SculkSensorPhaseActive + case "cooldown": + *s = SculkSensorPhaseCooldown + default: + return errors.New("unknown SculkSensorPhase: " + str) + } + return nil +} + +type SlabType byte + +const ( + SlabTypeTop SlabType = iota + SlabTypeBottom + SlabTypeDouble +) + +var strSlabType = [...]string{"top", "bottom", "double"} + +func (s SlabType) String() string { + if int(s) < len(strSlabType) { + return strSlabType[s] + } + return "invalid SlabType" +} + +func (s SlabType) MarshalText() (text []byte, err error) { + if int(s) < len(strSlabType) { + return []byte(strSlabType[s]), nil + } + return nil, errors.New("invalid SlabType: " + strconv.Itoa(int(s))) +} + +func (s *SlabType) UnmarshalText(text []byte) error { + switch str := string(text); str { + case "top": + *s = SlabTypeTop + case "bottom": + *s = SlabTypeBottom + case "double": + *s = SlabTypeDouble + default: + return errors.New("unknown SlabType: " + str) + } + return nil +} + +type StairsShape byte + +const ( + StairsShapeStraight StairsShape = iota + StairsShapeInnerLeft + StairsShapeInnerRight + StairsShapeOuterLeft + StairsShapeOuterRight +) + +var strStairsShape = [...]string{"straight", "inner_left", "inner_right", "outer_left", "outer_right"} + +func (s StairsShape) String() string { + if int(s) < len(strStairsShape) { + return strStairsShape[s] + } + return "invalid StairsShape" +} + +func (s StairsShape) MarshalText() (text []byte, err error) { + if int(s) < len(strStairsShape) { + return []byte(strStairsShape[s]), nil + } + return nil, errors.New("invalid StairsShape: " + strconv.Itoa(int(s))) +} + +func (s *StairsShape) UnmarshalText(text []byte) error { + switch str := string(text); str { + case "straight": + *s = StairsShapeStraight + case "inner_left": + *s = StairsShapeInnerLeft + case "inner_right": + *s = StairsShapeInnerRight + case "outer_left": + *s = StairsShapeOuterLeft + case "outer_right": + *s = StairsShapeOuterRight + default: + return errors.New("unknown StairsShape: " + str) + } + return nil +} + +type StructureMode byte + +const ( + StructureModeSave StructureMode = iota + StructureModeLoad + StructureModeCorner + StructureModeData +) + +var strStructureMode = [...]string{"save", "load", "corner", "data"} + +func (s StructureMode) String() string { + if int(s) < len(strStructureMode) { + return strStructureMode[s] + } + return "invalid StructureMode" +} + +func (s StructureMode) MarshalText() (text []byte, err error) { + if int(s) < len(strStructureMode) { + return []byte(strStructureMode[s]), nil + } + return nil, errors.New("invalid StructureMode: " + strconv.Itoa(int(s))) +} + +func (s *StructureMode) UnmarshalText(text []byte) error { + switch str := string(text); str { + case "save": + *s = StructureModeSave + case "load": + *s = StructureModeLoad + case "corner": + *s = StructureModeCorner + case "data": + *s = StructureModeData + default: + return errors.New("unknown StructureMode: " + str) + } + return nil +} + +type Tilt byte + +const ( + TiltNone Tilt = iota + TiltUnstable + TiltPartial + TiltFull +) + +var strTilt = [...]string{"none", "unstable", "partial", "full"} + +func (t Tilt) String() string { + if int(t) < len(strTilt) { + return strTilt[t] + } + return "invalid Tilt" +} + +func (t Tilt) MarshalText() (text []byte, err error) { + if int(t) < len(strTilt) { + return []byte(strTilt[t]), nil + } + return nil, errors.New("invalid Tilt: " + strconv.Itoa(int(t))) +} + +func (t *Tilt) UnmarshalText(text []byte) error { + switch str := string(text); str { + case "none": + *t = TiltNone + case "unstable": + *t = TiltUnstable + case "partial": + *t = TiltPartial + case "full": + *t = TiltFull + default: + return errors.New("unknown Tilt: " + str) + } + return nil +} + +type WallSide byte + +const ( + WallSideNone WallSide = iota + WallSideLow + WallSideTall +) + +var strWallSide = [...]string{"none", "low", "tall"} + +func (w WallSide) String() string { + if int(w) < len(strWallSide) { + return strWallSide[w] + } + return "invalid WallSide" +} + +func (w WallSide) MarshalText() (text []byte, err error) { + if int(w) < len(strWallSide) { + return []byte(strWallSide[w]), nil + } + return nil, errors.New("invalid WallSide: " + strconv.Itoa(int(w))) +} + +func (w *WallSide) UnmarshalText(text []byte) error { + switch str := string(text); str { + case "none": + *w = WallSideNone + case "low": + *w = WallSideLow + case "tall": + *w = WallSideTall + default: + return errors.New("unknown WallSide: " + str) + } + return nil +} + +type FrontAndTop byte + +const ( + DownEast FrontAndTop = iota + DownNorth + DownSouth + DownWest + UpEast + UpNorth + UpSouth + UpWest + WestUp + EastUp + NorthUp + SouthUp +) + +var strFrontAndTop = [...]string{"down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"} + +func (f FrontAndTop) String() string { + if int(f) < len(strFrontAndTop) { + return strFrontAndTop[f] + } + return "invalid FrontAndTop" +} + +func (f FrontAndTop) MarshalText() (text []byte, err error) { + if int(f) < len(strFrontAndTop) { + return []byte(strFrontAndTop[f]), nil + } + return nil, errors.New("invalid FrontAndTop: " + strconv.Itoa(int(f))) +} + +func (f *FrontAndTop) UnmarshalText(text []byte) error { + switch str := string(text); str { + case "down_east": + *f = DownEast + case "down_north": + *f = DownNorth + case "down_south": + *f = DownSouth + case "down_west": + *f = DownWest + case "up_east": + *f = UpEast + case "up_north": + *f = UpNorth + case "up_south": + *f = UpSouth + case "up_west": + *f = UpWest + case "west_up": + *f = WestUp + case "east_up": + *f = EastUp + case "north_up": + *f = NorthUp + case "south_up": + *f = SouthUp + default: + return errors.New("unknown FrontAndTop: " + str) + } + return nil +} diff --git a/nbt/decode.go b/nbt/decode.go index 234fa67..b23c0a8 100644 --- a/nbt/decode.go +++ b/nbt/decode.go @@ -23,6 +23,9 @@ func Unmarshal(data []byte, v interface{}) error { // For example, you can decode an NBT value which root tag is TagCompound(0x0a) // into a struct or map, but not a string. // +// If v implement Unmarshaler, the method will be called and override the default behavior. +// Else if v implement encoding.TextUnmarshaler, the value will be encoded as TagString. +// // This method also return tag name of the root tag. // In real world, it is often empty, but the API should allow you to get it when ever you want. func (d *Decoder) Decode(v interface{}) (string, error) { diff --git a/nbt/decode_test.go b/nbt/decode_test.go index 0e03bf3..8f27907 100644 --- a/nbt/decode_test.go +++ b/nbt/decode_test.go @@ -405,72 +405,3 @@ func TestDecoder_Decode_textUnmarshaler(t *testing.T) { t.Errorf("b should be true") } } - -func TestRawMessage_Decode(t *testing.T) { - data := []byte{ - TagCompound, 0, 2, 'a', 'b', - TagInt, 0, 3, 'K', 'e', 'y', 0, 0, 0, 12, - TagString, 0, 5, 'V', 'a', 'l', 'u', 'e', 0, 4, 'T', 'n', 'z', 'e', - TagList, 0, 4, 'L', 'i', 's', 't', TagCompound, 0, 0, 0, 2, 0, 0, - TagEnd, - } - var container struct { - Key int32 - Value RawMessage - List RawMessage - } - - if tag, err := NewDecoder(bytes.NewReader(data)).Decode(&container); err != nil { - t.Fatal(tag) - } else { - if tag != "ab" { - t.Fatalf("Decode tag name error: want %s, get: %s", "ab", tag) - } - if container.Key != 12 { - t.Fatalf("Decode Key error: want %v, get: %v", 12, container.Key) - } - if !bytes.Equal(container.Value.Data, []byte{ - 0, 4, 'T', 'n', 'z', 'e', - }) { - t.Fatalf("Decode Key error: get: %v", container.Value) - } - if !bytes.Equal(container.List.Data, []byte{ - TagCompound, 0, 0, 0, 2, - 0, 0, - }) { - t.Fatalf("Decode List error: get: %v", container.List) - } - } -} - -func TestStringifiedMessage_Decode(t *testing.T) { - data := []byte{ - TagCompound, 0, 2, 'a', 'b', - TagInt, 0, 3, 'K', 'e', 'y', 0, 0, 0, 12, - TagString, 0, 5, 'V', 'a', 'l', 'u', 'e', 0, 5, 'T', 'n', ' ', 'z', 'e', - TagList, 0, 4, 'L', 'i', 's', 't', TagCompound, 0, 0, 0, 2, 0, 0, - TagEnd, - } - var container struct { - Key int32 - Value StringifiedMessage - List StringifiedMessage - } - - if tag, err := NewDecoder(bytes.NewReader(data)).Decode(&container); err != nil { - t.Fatal(tag, err) - } else { - if tag != "ab" { - t.Fatalf("UnmarshalNBT tag name error: want %s, get: %s", "ab", tag) - } - if container.Key != 12 { - t.Fatalf("UnmarshalNBT Key error: want %v, get: %v", 12, container.Key) - } - if container.Value != `"Tn ze"` { - t.Fatalf("UnmarshalNBT Key error: get: %v", container.Value) - } - if container.List != "[{},{}]" { - t.Fatalf("UnmarshalNBT List error: get: %v", container.List) - } - } -} diff --git a/nbt/encode.go b/nbt/encode.go index a0b0468..c230335 100644 --- a/nbt/encode.go +++ b/nbt/encode.go @@ -2,6 +2,7 @@ package nbt import ( "bytes" + "encoding" "errors" "fmt" "io" @@ -37,8 +38,8 @@ func NewEncoder(w io.Writer) *Encoder { // expect `[]int8`, `[]int32`, `[]int64`, `[]uint8`, `[]uint32` and `[]uint64`, // which TagByteArray, TagIntArray and TagLongArray. // To force encode them as TagList, add a struct field tag. -// You haven't ability to encode them as TagList as root element at this time, -// issue or pull-request is welcome. +// +// func (e *Encoder) Encode(v interface{}, tagName string) error { t, val := getTagType(reflect.ValueOf(v)) return e.marshal(val, t, tagName) @@ -129,10 +130,22 @@ func (e *Encoder) writeValue(val reflect.Value, tagType byte) error { } case TagString: - if err := e.writeInt16(int16(val.Len())); err != nil { + var str []byte + if val.NumMethod() > 0 && val.CanInterface() { + if t, ok := val.Interface().(encoding.TextMarshaler); ok { + var err error + str, err = t.MarshalText() + if err != nil { + return err + } + } + } else { + str = []byte(val.String()) + } + if err := e.writeInt16(int16(len(str))); err != nil { return err } - _, err := e.w.Write([]byte(val.String())) + _, err := e.w.Write(str) return err case TagCompound: @@ -205,17 +218,23 @@ 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().(Marshaler); ok { + i := v.Interface() + if u, ok := i.(Marshaler); ok { return u.TagType(), v + } else if _, ok := i.(encoding.TextMarshaler); ok { + return TagString, v } } v = v.Elem() } - if v.CanInterface() { - if encoder, ok := v.Interface().(Marshaler); ok { - return encoder.TagType(), v + if v.Type().NumMethod() > 0 && v.CanInterface() { + i := v.Interface() + if u, ok := i.(Marshaler); ok { + return u.TagType(), v + } else if _, ok := i.(encoding.TextMarshaler); ok { + return TagString, v } } diff --git a/nbt/encode_test.go b/nbt/encode_test.go index 6f7f721..fd488b8 100644 --- a/nbt/encode_test.go +++ b/nbt/encode_test.go @@ -208,29 +208,6 @@ func TestEncoder_Encode_map(t *testing.T) { } } -func TestRawMessage_Encode(t *testing.T) { - data := []byte{ - TagCompound, 0, 2, 'a', 'b', - TagInt, 0, 3, 'K', 'e', 'y', 0, 0, 0, 12, - TagString, 0, 5, 'V', 'a', 'l', 'u', 'e', 0, 4, 'T', 'n', 'z', 'e', - TagEnd, - } - var container struct { - Key int32 - Value RawMessage - } - container.Key = 12 - container.Value.Type = TagString - container.Value.Data = []byte{0, 4, 'T', 'n', 'z', 'e'} - - var buf bytes.Buffer - if err := NewEncoder(&buf).Encode(container, "ab"); err != nil { - t.Fatalf("Encode error: %v", err) - } else if !bytes.Equal(data, buf.Bytes()) { - t.Fatalf("Encode error: want %v, get: %v", data, buf.Bytes()) - } -} - func TestEncoder_Encode_interface(t *testing.T) { data := map[string]interface{}{ "Key": int32(12), @@ -253,3 +230,18 @@ func TestEncoder_Encode_interface(t *testing.T) { t.Fatalf("want: (%v, %v), but got (%v, %v)", 12, "Tnze", container.Key, container.Value) } } + +func TestEncoder_Encode_textMarshaler(t *testing.T) { + var b TextBool = true + data, err := Marshal(&b) + if err != nil { + t.Fatal(err) + } + wants := []byte{ + TagString, 0, 0, + 0, 4, 't', 'r', 'u', 'e', + } + if !bytes.Equal(data, wants) { + t.Errorf("get %v, want %v", data, wants) + } +} diff --git a/nbt/rawmsg_test.go b/nbt/rawmsg_test.go new file mode 100644 index 0000000..e994616 --- /dev/null +++ b/nbt/rawmsg_test.go @@ -0,0 +1,66 @@ +package nbt + +import ( + "bytes" + "testing" +) + +func TestRawMessage_Encode(t *testing.T) { + data := []byte{ + TagCompound, 0, 2, 'a', 'b', + TagInt, 0, 3, 'K', 'e', 'y', 0, 0, 0, 12, + TagString, 0, 5, 'V', 'a', 'l', 'u', 'e', 0, 4, 'T', 'n', 'z', 'e', + TagEnd, + } + var container struct { + Key int32 + Value RawMessage + } + container.Key = 12 + container.Value.Type = TagString + container.Value.Data = []byte{0, 4, 'T', 'n', 'z', 'e'} + + var buf bytes.Buffer + if err := NewEncoder(&buf).Encode(container, "ab"); err != nil { + t.Fatalf("Encode error: %v", err) + } else if !bytes.Equal(data, buf.Bytes()) { + t.Fatalf("Encode error: want %v, get: %v", data, buf.Bytes()) + } +} + +func TestRawMessage_Decode(t *testing.T) { + data := []byte{ + TagCompound, 0, 2, 'a', 'b', + TagInt, 0, 3, 'K', 'e', 'y', 0, 0, 0, 12, + TagString, 0, 5, 'V', 'a', 'l', 'u', 'e', 0, 4, 'T', 'n', 'z', 'e', + TagList, 0, 4, 'L', 'i', 's', 't', TagCompound, 0, 0, 0, 2, 0, 0, + TagEnd, + } + var container struct { + Key int32 + Value RawMessage + List RawMessage + } + + if tag, err := NewDecoder(bytes.NewReader(data)).Decode(&container); err != nil { + t.Fatal(tag) + } else { + if tag != "ab" { + t.Fatalf("Decode tag name error: want %s, get: %s", "ab", tag) + } + if container.Key != 12 { + t.Fatalf("Decode Key error: want %v, get: %v", 12, container.Key) + } + if !bytes.Equal(container.Value.Data, []byte{ + 0, 4, 'T', 'n', 'z', 'e', + }) { + t.Fatalf("Decode Key error: get: %v", container.Value) + } + if !bytes.Equal(container.List.Data, []byte{ + TagCompound, 0, 0, 0, 2, + 0, 0, + }) { + t.Fatalf("Decode List error: get: %v", container.List) + } + } +} diff --git a/nbt/snbt_encode_test.go b/nbt/snbt_encode_test.go index 9235409..77ec6aa 100644 --- a/nbt/snbt_encode_test.go +++ b/nbt/snbt_encode_test.go @@ -1,3 +1,38 @@ package nbt -//TODO: Test SNBT encode +import ( + "bytes" + "testing" +) + +func TestStringifiedMessage_Decode(t *testing.T) { + data := []byte{ + TagCompound, 0, 2, 'a', 'b', + TagInt, 0, 3, 'K', 'e', 'y', 0, 0, 0, 12, + TagString, 0, 5, 'V', 'a', 'l', 'u', 'e', 0, 5, 'T', 'n', ' ', 'z', 'e', + TagList, 0, 4, 'L', 'i', 's', 't', TagCompound, 0, 0, 0, 2, 0, 0, + TagEnd, + } + var container struct { + Key int32 + Value StringifiedMessage + List StringifiedMessage + } + + if tag, err := NewDecoder(bytes.NewReader(data)).Decode(&container); err != nil { + t.Fatal(tag, err) + } else { + if tag != "ab" { + t.Fatalf("UnmarshalNBT tag name error: want %s, get: %s", "ab", tag) + } + if container.Key != 12 { + t.Fatalf("UnmarshalNBT Key error: want %v, get: %v", 12, container.Key) + } + if container.Value != `"Tn ze"` { + t.Fatalf("UnmarshalNBT Key error: get: %v", container.Value) + } + if container.List != "[{},{}]" { + t.Fatalf("UnmarshalNBT List error: get: %v", container.List) + } + } +} diff --git a/server/gameplay.go b/server/gameplay.go index d325d7d..c7a75f8 100644 --- a/server/gameplay.go +++ b/server/gameplay.go @@ -45,10 +45,10 @@ type PacketHandler struct { type packetHandlerFunc func(player *Player, packet Packet758) error //go:embed DimensionCodec.snbt -var dimensionCodecSNBT string +var dimensionCodecSNBT nbt.StringifiedMessage //go:embed Dimension.snbt -var dimensionSNBT string +var dimensionSNBT nbt.StringifiedMessage func NewGame(dim Level, components ...Component) *Game { g := &Game{ @@ -91,8 +91,8 @@ func (g *Game) AcceptPlayer(name string, id uuid.UUID, protocol int32, conn *net pk.Array([]pk.Identifier{ pk.Identifier(dimInfo.Name), }), - pk.NBT(nbt.StringifiedMessage(dimensionCodecSNBT)), - pk.NBT(nbt.StringifiedMessage(dimensionSNBT)), + pk.NBT(dimensionCodecSNBT), + pk.NBT(dimensionSNBT), pk.Identifier(dimInfo.Name), // World Name pk.Long(dimInfo.HashedSeed), // Hashed seed pk.VarInt(0), // Max Players (Ignored by client)