diff --git a/cmd/strom/print_replay/testdata/265_78c731784e6e834a_test.go b/cmd/strom/print_replay/testdata/reg_265_78c731784e6e834a_test.go similarity index 89% rename from cmd/strom/print_replay/testdata/265_78c731784e6e834a_test.go rename to cmd/strom/print_replay/testdata/reg_265_78c731784e6e834a_test.go index 6817354..46d38a4 100644 --- a/cmd/strom/print_replay/testdata/265_78c731784e6e834a_test.go +++ b/cmd/strom/print_replay/testdata/reg_265_78c731784e6e834a_test.go @@ -3,16 +3,15 @@ package failed_packets_test import ( "bytes" "testing" - generated "github.com/admin-else/strom/mc/proto_generated/v26_2" ) -// Error: EOF -func TestFailedPacket78C731784E6E834A(t *testing.T) { +// Decode regression: declare_commands (26.2) - bitfield + extraNodeData fix +func TestRegressionPacket78C731784E6E834A(t *testing.T) { p := &generated.PlayToClientPacketDeclareCommands{} b := bytes.NewReader([]byte{0x1a, 0x0, 0xa, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0x1, 0x1, 0xb, 0x2, 0x6d, 0x65, 0x5, 0x1, 0xc, 0x4, 0x68, 0x65, 0x6c, 0x70, 0x5, 0x1, 0xd, 0x4, 0x6c, 0x69, 0x73, 0x74, 0x1, 0x1, 0xe, 0x3, 0x6d, 0x73, 0x67, 0x9, 0x0, 0x4, 0x4, 0x74, 0x65, 0x6c, 0x6c, 0x9, 0x0, 0x4, 0x1, 0x77, 0x1, 0x2, 0xf, 0x10, 0x6, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x1, 0x1, 0x11, 0x7, 0x74, 0x65, 0x61, 0x6d, 0x6d, 0x73, 0x67, 0x9, 0x0, 0x8, 0x2, 0x74, 0x6d, 0x1, 0x1, 0x12, 0x7, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x6, 0x0, 0x6, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x14, 0x6, 0x0, 0x7, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5, 0x2, 0x5, 0x0, 0x5, 0x75, 0x75, 0x69, 0x64, 0x73, 0x2, 0x1, 0x13, 0x7, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x6, 0x2, 0x1, 0x1, 0x14, 0x5, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1, 0x1, 0x15, 0x4, 0x72, 0x6f, 0x6c, 0x6c, 0x6, 0x0, 0x7, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x14, 0x16, 0x2, 0x16, 0x17, 0x9, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x14, 0x6d, 0x69, 0x6e, 0x65, 0x63, 0x72, 0x61, 0x66, 0x74, 0x3a, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6, 0x0, 0x7, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x14, 0x6, 0x0, 0x5, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x27, 0x6, 0x0, 0x5, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x27, 0x1, 0x1, 0x18, 0x3, 0x61, 0x64, 0x64, 0x1, 0x1, 0x19, 0x3, 0x73, 0x65, 0x74, 0x6, 0x0, 0x5, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3, 0x0, 0x6, 0x0, 0x5, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3, 0x0, 0x0}) err := p.Decode(b) - if err == nil { - t.Fatalf("expected decode error but got nil") + if err != nil { + t.Fatalf("regression: decode failed: %v", err) } } diff --git a/mc/data/minecraft-data/pc/1.21.11/protocol.json b/mc/data/minecraft-data/pc/1.21.11/protocol.json index 5a0e43e..0a3800d 100644 --- a/mc/data/minecraft-data/pc/1.21.11/protocol.json +++ b/mc/data/minecraft-data/pc/1.21.11/protocol.json @@ -4120,11 +4120,6 @@ "type": [ "bitfield", [ - { - "name": "unused", - "size": 2, - "signed": false - }, { "name": "allows_restricted", "size": 1, @@ -11697,4 +11692,4 @@ } } } -} \ No newline at end of file +} diff --git a/mc/data/minecraft-data/pc/1.21.8/protocol.json b/mc/data/minecraft-data/pc/1.21.8/protocol.json index 2390b42..1f087c0 100644 --- a/mc/data/minecraft-data/pc/1.21.8/protocol.json +++ b/mc/data/minecraft-data/pc/1.21.8/protocol.json @@ -2803,11 +2803,6 @@ "type": [ "bitfield", [ - { - "name": "unused", - "size": 2, - "signed": false - }, { "name": "allows_restricted", "size": 1, @@ -10259,4 +10254,4 @@ } } } -} \ No newline at end of file +} diff --git a/mc/data/minecraft-data/pc/1.21.9/protocol.json b/mc/data/minecraft-data/pc/1.21.9/protocol.json index b91f83a..008b3e5 100644 --- a/mc/data/minecraft-data/pc/1.21.9/protocol.json +++ b/mc/data/minecraft-data/pc/1.21.9/protocol.json @@ -3822,11 +3822,6 @@ "type": [ "bitfield", [ - { - "name": "unused", - "size": 2, - "signed": false - }, { "name": "allows_restricted", "size": 1, @@ -11399,4 +11394,4 @@ } } } -} \ No newline at end of file +} diff --git a/mc/data/minecraft-data/pc/26.1/protocol.json b/mc/data/minecraft-data/pc/26.1/protocol.json index aeb6e59..59a5328 100644 --- a/mc/data/minecraft-data/pc/26.1/protocol.json +++ b/mc/data/minecraft-data/pc/26.1/protocol.json @@ -4112,11 +4112,6 @@ "type": [ "bitfield", [ - { - "name": "unused", - "size": 2, - "signed": false - }, { "name": "allows_restricted", "size": 1, diff --git a/mc/data/minecraft-data/pc/26.2/protocol.json b/mc/data/minecraft-data/pc/26.2/protocol.json index 2214ed5..e77ef6e 100644 --- a/mc/data/minecraft-data/pc/26.2/protocol.json +++ b/mc/data/minecraft-data/pc/26.2/protocol.json @@ -4112,11 +4112,6 @@ "type": [ "bitfield", [ - { - "name": "unused", - "size": 2, - "signed": false - }, { "name": "allows_restricted", "size": 1, @@ -5726,12 +5721,15 @@ "mappings": { "0": "empty", "1": "any_fuel", - "2": "item", - "3": "item_stack", - "4": "tag", - "5": "smithing_trim", - "6": "with_remainder", - "7": "composite" + "2": "with_any_potion", + "3": "only_with_component", + "4": "item", + "5": "item_stack", + "6": "tag", + "7": "dyed", + "8": "smithing_trim", + "9": "with_remainder", + "10": "composite" } } ] @@ -5745,9 +5743,44 @@ "fields": { "empty": "void", "any_fuel": "void", + "with_any_potion": [ + "container", + [ + { + "name": "display", + "type": "SlotDisplay" + } + ] + ], + "only_with_component": [ + "container", + [ + { + "name": "source", + "type": "SlotDisplay" + }, + { + "name": "component", + "type": "IDSet" + } + ] + ], "item": "varint", "item_stack": "Slot", "tag": "string", + "dyed": [ + "container", + [ + { + "name": "dye", + "type": "SlotDisplay" + }, + { + "name": "target", + "type": "SlotDisplay" + } + ] + ], "smithing_trim": [ "container", [ @@ -11779,4 +11812,4 @@ } } } -} \ No newline at end of file +} diff --git a/mc/proto_generated/v1_12_2/proto.go b/mc/proto_generated/v1_12_2/proto.go index dfd9e56..91fab4f 100644 --- a/mc/proto_generated/v1_12_2/proto.go +++ b/mc/proto_generated/v1_12_2/proto.go @@ -1,6 +1,6 @@ // Code generated by strom. DO NOT EDIT. // source: minecraft-data/pc/1.12.2/protocol.json (sha256:21c57208db654a5e14a34cb696570080df179c5c642e53b16120399eee9232be) -// version: v0.6.6-0.20260805175346-53d366ae5301+dirty (go1.26.2) +// version: v0.6.6-0.20260805191907-f4c27628815b+dirty (go1.26.2) package v1_12_2 import ( @@ -432,17 +432,17 @@ func (ret *Position) Decode(r io.ReadSeeker) (err error) { if err != nil { return } - ret.X = int32(PositionPacked << 0 >> 38) - if ret.X >= 1<<25 { - ret.X -= 1 << 26 + ret.Z = int32(PositionPacked >> 0 & 67108863) + if ret.Z >= 1<<25 { + ret.Z -= 1 << 26 } - ret.Y = int16(PositionPacked << 26 >> 52) + ret.Y = int16(PositionPacked >> 26 & 4095) if ret.Y >= 1<<11 { ret.Y -= 1 << 12 } - ret.Z = int32(PositionPacked << 38 >> 38) - if ret.Z >= 1<<25 { - ret.Z -= 1 << 26 + ret.X = int32(PositionPacked >> 38 & 67108863) + if ret.X >= 1<<25 { + ret.X -= 1 << 26 } return } @@ -2810,10 +2810,10 @@ func (ret *PlayToClientPacketAdvancements) Decode(r io.ReadSeeker) (err error) { if err != nil { return } - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Unused = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked << 0 >> 3 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Hidden = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<29>>31 == 1 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.ShowToast = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<30>>31 == 1 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<31>>31 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>0&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.ShowToast = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>1&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Hidden = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>2&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Unused = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked >> 3 & 536870911 switch PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture { case true: var PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataBackgroundTexture1Tmp string diff --git a/mc/proto_generated/v1_14_4/proto.go b/mc/proto_generated/v1_14_4/proto.go index 68894cd..695076e 100644 --- a/mc/proto_generated/v1_14_4/proto.go +++ b/mc/proto_generated/v1_14_4/proto.go @@ -1,6 +1,6 @@ // Code generated by strom. DO NOT EDIT. // source: minecraft-data/pc/1.14.4/protocol.json (sha256:b6edff5abaaf234037b5019024d749e27e746250a23253bb4ad77d8f76e93167) -// version: v0.6.6-0.20260805175346-53d366ae5301+dirty (go1.26.2) +// version: v0.6.6-0.20260805191907-f4c27628815b+dirty (go1.26.2) package v1_14_4 import ( @@ -52,17 +52,19 @@ type CommandNode struct { ExtraNodeData any } +var CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpMap = map[int32]string{0: "SINGLE_WORD", 1: "QUOTABLE_PHRASE", 2: "GREEDY_PHRASE"} + func (ret *CommandNode) Decode(r io.ReadSeeker) (err error) { var CommandNodeFlagsPacked uint8 err = binary.Read(r, binary.BigEndian, &CommandNodeFlagsPacked) if err != nil { return } - ret.Flags.Unused = CommandNodeFlagsPacked << 0 >> 5 - ret.Flags.HasCustomSuggestions = CommandNodeFlagsPacked<<3>>7 == 1 - ret.Flags.HasRedirectNode = CommandNodeFlagsPacked<<4>>7 == 1 - ret.Flags.HasCommand = CommandNodeFlagsPacked<<5>>7 == 1 - ret.Flags.CommandNodeType = CommandNodeFlagsPacked << 6 >> 6 + ret.Flags.CommandNodeType = CommandNodeFlagsPacked >> 0 & 3 + ret.Flags.HasCommand = CommandNodeFlagsPacked>>2&1 == 1 + ret.Flags.HasRedirectNode = CommandNodeFlagsPacked>>3&1 == 1 + ret.Flags.HasCustomSuggestions = CommandNodeFlagsPacked>>4&1 == 1 + ret.Flags.Unused = CommandNodeFlagsPacked >> 5 & 7 var lCommandNodeChildren int32 lCommandNodeChildren, err = proto_base.DecodeVarInt(r) if err != nil { @@ -90,8 +92,452 @@ func (ret *CommandNode) Decode(r io.ReadSeeker) (err error) { } ret.RedirectNode = CommandNodeRedirectNodeTmp } + switch ret.Flags.CommandNodeType { + case 0: + var CommandNodeExtraNodeData0Tmp struct { + } + ret.ExtraNodeData = CommandNodeExtraNodeData0Tmp + case 1: + var CommandNodeExtraNodeData1Tmp struct { + Name string + } + CommandNodeExtraNodeData1Tmp.Name, err = proto_base.DecodeString(r) + if err != nil { + return + } + ret.ExtraNodeData = CommandNodeExtraNodeData1Tmp + case 2: + var CommandNodeExtraNodeData2Tmp struct { + Name string + Parser string + Properties any + SuggestionType any + } + CommandNodeExtraNodeData2Tmp.Name, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Parser, err = proto_base.DecodeString(r) + if err != nil { + return + } + switch CommandNodeExtraNodeData2Tmp.Parser { + case "brigadier:bool": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierBoolTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierBoolTmp + case "brigadier:double": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMin1Tmp float64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMax1Tmp float64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp + case "brigadier:float": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMin1Tmp float32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMax1Tmp float32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp + case "brigadier:integer": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMin1Tmp int32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMax1Tmp int32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp + case "brigadier:long": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMin1Tmp int64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMax1Tmp int64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp + case "brigadier:string": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmp string + var CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpKey int32 + CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpKey, err = proto_base.DecodeVarInt(r) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmp, err = proto_base.ErroringIndex(CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpMap, CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpKey) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmp + case "minecraft:angle": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftAngleTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftAngleTmp + case "minecraft:block_pos": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPosTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPosTmp + case "minecraft:block_predicate": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPredicateTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPredicateTmp + case "minecraft:block_state": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockStateTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockStateTmp + case "minecraft:color": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftColorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftColorTmp + case "minecraft:column_pos": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftColumnPosTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftColumnPosTmp + case "minecraft:component": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftComponentTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftComponentTmp + case "minecraft:dimension": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftDimensionTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftDimensionTmp + case "minecraft:entity": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp struct { + Unused uint8 + OnlyAllowPlayers bool + OnlyAllowEntities bool + } + var CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp.OnlyAllowEntities = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp.OnlyAllowPlayers = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp.Unused = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked >> 2 & 63 + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp + case "minecraft:entity_anchor": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityAnchorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityAnchorTmp + case "minecraft:entity_summon": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftEntitySummonTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntitySummonTmp + case "minecraft:float_range": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftFloatRangeTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftFloatRangeTmp + case "minecraft:function": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftFunctionTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftFunctionTmp + case "minecraft:game_profile": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftGameProfileTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftGameProfileTmp + case "minecraft:int_range": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftIntRangeTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftIntRangeTmp + case "minecraft:item_enchantment": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftItemEnchantmentTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftItemEnchantmentTmp + case "minecraft:item_predicate": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftItemPredicateTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftItemPredicateTmp + case "minecraft:item_slot": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftItemSlotTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftItemSlotTmp + case "minecraft:item_stack": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftItemStackTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftItemStackTmp + case "minecraft:message": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftMessageTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftMessageTmp + case "minecraft:mob_effect": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftMobEffectTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftMobEffectTmp + case "minecraft:nbt": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtTmp + case "minecraft:nbt_compound_tag": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtCompoundTagTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtCompoundTagTmp + case "minecraft:nbt_path": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtPathTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtPathTmp + case "minecraft:objective": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveTmp + case "minecraft:objective_criteria": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveCriteriaTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveCriteriaTmp + case "minecraft:operation": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftOperationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftOperationTmp + case "minecraft:particle": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftParticleTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftParticleTmp + case "minecraft:range": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftRangeTmp struct { + AllowDecimals bool + } + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesMinecraftRangeTmp.AllowDecimals) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftRangeTmp + case "minecraft:resource": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceTmp + case "minecraft:resource_location": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceLocationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceLocationTmp + case "minecraft:resource_or_tag": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagTmp + case "minecraft:rotation": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftRotationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftRotationTmp + case "minecraft:score_holder": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp struct { + Unused uint8 + AllowMultiple bool + } + var CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp.AllowMultiple = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp.Unused = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked >> 1 & 127 + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp + case "minecraft:scoreboard_slot": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreboardSlotTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreboardSlotTmp + case "minecraft:swizzle": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftSwizzleTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftSwizzleTmp + case "minecraft:team": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTeamTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTeamTmp + case "minecraft:time": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTimeTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTimeTmp + case "minecraft:uuid": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftUuidTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftUuidTmp + case "minecraft:vec2": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftVec2Tmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftVec2Tmp + case "minecraft:vec3": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftVec3Tmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftVec3Tmp + } + switch ret.Flags.HasCustomSuggestions { + case true: + var CommandNodeExtraNodeData2TmpSuggestionType1Tmp string + CommandNodeExtraNodeData2TmpSuggestionType1Tmp, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.SuggestionType = CommandNodeExtraNodeData2TmpSuggestionType1Tmp + default: + var CommandNodeExtraNodeData2TmpSuggestionTypeTmp struct { + } + CommandNodeExtraNodeData2Tmp.SuggestionType = CommandNodeExtraNodeData2TmpSuggestionTypeTmp + } + ret.ExtraNodeData = CommandNodeExtraNodeData2Tmp + } return } + +var CommandNodeExtraNodeDataPropertiesReverseMap = map[string]int32{"SINGLE_WORD": 0, "QUOTABLE_PHRASE": 1, "GREEDY_PHRASE": 2} + func (ret *CommandNode) Encode(w io.Writer) (err error) { var CommandNodeFlagsPacked uint8 CommandNodeFlagsPacked |= (uint8(ret.Flags.CommandNodeType) & 0x3) << 0x0 @@ -132,6 +578,651 @@ func (ret *CommandNode) Encode(w io.Writer) (err error) { return } } + switch ret.Flags.CommandNodeType { + case 0: + _, ok := ret.ExtraNodeData.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case 1: + CommandNodeExtraNodeData, ok := ret.ExtraNodeData.(struct { + Name string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeData.Name) + if err != nil { + return + } + case 2: + CommandNodeExtraNodeData, ok := ret.ExtraNodeData.(struct { + Name string + Parser string + Properties any + SuggestionType any + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeData.Name) + if err != nil { + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeData.Parser) + if err != nil { + return + } + switch CommandNodeExtraNodeData.Parser { + case "brigadier:bool": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "brigadier:double": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(float64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(float64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:float": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(float32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(float32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:integer": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(int32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(int32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:long": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(int64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(int64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:string": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(string) + if !ok { + err = proto_base.BadTypeError + return + } + var vCommandNodeExtraNodeDataProperties int32 + vCommandNodeExtraNodeDataProperties, err = proto_base.ErroringIndex(CommandNodeExtraNodeDataPropertiesReverseMap, CommandNodeExtraNodeDataProperties) + if err != nil { + return + } + err = proto_base.EncodeVarInt(w, vCommandNodeExtraNodeDataProperties) + if err != nil { + return + } + case "minecraft:angle": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:block_pos": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:block_predicate": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:block_state": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:color": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:column_pos": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:component": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:dimension": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:entity": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Unused uint8 + OnlyAllowPlayers bool + OnlyAllowEntities bool + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesPacked uint8 + CommandNodeExtraNodeDataPropertiesPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.OnlyAllowEntities) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.OnlyAllowPlayers) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesPacked |= (uint8(CommandNodeExtraNodeDataProperties.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesPacked) + if err != nil { + return + } + case "minecraft:entity_anchor": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:entity_summon": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:float_range": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:function": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:game_profile": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:int_range": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:item_enchantment": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:item_predicate": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:item_slot": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:item_stack": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:message": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:mob_effect": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:nbt": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:nbt_compound_tag": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:nbt_path": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:objective": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:objective_criteria": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:operation": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:particle": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:range": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + AllowDecimals bool + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataProperties.AllowDecimals) + if err != nil { + return + } + case "minecraft:resource": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:resource_location": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:resource_or_tag": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:rotation": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:score_holder": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Unused uint8 + AllowMultiple bool + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesPacked uint8 + CommandNodeExtraNodeDataPropertiesPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.AllowMultiple) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesPacked |= (uint8(CommandNodeExtraNodeDataProperties.Unused) & 0x7F) << 0x1 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesPacked) + if err != nil { + return + } + case "minecraft:scoreboard_slot": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:swizzle": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:team": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:time": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:uuid": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:vec2": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:vec3": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch ret.Flags.HasCustomSuggestions { + case true: + CommandNodeExtraNodeDataSuggestionType, ok := CommandNodeExtraNodeData.SuggestionType.(string) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataSuggestionType) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeData.SuggestionType.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + } return } @@ -929,17 +2020,17 @@ func (ret *Position) Decode(r io.ReadSeeker) (err error) { if err != nil { return } - ret.X = int32(PositionPacked << 0 >> 38) - if ret.X >= 1<<25 { - ret.X -= 1 << 26 + ret.Y = int16(PositionPacked >> 0 & 4095) + if ret.Y >= 1<<11 { + ret.Y -= 1 << 12 } - ret.Z = int32(PositionPacked << 26 >> 38) + ret.Z = int32(PositionPacked >> 12 & 67108863) if ret.Z >= 1<<25 { ret.Z -= 1 << 26 } - ret.Y = int16(PositionPacked << 52 >> 52) - if ret.Y >= 1<<11 { - ret.Y -= 1 << 12 + ret.X = int32(PositionPacked >> 38 & 67108863) + if ret.X >= 1<<25 { + ret.X -= 1 << 26 } return } @@ -3762,10 +4853,10 @@ func (ret *PlayToClientPacketAdvancements) Decode(r io.ReadSeeker) (err error) { if err != nil { return } - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Unused = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked << 0 >> 3 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Hidden = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<29>>31 == 1 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.ShowToast = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<30>>31 == 1 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<31>>31 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>0&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.ShowToast = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>1&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Hidden = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>2&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Unused = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked >> 3 & 536870911 switch PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture { case true: var PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataBackgroundTexture1Tmp string diff --git a/mc/proto_generated/v1_16_5/proto.go b/mc/proto_generated/v1_16_5/proto.go index 8bd827d..7442ea5 100644 --- a/mc/proto_generated/v1_16_5/proto.go +++ b/mc/proto_generated/v1_16_5/proto.go @@ -1,6 +1,6 @@ // Code generated by strom. DO NOT EDIT. // source: minecraft-data/pc/1.16.2/protocol.json (sha256:d96a3c5a7a7ddf2105e23990c2471b3aeafe4a6975e0c9d7d7943b599af9dfb3) -// version: v0.6.6-0.20260805175346-53d366ae5301+dirty (go1.26.2) +// version: v0.6.6-0.20260805191907-f4c27628815b+dirty (go1.26.2) package v1_16_5 import ( @@ -52,17 +52,19 @@ type CommandNode struct { ExtraNodeData any } +var CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpMap = map[int32]string{0: "SINGLE_WORD", 1: "QUOTABLE_PHRASE", 2: "GREEDY_PHRASE"} + func (ret *CommandNode) Decode(r io.ReadSeeker) (err error) { var CommandNodeFlagsPacked uint8 err = binary.Read(r, binary.BigEndian, &CommandNodeFlagsPacked) if err != nil { return } - ret.Flags.Unused = CommandNodeFlagsPacked << 0 >> 5 - ret.Flags.HasCustomSuggestions = CommandNodeFlagsPacked<<3>>7 == 1 - ret.Flags.HasRedirectNode = CommandNodeFlagsPacked<<4>>7 == 1 - ret.Flags.HasCommand = CommandNodeFlagsPacked<<5>>7 == 1 - ret.Flags.CommandNodeType = CommandNodeFlagsPacked << 6 >> 6 + ret.Flags.CommandNodeType = CommandNodeFlagsPacked >> 0 & 3 + ret.Flags.HasCommand = CommandNodeFlagsPacked>>2&1 == 1 + ret.Flags.HasRedirectNode = CommandNodeFlagsPacked>>3&1 == 1 + ret.Flags.HasCustomSuggestions = CommandNodeFlagsPacked>>4&1 == 1 + ret.Flags.Unused = CommandNodeFlagsPacked >> 5 & 7 var lCommandNodeChildren int32 lCommandNodeChildren, err = proto_base.DecodeVarInt(r) if err != nil { @@ -90,8 +92,452 @@ func (ret *CommandNode) Decode(r io.ReadSeeker) (err error) { } ret.RedirectNode = CommandNodeRedirectNodeTmp } + switch ret.Flags.CommandNodeType { + case 0: + var CommandNodeExtraNodeData0Tmp struct { + } + ret.ExtraNodeData = CommandNodeExtraNodeData0Tmp + case 1: + var CommandNodeExtraNodeData1Tmp struct { + Name string + } + CommandNodeExtraNodeData1Tmp.Name, err = proto_base.DecodeString(r) + if err != nil { + return + } + ret.ExtraNodeData = CommandNodeExtraNodeData1Tmp + case 2: + var CommandNodeExtraNodeData2Tmp struct { + Name string + Parser string + Properties any + SuggestionType any + } + CommandNodeExtraNodeData2Tmp.Name, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Parser, err = proto_base.DecodeString(r) + if err != nil { + return + } + switch CommandNodeExtraNodeData2Tmp.Parser { + case "brigadier:bool": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierBoolTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierBoolTmp + case "brigadier:double": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMin1Tmp float64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMax1Tmp float64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp + case "brigadier:float": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMin1Tmp float32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMax1Tmp float32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp + case "brigadier:integer": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMin1Tmp int32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMax1Tmp int32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp + case "brigadier:long": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMin1Tmp int64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMax1Tmp int64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp + case "brigadier:string": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmp string + var CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpKey int32 + CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpKey, err = proto_base.DecodeVarInt(r) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmp, err = proto_base.ErroringIndex(CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpMap, CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpKey) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmp + case "minecraft:angle": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftAngleTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftAngleTmp + case "minecraft:block_pos": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPosTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPosTmp + case "minecraft:block_predicate": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPredicateTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPredicateTmp + case "minecraft:block_state": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockStateTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockStateTmp + case "minecraft:color": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftColorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftColorTmp + case "minecraft:column_pos": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftColumnPosTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftColumnPosTmp + case "minecraft:component": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftComponentTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftComponentTmp + case "minecraft:dimension": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftDimensionTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftDimensionTmp + case "minecraft:entity": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp struct { + Unused uint8 + OnlyAllowPlayers bool + OnlyAllowEntities bool + } + var CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp.OnlyAllowEntities = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp.OnlyAllowPlayers = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp.Unused = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked >> 2 & 63 + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp + case "minecraft:entity_anchor": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityAnchorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityAnchorTmp + case "minecraft:entity_summon": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftEntitySummonTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntitySummonTmp + case "minecraft:float_range": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftFloatRangeTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftFloatRangeTmp + case "minecraft:function": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftFunctionTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftFunctionTmp + case "minecraft:game_profile": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftGameProfileTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftGameProfileTmp + case "minecraft:int_range": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftIntRangeTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftIntRangeTmp + case "minecraft:item_enchantment": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftItemEnchantmentTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftItemEnchantmentTmp + case "minecraft:item_predicate": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftItemPredicateTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftItemPredicateTmp + case "minecraft:item_slot": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftItemSlotTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftItemSlotTmp + case "minecraft:item_stack": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftItemStackTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftItemStackTmp + case "minecraft:message": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftMessageTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftMessageTmp + case "minecraft:mob_effect": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftMobEffectTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftMobEffectTmp + case "minecraft:nbt": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtTmp + case "minecraft:nbt_compound_tag": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtCompoundTagTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtCompoundTagTmp + case "minecraft:nbt_path": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtPathTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtPathTmp + case "minecraft:objective": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveTmp + case "minecraft:objective_criteria": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveCriteriaTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveCriteriaTmp + case "minecraft:operation": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftOperationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftOperationTmp + case "minecraft:particle": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftParticleTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftParticleTmp + case "minecraft:range": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftRangeTmp struct { + AllowDecimals bool + } + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesMinecraftRangeTmp.AllowDecimals) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftRangeTmp + case "minecraft:resource": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceTmp + case "minecraft:resource_location": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceLocationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceLocationTmp + case "minecraft:resource_or_tag": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagTmp + case "minecraft:rotation": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftRotationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftRotationTmp + case "minecraft:score_holder": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp struct { + Unused uint8 + AllowMultiple bool + } + var CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp.AllowMultiple = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp.Unused = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked >> 1 & 127 + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp + case "minecraft:scoreboard_slot": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreboardSlotTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreboardSlotTmp + case "minecraft:swizzle": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftSwizzleTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftSwizzleTmp + case "minecraft:team": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTeamTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTeamTmp + case "minecraft:time": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTimeTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTimeTmp + case "minecraft:uuid": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftUuidTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftUuidTmp + case "minecraft:vec2": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftVec2Tmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftVec2Tmp + case "minecraft:vec3": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftVec3Tmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftVec3Tmp + } + switch ret.Flags.HasCustomSuggestions { + case true: + var CommandNodeExtraNodeData2TmpSuggestionType1Tmp string + CommandNodeExtraNodeData2TmpSuggestionType1Tmp, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.SuggestionType = CommandNodeExtraNodeData2TmpSuggestionType1Tmp + default: + var CommandNodeExtraNodeData2TmpSuggestionTypeTmp struct { + } + CommandNodeExtraNodeData2Tmp.SuggestionType = CommandNodeExtraNodeData2TmpSuggestionTypeTmp + } + ret.ExtraNodeData = CommandNodeExtraNodeData2Tmp + } return } + +var CommandNodeExtraNodeDataPropertiesReverseMap = map[string]int32{"SINGLE_WORD": 0, "QUOTABLE_PHRASE": 1, "GREEDY_PHRASE": 2} + func (ret *CommandNode) Encode(w io.Writer) (err error) { var CommandNodeFlagsPacked uint8 CommandNodeFlagsPacked |= (uint8(ret.Flags.CommandNodeType) & 0x3) << 0x0 @@ -132,6 +578,651 @@ func (ret *CommandNode) Encode(w io.Writer) (err error) { return } } + switch ret.Flags.CommandNodeType { + case 0: + _, ok := ret.ExtraNodeData.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case 1: + CommandNodeExtraNodeData, ok := ret.ExtraNodeData.(struct { + Name string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeData.Name) + if err != nil { + return + } + case 2: + CommandNodeExtraNodeData, ok := ret.ExtraNodeData.(struct { + Name string + Parser string + Properties any + SuggestionType any + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeData.Name) + if err != nil { + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeData.Parser) + if err != nil { + return + } + switch CommandNodeExtraNodeData.Parser { + case "brigadier:bool": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "brigadier:double": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(float64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(float64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:float": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(float32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(float32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:integer": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(int32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(int32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:long": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(int64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(int64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:string": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(string) + if !ok { + err = proto_base.BadTypeError + return + } + var vCommandNodeExtraNodeDataProperties int32 + vCommandNodeExtraNodeDataProperties, err = proto_base.ErroringIndex(CommandNodeExtraNodeDataPropertiesReverseMap, CommandNodeExtraNodeDataProperties) + if err != nil { + return + } + err = proto_base.EncodeVarInt(w, vCommandNodeExtraNodeDataProperties) + if err != nil { + return + } + case "minecraft:angle": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:block_pos": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:block_predicate": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:block_state": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:color": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:column_pos": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:component": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:dimension": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:entity": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Unused uint8 + OnlyAllowPlayers bool + OnlyAllowEntities bool + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesPacked uint8 + CommandNodeExtraNodeDataPropertiesPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.OnlyAllowEntities) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.OnlyAllowPlayers) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesPacked |= (uint8(CommandNodeExtraNodeDataProperties.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesPacked) + if err != nil { + return + } + case "minecraft:entity_anchor": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:entity_summon": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:float_range": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:function": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:game_profile": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:int_range": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:item_enchantment": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:item_predicate": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:item_slot": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:item_stack": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:message": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:mob_effect": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:nbt": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:nbt_compound_tag": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:nbt_path": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:objective": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:objective_criteria": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:operation": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:particle": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:range": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + AllowDecimals bool + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataProperties.AllowDecimals) + if err != nil { + return + } + case "minecraft:resource": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:resource_location": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:resource_or_tag": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:rotation": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:score_holder": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Unused uint8 + AllowMultiple bool + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesPacked uint8 + CommandNodeExtraNodeDataPropertiesPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.AllowMultiple) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesPacked |= (uint8(CommandNodeExtraNodeDataProperties.Unused) & 0x7F) << 0x1 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesPacked) + if err != nil { + return + } + case "minecraft:scoreboard_slot": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:swizzle": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:team": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:time": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:uuid": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:vec2": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:vec3": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch ret.Flags.HasCustomSuggestions { + case true: + CommandNodeExtraNodeDataSuggestionType, ok := CommandNodeExtraNodeData.SuggestionType.(string) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataSuggestionType) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeData.SuggestionType.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + } return } @@ -929,17 +2020,17 @@ func (ret *Position) Decode(r io.ReadSeeker) (err error) { if err != nil { return } - ret.X = int32(PositionPacked << 0 >> 38) - if ret.X >= 1<<25 { - ret.X -= 1 << 26 + ret.Y = int16(PositionPacked >> 0 & 4095) + if ret.Y >= 1<<11 { + ret.Y -= 1 << 12 } - ret.Z = int32(PositionPacked << 26 >> 38) + ret.Z = int32(PositionPacked >> 12 & 67108863) if ret.Z >= 1<<25 { ret.Z -= 1 << 26 } - ret.Y = int16(PositionPacked << 52 >> 52) - if ret.Y >= 1<<11 { - ret.Y -= 1 << 12 + ret.X = int32(PositionPacked >> 38 & 67108863) + if ret.X >= 1<<25 { + ret.X -= 1 << 26 } return } @@ -3744,10 +4835,10 @@ func (ret *PlayToClientPacketAdvancements) Decode(r io.ReadSeeker) (err error) { if err != nil { return } - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Unused = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked << 0 >> 3 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Hidden = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<29>>31 == 1 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.ShowToast = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<30>>31 == 1 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<31>>31 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>0&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.ShowToast = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>1&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Hidden = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>2&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Unused = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked >> 3 & 536870911 switch PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture { case true: var PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataBackgroundTexture1Tmp string @@ -7108,15 +8199,15 @@ func (ret *PlayToClientPacketMultiBlockChange) Decode(r io.ReadSeeker) (err erro if err != nil { return } - ret.ChunkCoordinates.X = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked << 0 >> 42) - if ret.ChunkCoordinates.X >= 1<<21 { - ret.ChunkCoordinates.X -= 1 << 22 - } - ret.ChunkCoordinates.Z = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked << 22 >> 42) + ret.ChunkCoordinates.Y = uint32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked >> 0 & 1048575) + ret.ChunkCoordinates.Z = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked >> 20 & 4194303) if ret.ChunkCoordinates.Z >= 1<<21 { ret.ChunkCoordinates.Z -= 1 << 22 } - ret.ChunkCoordinates.Y = uint32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked << 44 >> 44) + ret.ChunkCoordinates.X = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked >> 42 & 4194303) + if ret.ChunkCoordinates.X >= 1<<21 { + ret.ChunkCoordinates.X -= 1 << 22 + } err = binary.Read(r, binary.BigEndian, &ret.NotTrustEdges) if err != nil { return diff --git a/mc/proto_generated/v1_21_11/proto.go b/mc/proto_generated/v1_21_11/proto.go index 55eb5ce..8a4fa43 100644 --- a/mc/proto_generated/v1_21_11/proto.go +++ b/mc/proto_generated/v1_21_11/proto.go @@ -1,6 +1,6 @@ // Code generated by strom. DO NOT EDIT. -// source: minecraft-data/pc/1.21.11/protocol.json (sha256:97d2726cce3a39cc967a954f27f4ebf029ec3f0f655bb21942aab8745d13cdab) -// version: v0.6.6-0.20260805175346-53d366ae5301+dirty (go1.26.2) +// source: minecraft-data/pc/1.21.11/protocol.json (sha256:fec3d0a1516ec35ffea3950f95aef76e7818bf1ab47c1205310c00180944c340) +// version: v0.6.6-0.20260805191907-f4c27628815b+dirty (go1.26.2) package v1_21_11 import ( @@ -3544,8 +3544,8 @@ func (ret *ChunkBlockEntity) Decode(r io.ReadSeeker) (err error) { if err != nil { return } - ret.Anon.X = ChunkBlockEntityAnonPacked << 0 >> 4 - ret.Anon.Z = ChunkBlockEntityAnonPacked << 4 >> 4 + ret.Anon.Z = ChunkBlockEntityAnonPacked >> 0 & 15 + ret.Anon.X = ChunkBlockEntityAnonPacked >> 4 & 15 err = binary.Read(r, binary.BigEndian, &ret.Y) if err != nil { return @@ -3586,7 +3586,6 @@ func (ret *ChunkBlockEntity) Encode(w io.Writer) (err error) { type CommandNode struct { Flags struct { - Unused uint8 AllowsRestricted bool HasCustomSuggestions bool HasRedirectNode bool @@ -3598,18 +3597,20 @@ type CommandNode struct { ExtraNodeData any } +var CommandNodeExtraNodeData2TmpParserMap = map[int32]string{0: "brigadier:bool", 1: "brigadier:float", 10: "minecraft:vec3", 11: "minecraft:vec2", 12: "minecraft:block_state", 13: "minecraft:block_predicate", 14: "minecraft:item_stack", 15: "minecraft:item_predicate", 16: "minecraft:color", 17: "minecraft:hex_color", 18: "minecraft:component", 19: "minecraft:style", 2: "brigadier:double", 20: "minecraft:message", 21: "minecraft:nbt", 22: "minecraft:nbt_tag", 23: "minecraft:nbt_path", 24: "minecraft:objective", 25: "minecraft:objective_criteria", 26: "minecraft:operation", 27: "minecraft:particle", 28: "minecraft:angle", 29: "minecraft:rotation", 3: "brigadier:integer", 30: "minecraft:scoreboard_slot", 31: "minecraft:score_holder", 32: "minecraft:swizzle", 33: "minecraft:team", 34: "minecraft:item_slot", 35: "minecraft:item_slots", 36: "minecraft:resource_location", 37: "minecraft:function", 38: "minecraft:entity_anchor", 39: "minecraft:int_range", 4: "brigadier:long", 40: "minecraft:float_range", 41: "minecraft:dimension", 42: "minecraft:gamemode", 43: "minecraft:time", 44: "minecraft:resource_or_tag", 45: "minecraft:resource_or_tag_key", 46: "minecraft:resource", 47: "minecraft:resource_key", 48: "minecraft:resource_selector", 49: "minecraft:template_mirror", 5: "brigadier:string", 50: "minecraft:template_rotation", 51: "minecraft:heightmap", 52: "minecraft:loot_table", 53: "minecraft:loot_predicate", 54: "minecraft:loot_modifier", 55: "minecraft:dialog", 56: "minecraft:uuid", 6: "minecraft:entity", 7: "minecraft:game_profile", 8: "minecraft:block_pos", 9: "minecraft:column_pos"} +var CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpMap = map[int32]string{0: "SINGLE_WORD", 1: "QUOTABLE_PHRASE", 2: "GREEDY_PHRASE"} + func (ret *CommandNode) Decode(r io.ReadSeeker) (err error) { var CommandNodeFlagsPacked uint8 err = binary.Read(r, binary.BigEndian, &CommandNodeFlagsPacked) if err != nil { return } - ret.Flags.Unused = CommandNodeFlagsPacked << 0 >> 6 - ret.Flags.AllowsRestricted = CommandNodeFlagsPacked<<2>>7 == 1 - ret.Flags.HasCustomSuggestions = CommandNodeFlagsPacked<<3>>7 == 1 - ret.Flags.HasRedirectNode = CommandNodeFlagsPacked<<4>>7 == 1 - ret.Flags.HasCommand = CommandNodeFlagsPacked<<5>>7 == 1 - ret.Flags.CommandNodeType = CommandNodeFlagsPacked << 6 >> 6 + ret.Flags.CommandNodeType = CommandNodeFlagsPacked >> 0 & 3 + ret.Flags.HasCommand = CommandNodeFlagsPacked>>2&1 == 1 + ret.Flags.HasRedirectNode = CommandNodeFlagsPacked>>3&1 == 1 + ret.Flags.HasCustomSuggestions = CommandNodeFlagsPacked>>4&1 == 1 + ret.Flags.AllowsRestricted = CommandNodeFlagsPacked>>5&1 == 1 var lCommandNodeChildren int32 lCommandNodeChildren, err = proto_base.DecodeVarInt(r) if err != nil { @@ -3637,8 +3638,489 @@ func (ret *CommandNode) Decode(r io.ReadSeeker) (err error) { } ret.RedirectNode = CommandNodeRedirectNodeTmp } + switch ret.Flags.CommandNodeType { + case 0: + var CommandNodeExtraNodeData0Tmp struct { + } + ret.ExtraNodeData = CommandNodeExtraNodeData0Tmp + case 1: + var CommandNodeExtraNodeData1Tmp struct { + Name string + } + CommandNodeExtraNodeData1Tmp.Name, err = proto_base.DecodeString(r) + if err != nil { + return + } + ret.ExtraNodeData = CommandNodeExtraNodeData1Tmp + case 2: + var CommandNodeExtraNodeData2Tmp struct { + Name string + Parser string + Properties any + SuggestionType any + } + CommandNodeExtraNodeData2Tmp.Name, err = proto_base.DecodeString(r) + if err != nil { + return + } + var CommandNodeExtraNodeData2TmpParserKey int32 + CommandNodeExtraNodeData2TmpParserKey, err = proto_base.DecodeVarInt(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Parser, err = proto_base.ErroringIndex(CommandNodeExtraNodeData2TmpParserMap, CommandNodeExtraNodeData2TmpParserKey) + if err != nil { + return + } + switch CommandNodeExtraNodeData2Tmp.Parser { + case "brigadier:bool": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierBoolTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierBoolTmp + case "brigadier:double": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMin1Tmp float64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMax1Tmp float64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp + case "brigadier:float": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMin1Tmp float32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMax1Tmp float32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp + case "brigadier:integer": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMin1Tmp int32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMax1Tmp int32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp + case "brigadier:long": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMin1Tmp int64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMax1Tmp int64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp + case "brigadier:string": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmp string + var CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpKey int32 + CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpKey, err = proto_base.DecodeVarInt(r) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmp, err = proto_base.ErroringIndex(CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpMap, CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpKey) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmp + case "minecraft:angle": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftAngleTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftAngleTmp + case "minecraft:block_pos": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPosTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPosTmp + case "minecraft:block_predicate": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPredicateTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPredicateTmp + case "minecraft:block_state": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockStateTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockStateTmp + case "minecraft:color": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftColorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftColorTmp + case "minecraft:column_pos": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftColumnPosTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftColumnPosTmp + case "minecraft:component": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftComponentTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftComponentTmp + case "minecraft:dialog": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftDialogTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftDialogTmp + case "minecraft:dimension": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftDimensionTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftDimensionTmp + case "minecraft:entity": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp struct { + Unused uint8 + OnlyAllowPlayers bool + OnlyAllowEntities bool + } + var CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp.OnlyAllowEntities = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp.OnlyAllowPlayers = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp.Unused = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked >> 2 & 63 + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp + case "minecraft:entity_anchor": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityAnchorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityAnchorTmp + case "minecraft:float_range": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftFloatRangeTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftFloatRangeTmp + case "minecraft:function": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftFunctionTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftFunctionTmp + case "minecraft:game_profile": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftGameProfileTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftGameProfileTmp + case "minecraft:gamemode": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftGamemodeTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftGamemodeTmp + case "minecraft:heightmap": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftHeightmapTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftHeightmapTmp + case "minecraft:hex_color": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftHexColorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftHexColorTmp + case "minecraft:int_range": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftIntRangeTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftIntRangeTmp + case "minecraft:item_predicate": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftItemPredicateTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftItemPredicateTmp + case "minecraft:item_slot": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftItemSlotTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftItemSlotTmp + case "minecraft:item_stack": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftItemStackTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftItemStackTmp + case "minecraft:message": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftMessageTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftMessageTmp + case "minecraft:nbt": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtTmp + case "minecraft:nbt_path": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtPathTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtPathTmp + case "minecraft:objective": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveTmp + case "minecraft:objective_criteria": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveCriteriaTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveCriteriaTmp + case "minecraft:operation": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftOperationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftOperationTmp + case "minecraft:particle": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftParticleTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftParticleTmp + case "minecraft:resource": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceTmp + case "minecraft:resource_key": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceKeyTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceKeyTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceKeyTmp + case "minecraft:resource_location": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceLocationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceLocationTmp + case "minecraft:resource_or_tag": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagTmp + case "minecraft:resource_or_tag_key": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagKeyTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagKeyTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagKeyTmp + case "minecraft:resource_selector": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceSelectorTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceSelectorTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceSelectorTmp + case "minecraft:rotation": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftRotationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftRotationTmp + case "minecraft:score_holder": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp struct { + Unused uint8 + AllowMultiple bool + } + var CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp.AllowMultiple = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp.Unused = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked >> 1 & 127 + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp + case "minecraft:scoreboard_slot": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreboardSlotTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreboardSlotTmp + case "minecraft:swizzle": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftSwizzleTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftSwizzleTmp + case "minecraft:team": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTeamTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTeamTmp + case "minecraft:template_mirror": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTemplateMirrorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTemplateMirrorTmp + case "minecraft:template_rotation": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTemplateRotationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTemplateRotationTmp + case "minecraft:time": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTimeTmp struct { + Min int32 + } + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesMinecraftTimeTmp.Min) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTimeTmp + case "minecraft:uuid": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftUuidTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftUuidTmp + case "minecraft:vec2": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftVec2Tmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftVec2Tmp + case "minecraft:vec3": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftVec3Tmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftVec3Tmp + } + switch ret.Flags.HasCustomSuggestions { + case true: + var CommandNodeExtraNodeData2TmpSuggestionType1Tmp string + CommandNodeExtraNodeData2TmpSuggestionType1Tmp, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.SuggestionType = CommandNodeExtraNodeData2TmpSuggestionType1Tmp + default: + var CommandNodeExtraNodeData2TmpSuggestionTypeTmp struct { + } + CommandNodeExtraNodeData2Tmp.SuggestionType = CommandNodeExtraNodeData2TmpSuggestionTypeTmp + } + ret.ExtraNodeData = CommandNodeExtraNodeData2Tmp + } return } + +var CommandNodeExtraNodeDataParserReverseMap = map[string]int32{"brigadier:bool": 0, "brigadier:float": 1, "minecraft:vec3": 10, "minecraft:vec2": 11, "minecraft:block_state": 12, "minecraft:block_predicate": 13, "minecraft:item_stack": 14, "minecraft:item_predicate": 15, "minecraft:color": 16, "minecraft:hex_color": 17, "minecraft:component": 18, "minecraft:style": 19, "brigadier:double": 2, "minecraft:message": 20, "minecraft:nbt": 21, "minecraft:nbt_tag": 22, "minecraft:nbt_path": 23, "minecraft:objective": 24, "minecraft:objective_criteria": 25, "minecraft:operation": 26, "minecraft:particle": 27, "minecraft:angle": 28, "minecraft:rotation": 29, "brigadier:integer": 3, "minecraft:scoreboard_slot": 30, "minecraft:score_holder": 31, "minecraft:swizzle": 32, "minecraft:team": 33, "minecraft:item_slot": 34, "minecraft:item_slots": 35, "minecraft:resource_location": 36, "minecraft:function": 37, "minecraft:entity_anchor": 38, "minecraft:int_range": 39, "brigadier:long": 4, "minecraft:float_range": 40, "minecraft:dimension": 41, "minecraft:gamemode": 42, "minecraft:time": 43, "minecraft:resource_or_tag": 44, "minecraft:resource_or_tag_key": 45, "minecraft:resource": 46, "minecraft:resource_key": 47, "minecraft:resource_selector": 48, "minecraft:template_mirror": 49, "brigadier:string": 5, "minecraft:template_rotation": 50, "minecraft:heightmap": 51, "minecraft:loot_table": 52, "minecraft:loot_predicate": 53, "minecraft:loot_modifier": 54, "minecraft:dialog": 55, "minecraft:uuid": 56, "minecraft:entity": 6, "minecraft:game_profile": 7, "minecraft:block_pos": 8, "minecraft:column_pos": 9} +var CommandNodeExtraNodeDataPropertiesReverseMap = map[string]int32{"SINGLE_WORD": 0, "QUOTABLE_PHRASE": 1, "GREEDY_PHRASE": 2} + func (ret *CommandNode) Encode(w io.Writer) (err error) { var CommandNodeFlagsPacked uint8 CommandNodeFlagsPacked |= (uint8(ret.Flags.CommandNodeType) & 0x3) << 0x0 @@ -3646,7 +4128,6 @@ func (ret *CommandNode) Encode(w io.Writer) (err error) { CommandNodeFlagsPacked |= (proto_base.Bool2uint8(ret.Flags.HasRedirectNode) & 0x1) << 0x3 CommandNodeFlagsPacked |= (proto_base.Bool2uint8(ret.Flags.HasCustomSuggestions) & 0x1) << 0x4 CommandNodeFlagsPacked |= (proto_base.Bool2uint8(ret.Flags.AllowsRestricted) & 0x1) << 0x5 - CommandNodeFlagsPacked |= (uint8(ret.Flags.Unused) & 0x3) << 0x6 err = binary.Write(w, binary.BigEndian, CommandNodeFlagsPacked) if err != nil { return @@ -3680,6 +4161,699 @@ func (ret *CommandNode) Encode(w io.Writer) (err error) { return } } + switch ret.Flags.CommandNodeType { + case 0: + _, ok := ret.ExtraNodeData.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case 1: + CommandNodeExtraNodeData, ok := ret.ExtraNodeData.(struct { + Name string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeData.Name) + if err != nil { + return + } + case 2: + CommandNodeExtraNodeData, ok := ret.ExtraNodeData.(struct { + Name string + Parser string + Properties any + SuggestionType any + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeData.Name) + if err != nil { + return + } + var vCommandNodeExtraNodeDataParser int32 + vCommandNodeExtraNodeDataParser, err = proto_base.ErroringIndex(CommandNodeExtraNodeDataParserReverseMap, CommandNodeExtraNodeData.Parser) + if err != nil { + return + } + err = proto_base.EncodeVarInt(w, vCommandNodeExtraNodeDataParser) + if err != nil { + return + } + switch CommandNodeExtraNodeData.Parser { + case "brigadier:bool": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "brigadier:double": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(float64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(float64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:float": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(float32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(float32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:integer": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(int32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(int32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:long": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(int64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(int64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:string": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(string) + if !ok { + err = proto_base.BadTypeError + return + } + var vCommandNodeExtraNodeDataProperties int32 + vCommandNodeExtraNodeDataProperties, err = proto_base.ErroringIndex(CommandNodeExtraNodeDataPropertiesReverseMap, CommandNodeExtraNodeDataProperties) + if err != nil { + return + } + err = proto_base.EncodeVarInt(w, vCommandNodeExtraNodeDataProperties) + if err != nil { + return + } + case "minecraft:angle": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:block_pos": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:block_predicate": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:block_state": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:color": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:column_pos": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:component": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:dialog": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:dimension": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:entity": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Unused uint8 + OnlyAllowPlayers bool + OnlyAllowEntities bool + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesPacked uint8 + CommandNodeExtraNodeDataPropertiesPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.OnlyAllowEntities) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.OnlyAllowPlayers) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesPacked |= (uint8(CommandNodeExtraNodeDataProperties.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesPacked) + if err != nil { + return + } + case "minecraft:entity_anchor": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:float_range": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:function": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:game_profile": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:gamemode": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:heightmap": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:hex_color": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:int_range": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:item_predicate": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:item_slot": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:item_stack": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:message": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:nbt": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:nbt_path": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:objective": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:objective_criteria": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:operation": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:particle": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:resource": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:resource_key": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:resource_location": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:resource_or_tag": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:resource_or_tag_key": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:resource_selector": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:rotation": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:score_holder": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Unused uint8 + AllowMultiple bool + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesPacked uint8 + CommandNodeExtraNodeDataPropertiesPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.AllowMultiple) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesPacked |= (uint8(CommandNodeExtraNodeDataProperties.Unused) & 0x7F) << 0x1 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesPacked) + if err != nil { + return + } + case "minecraft:scoreboard_slot": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:swizzle": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:team": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:template_mirror": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:template_rotation": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:time": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Min int32 + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataProperties.Min) + if err != nil { + return + } + case "minecraft:uuid": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:vec2": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:vec3": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch ret.Flags.HasCustomSuggestions { + case true: + CommandNodeExtraNodeDataSuggestionType, ok := CommandNodeExtraNodeData.SuggestionType.(string) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataSuggestionType) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeData.SuggestionType.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + } return } @@ -4752,17 +5926,17 @@ func (ret *Position) Decode(r io.ReadSeeker) (err error) { if err != nil { return } - ret.X = int32(PositionPacked << 0 >> 38) - if ret.X >= 1<<25 { - ret.X -= 1 << 26 + ret.Y = int16(PositionPacked >> 0 & 4095) + if ret.Y >= 1<<11 { + ret.Y -= 1 << 12 } - ret.Z = int32(PositionPacked << 26 >> 38) + ret.Z = int32(PositionPacked >> 12 & 67108863) if ret.Z >= 1<<25 { ret.Z -= 1 << 26 } - ret.Y = int16(PositionPacked << 52 >> 52) - if ret.Y >= 1<<11 { - ret.Y -= 1 << 12 + ret.X = int32(PositionPacked >> 38 & 67108863) + if ret.X >= 1<<25 { + ret.X -= 1 << 26 } return } @@ -14441,10 +15615,10 @@ func (ret *PlayToClientPacketAdvancements) Decode(r io.ReadSeeker) (err error) { if err != nil { return } - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Unused = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked << 0 >> 3 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Hidden = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<29>>31 == 1 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.ShowToast = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<30>>31 == 1 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<31>>31 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>0&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.ShowToast = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>1&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Hidden = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>2&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Unused = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked >> 3 & 536870911 switch PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture { case true: var PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataBackgroundTexture1Tmp string @@ -18687,17 +19861,17 @@ func (ret *PlayToClientPacketMultiBlockChange) Decode(r io.ReadSeeker) (err erro if err != nil { return } - ret.ChunkCoordinates.X = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked << 0 >> 42) - if ret.ChunkCoordinates.X >= 1<<21 { - ret.ChunkCoordinates.X -= 1 << 22 + ret.ChunkCoordinates.Y = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked >> 0 & 1048575) + if ret.ChunkCoordinates.Y >= 1<<19 { + ret.ChunkCoordinates.Y -= 1 << 20 } - ret.ChunkCoordinates.Z = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked << 22 >> 42) + ret.ChunkCoordinates.Z = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked >> 20 & 4194303) if ret.ChunkCoordinates.Z >= 1<<21 { ret.ChunkCoordinates.Z -= 1 << 22 } - ret.ChunkCoordinates.Y = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked << 44 >> 44) - if ret.ChunkCoordinates.Y >= 1<<19 { - ret.ChunkCoordinates.Y -= 1 << 20 + ret.ChunkCoordinates.X = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked >> 42 & 4194303) + if ret.ChunkCoordinates.X >= 1<<21 { + ret.ChunkCoordinates.X -= 1 << 22 } var lPlayToClientPacketMultiBlockChangeRecords int32 lPlayToClientPacketMultiBlockChangeRecords, err = proto_base.DecodeVarInt(r) diff --git a/mc/proto_generated/v1_21_8/proto.go b/mc/proto_generated/v1_21_8/proto.go index f26c8c4..57fa286 100644 --- a/mc/proto_generated/v1_21_8/proto.go +++ b/mc/proto_generated/v1_21_8/proto.go @@ -1,6 +1,6 @@ // Code generated by strom. DO NOT EDIT. -// source: minecraft-data/pc/1.21.8/protocol.json (sha256:930fbb4c69fd2ecadddcee3c38d3f02908adc23b54b707cb21112e7ab1e9dba1) -// version: v0.6.6-0.20260805175346-53d366ae5301+dirty (go1.26.2) +// source: minecraft-data/pc/1.21.8/protocol.json (sha256:c7fd6d6aa06b260440e2e0e82995920e8cabfb0b71d5521f3d7b5ecb14ab054c) +// version: v0.6.6-0.20260805191907-f4c27628815b+dirty (go1.26.2) package v1_21_8 import ( @@ -2461,8 +2461,8 @@ func (ret *ChunkBlockEntity) Decode(r io.ReadSeeker) (err error) { if err != nil { return } - ret.Anon.X = ChunkBlockEntityAnonPacked << 0 >> 4 - ret.Anon.Z = ChunkBlockEntityAnonPacked << 4 >> 4 + ret.Anon.Z = ChunkBlockEntityAnonPacked >> 0 & 15 + ret.Anon.X = ChunkBlockEntityAnonPacked >> 4 & 15 err = binary.Read(r, binary.BigEndian, &ret.Y) if err != nil { return @@ -2503,7 +2503,6 @@ func (ret *ChunkBlockEntity) Encode(w io.Writer) (err error) { type CommandNode struct { Flags struct { - Unused uint8 AllowsRestricted bool HasCustomSuggestions bool HasRedirectNode bool @@ -2515,18 +2514,20 @@ type CommandNode struct { ExtraNodeData any } +var CommandNodeExtraNodeData2TmpParserMap = map[int32]string{0: "brigadier:bool", 1: "brigadier:float", 10: "minecraft:vec3", 11: "minecraft:vec2", 12: "minecraft:block_state", 13: "minecraft:block_predicate", 14: "minecraft:item_stack", 15: "minecraft:item_predicate", 16: "minecraft:color", 17: "minecraft:hex_color", 18: "minecraft:component", 19: "minecraft:style", 2: "brigadier:double", 20: "minecraft:message", 21: "minecraft:nbt", 22: "minecraft:nbt_tag", 23: "minecraft:nbt_path", 24: "minecraft:objective", 25: "minecraft:objective_criteria", 26: "minecraft:operation", 27: "minecraft:particle", 28: "minecraft:angle", 29: "minecraft:rotation", 3: "brigadier:integer", 30: "minecraft:scoreboard_slot", 31: "minecraft:score_holder", 32: "minecraft:swizzle", 33: "minecraft:team", 34: "minecraft:item_slot", 35: "minecraft:item_slots", 36: "minecraft:resource_location", 37: "minecraft:function", 38: "minecraft:entity_anchor", 39: "minecraft:int_range", 4: "brigadier:long", 40: "minecraft:float_range", 41: "minecraft:dimension", 42: "minecraft:gamemode", 43: "minecraft:time", 44: "minecraft:resource_or_tag", 45: "minecraft:resource_or_tag_key", 46: "minecraft:resource", 47: "minecraft:resource_key", 48: "minecraft:resource_selector", 49: "minecraft:template_mirror", 5: "brigadier:string", 50: "minecraft:template_rotation", 51: "minecraft:heightmap", 52: "minecraft:loot_table", 53: "minecraft:loot_predicate", 54: "minecraft:loot_modifier", 55: "minecraft:dialog", 56: "minecraft:uuid", 6: "minecraft:entity", 7: "minecraft:game_profile", 8: "minecraft:block_pos", 9: "minecraft:column_pos"} +var CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpMap = map[int32]string{0: "SINGLE_WORD", 1: "QUOTABLE_PHRASE", 2: "GREEDY_PHRASE"} + func (ret *CommandNode) Decode(r io.ReadSeeker) (err error) { var CommandNodeFlagsPacked uint8 err = binary.Read(r, binary.BigEndian, &CommandNodeFlagsPacked) if err != nil { return } - ret.Flags.Unused = CommandNodeFlagsPacked << 0 >> 6 - ret.Flags.AllowsRestricted = CommandNodeFlagsPacked<<2>>7 == 1 - ret.Flags.HasCustomSuggestions = CommandNodeFlagsPacked<<3>>7 == 1 - ret.Flags.HasRedirectNode = CommandNodeFlagsPacked<<4>>7 == 1 - ret.Flags.HasCommand = CommandNodeFlagsPacked<<5>>7 == 1 - ret.Flags.CommandNodeType = CommandNodeFlagsPacked << 6 >> 6 + ret.Flags.CommandNodeType = CommandNodeFlagsPacked >> 0 & 3 + ret.Flags.HasCommand = CommandNodeFlagsPacked>>2&1 == 1 + ret.Flags.HasRedirectNode = CommandNodeFlagsPacked>>3&1 == 1 + ret.Flags.HasCustomSuggestions = CommandNodeFlagsPacked>>4&1 == 1 + ret.Flags.AllowsRestricted = CommandNodeFlagsPacked>>5&1 == 1 var lCommandNodeChildren int32 lCommandNodeChildren, err = proto_base.DecodeVarInt(r) if err != nil { @@ -2554,8 +2555,489 @@ func (ret *CommandNode) Decode(r io.ReadSeeker) (err error) { } ret.RedirectNode = CommandNodeRedirectNodeTmp } + switch ret.Flags.CommandNodeType { + case 0: + var CommandNodeExtraNodeData0Tmp struct { + } + ret.ExtraNodeData = CommandNodeExtraNodeData0Tmp + case 1: + var CommandNodeExtraNodeData1Tmp struct { + Name string + } + CommandNodeExtraNodeData1Tmp.Name, err = proto_base.DecodeString(r) + if err != nil { + return + } + ret.ExtraNodeData = CommandNodeExtraNodeData1Tmp + case 2: + var CommandNodeExtraNodeData2Tmp struct { + Name string + Parser string + Properties any + SuggestionType any + } + CommandNodeExtraNodeData2Tmp.Name, err = proto_base.DecodeString(r) + if err != nil { + return + } + var CommandNodeExtraNodeData2TmpParserKey int32 + CommandNodeExtraNodeData2TmpParserKey, err = proto_base.DecodeVarInt(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Parser, err = proto_base.ErroringIndex(CommandNodeExtraNodeData2TmpParserMap, CommandNodeExtraNodeData2TmpParserKey) + if err != nil { + return + } + switch CommandNodeExtraNodeData2Tmp.Parser { + case "brigadier:bool": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierBoolTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierBoolTmp + case "brigadier:double": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMin1Tmp float64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMax1Tmp float64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp + case "brigadier:float": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMin1Tmp float32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMax1Tmp float32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp + case "brigadier:integer": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMin1Tmp int32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMax1Tmp int32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp + case "brigadier:long": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMin1Tmp int64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMax1Tmp int64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp + case "brigadier:string": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmp string + var CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpKey int32 + CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpKey, err = proto_base.DecodeVarInt(r) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmp, err = proto_base.ErroringIndex(CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpMap, CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpKey) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmp + case "minecraft:angle": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftAngleTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftAngleTmp + case "minecraft:block_pos": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPosTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPosTmp + case "minecraft:block_predicate": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPredicateTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPredicateTmp + case "minecraft:block_state": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockStateTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockStateTmp + case "minecraft:color": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftColorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftColorTmp + case "minecraft:column_pos": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftColumnPosTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftColumnPosTmp + case "minecraft:component": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftComponentTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftComponentTmp + case "minecraft:dialog": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftDialogTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftDialogTmp + case "minecraft:dimension": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftDimensionTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftDimensionTmp + case "minecraft:entity": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp struct { + Unused uint8 + OnlyAllowPlayers bool + OnlyAllowEntities bool + } + var CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp.OnlyAllowEntities = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp.OnlyAllowPlayers = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp.Unused = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked >> 2 & 63 + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp + case "minecraft:entity_anchor": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityAnchorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityAnchorTmp + case "minecraft:float_range": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftFloatRangeTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftFloatRangeTmp + case "minecraft:function": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftFunctionTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftFunctionTmp + case "minecraft:game_profile": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftGameProfileTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftGameProfileTmp + case "minecraft:gamemode": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftGamemodeTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftGamemodeTmp + case "minecraft:heightmap": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftHeightmapTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftHeightmapTmp + case "minecraft:hex_color": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftHexColorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftHexColorTmp + case "minecraft:int_range": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftIntRangeTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftIntRangeTmp + case "minecraft:item_predicate": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftItemPredicateTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftItemPredicateTmp + case "minecraft:item_slot": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftItemSlotTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftItemSlotTmp + case "minecraft:item_stack": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftItemStackTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftItemStackTmp + case "minecraft:message": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftMessageTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftMessageTmp + case "minecraft:nbt": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtTmp + case "minecraft:nbt_path": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtPathTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtPathTmp + case "minecraft:objective": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveTmp + case "minecraft:objective_criteria": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveCriteriaTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveCriteriaTmp + case "minecraft:operation": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftOperationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftOperationTmp + case "minecraft:particle": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftParticleTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftParticleTmp + case "minecraft:resource": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceTmp + case "minecraft:resource_key": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceKeyTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceKeyTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceKeyTmp + case "minecraft:resource_location": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceLocationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceLocationTmp + case "minecraft:resource_or_tag": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagTmp + case "minecraft:resource_or_tag_key": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagKeyTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagKeyTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagKeyTmp + case "minecraft:resource_selector": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceSelectorTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceSelectorTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceSelectorTmp + case "minecraft:rotation": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftRotationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftRotationTmp + case "minecraft:score_holder": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp struct { + Unused uint8 + AllowMultiple bool + } + var CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp.AllowMultiple = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp.Unused = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked >> 1 & 127 + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp + case "minecraft:scoreboard_slot": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreboardSlotTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreboardSlotTmp + case "minecraft:swizzle": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftSwizzleTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftSwizzleTmp + case "minecraft:team": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTeamTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTeamTmp + case "minecraft:template_mirror": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTemplateMirrorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTemplateMirrorTmp + case "minecraft:template_rotation": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTemplateRotationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTemplateRotationTmp + case "minecraft:time": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTimeTmp struct { + Min int32 + } + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesMinecraftTimeTmp.Min) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTimeTmp + case "minecraft:uuid": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftUuidTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftUuidTmp + case "minecraft:vec2": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftVec2Tmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftVec2Tmp + case "minecraft:vec3": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftVec3Tmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftVec3Tmp + } + switch ret.Flags.HasCustomSuggestions { + case true: + var CommandNodeExtraNodeData2TmpSuggestionType1Tmp string + CommandNodeExtraNodeData2TmpSuggestionType1Tmp, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.SuggestionType = CommandNodeExtraNodeData2TmpSuggestionType1Tmp + default: + var CommandNodeExtraNodeData2TmpSuggestionTypeTmp struct { + } + CommandNodeExtraNodeData2Tmp.SuggestionType = CommandNodeExtraNodeData2TmpSuggestionTypeTmp + } + ret.ExtraNodeData = CommandNodeExtraNodeData2Tmp + } return } + +var CommandNodeExtraNodeDataParserReverseMap = map[string]int32{"brigadier:bool": 0, "brigadier:float": 1, "minecraft:vec3": 10, "minecraft:vec2": 11, "minecraft:block_state": 12, "minecraft:block_predicate": 13, "minecraft:item_stack": 14, "minecraft:item_predicate": 15, "minecraft:color": 16, "minecraft:hex_color": 17, "minecraft:component": 18, "minecraft:style": 19, "brigadier:double": 2, "minecraft:message": 20, "minecraft:nbt": 21, "minecraft:nbt_tag": 22, "minecraft:nbt_path": 23, "minecraft:objective": 24, "minecraft:objective_criteria": 25, "minecraft:operation": 26, "minecraft:particle": 27, "minecraft:angle": 28, "minecraft:rotation": 29, "brigadier:integer": 3, "minecraft:scoreboard_slot": 30, "minecraft:score_holder": 31, "minecraft:swizzle": 32, "minecraft:team": 33, "minecraft:item_slot": 34, "minecraft:item_slots": 35, "minecraft:resource_location": 36, "minecraft:function": 37, "minecraft:entity_anchor": 38, "minecraft:int_range": 39, "brigadier:long": 4, "minecraft:float_range": 40, "minecraft:dimension": 41, "minecraft:gamemode": 42, "minecraft:time": 43, "minecraft:resource_or_tag": 44, "minecraft:resource_or_tag_key": 45, "minecraft:resource": 46, "minecraft:resource_key": 47, "minecraft:resource_selector": 48, "minecraft:template_mirror": 49, "brigadier:string": 5, "minecraft:template_rotation": 50, "minecraft:heightmap": 51, "minecraft:loot_table": 52, "minecraft:loot_predicate": 53, "minecraft:loot_modifier": 54, "minecraft:dialog": 55, "minecraft:uuid": 56, "minecraft:entity": 6, "minecraft:game_profile": 7, "minecraft:block_pos": 8, "minecraft:column_pos": 9} +var CommandNodeExtraNodeDataPropertiesReverseMap = map[string]int32{"SINGLE_WORD": 0, "QUOTABLE_PHRASE": 1, "GREEDY_PHRASE": 2} + func (ret *CommandNode) Encode(w io.Writer) (err error) { var CommandNodeFlagsPacked uint8 CommandNodeFlagsPacked |= (uint8(ret.Flags.CommandNodeType) & 0x3) << 0x0 @@ -2563,7 +3045,6 @@ func (ret *CommandNode) Encode(w io.Writer) (err error) { CommandNodeFlagsPacked |= (proto_base.Bool2uint8(ret.Flags.HasRedirectNode) & 0x1) << 0x3 CommandNodeFlagsPacked |= (proto_base.Bool2uint8(ret.Flags.HasCustomSuggestions) & 0x1) << 0x4 CommandNodeFlagsPacked |= (proto_base.Bool2uint8(ret.Flags.AllowsRestricted) & 0x1) << 0x5 - CommandNodeFlagsPacked |= (uint8(ret.Flags.Unused) & 0x3) << 0x6 err = binary.Write(w, binary.BigEndian, CommandNodeFlagsPacked) if err != nil { return @@ -2597,6 +3078,699 @@ func (ret *CommandNode) Encode(w io.Writer) (err error) { return } } + switch ret.Flags.CommandNodeType { + case 0: + _, ok := ret.ExtraNodeData.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case 1: + CommandNodeExtraNodeData, ok := ret.ExtraNodeData.(struct { + Name string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeData.Name) + if err != nil { + return + } + case 2: + CommandNodeExtraNodeData, ok := ret.ExtraNodeData.(struct { + Name string + Parser string + Properties any + SuggestionType any + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeData.Name) + if err != nil { + return + } + var vCommandNodeExtraNodeDataParser int32 + vCommandNodeExtraNodeDataParser, err = proto_base.ErroringIndex(CommandNodeExtraNodeDataParserReverseMap, CommandNodeExtraNodeData.Parser) + if err != nil { + return + } + err = proto_base.EncodeVarInt(w, vCommandNodeExtraNodeDataParser) + if err != nil { + return + } + switch CommandNodeExtraNodeData.Parser { + case "brigadier:bool": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "brigadier:double": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(float64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(float64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:float": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(float32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(float32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:integer": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(int32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(int32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:long": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(int64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(int64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:string": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(string) + if !ok { + err = proto_base.BadTypeError + return + } + var vCommandNodeExtraNodeDataProperties int32 + vCommandNodeExtraNodeDataProperties, err = proto_base.ErroringIndex(CommandNodeExtraNodeDataPropertiesReverseMap, CommandNodeExtraNodeDataProperties) + if err != nil { + return + } + err = proto_base.EncodeVarInt(w, vCommandNodeExtraNodeDataProperties) + if err != nil { + return + } + case "minecraft:angle": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:block_pos": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:block_predicate": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:block_state": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:color": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:column_pos": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:component": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:dialog": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:dimension": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:entity": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Unused uint8 + OnlyAllowPlayers bool + OnlyAllowEntities bool + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesPacked uint8 + CommandNodeExtraNodeDataPropertiesPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.OnlyAllowEntities) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.OnlyAllowPlayers) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesPacked |= (uint8(CommandNodeExtraNodeDataProperties.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesPacked) + if err != nil { + return + } + case "minecraft:entity_anchor": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:float_range": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:function": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:game_profile": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:gamemode": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:heightmap": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:hex_color": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:int_range": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:item_predicate": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:item_slot": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:item_stack": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:message": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:nbt": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:nbt_path": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:objective": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:objective_criteria": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:operation": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:particle": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:resource": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:resource_key": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:resource_location": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:resource_or_tag": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:resource_or_tag_key": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:resource_selector": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:rotation": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:score_holder": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Unused uint8 + AllowMultiple bool + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesPacked uint8 + CommandNodeExtraNodeDataPropertiesPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.AllowMultiple) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesPacked |= (uint8(CommandNodeExtraNodeDataProperties.Unused) & 0x7F) << 0x1 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesPacked) + if err != nil { + return + } + case "minecraft:scoreboard_slot": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:swizzle": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:team": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:template_mirror": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:template_rotation": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:time": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Min int32 + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataProperties.Min) + if err != nil { + return + } + case "minecraft:uuid": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:vec2": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:vec3": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch ret.Flags.HasCustomSuggestions { + case true: + CommandNodeExtraNodeDataSuggestionType, ok := CommandNodeExtraNodeData.SuggestionType.(string) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataSuggestionType) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeData.SuggestionType.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + } return } @@ -3655,17 +4829,17 @@ func (ret *Position) Decode(r io.ReadSeeker) (err error) { if err != nil { return } - ret.X = int32(PositionPacked << 0 >> 38) - if ret.X >= 1<<25 { - ret.X -= 1 << 26 + ret.Y = int16(PositionPacked >> 0 & 4095) + if ret.Y >= 1<<11 { + ret.Y -= 1 << 12 } - ret.Z = int32(PositionPacked << 26 >> 38) + ret.Z = int32(PositionPacked >> 12 & 67108863) if ret.Z >= 1<<25 { ret.Z -= 1 << 26 } - ret.Y = int16(PositionPacked << 52 >> 52) - if ret.Y >= 1<<11 { - ret.Y -= 1 << 12 + ret.X = int32(PositionPacked >> 38 & 67108863) + if ret.X >= 1<<25 { + ret.X -= 1 << 26 } return } @@ -13046,10 +14220,10 @@ func (ret *PlayToClientPacketAdvancements) Decode(r io.ReadSeeker) (err error) { if err != nil { return } - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Unused = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked << 0 >> 3 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Hidden = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<29>>31 == 1 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.ShowToast = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<30>>31 == 1 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<31>>31 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>0&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.ShowToast = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>1&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Hidden = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>2&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Unused = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked >> 3 & 536870911 switch PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture { case true: var PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataBackgroundTexture1Tmp string @@ -17111,17 +18285,17 @@ func (ret *PlayToClientPacketMultiBlockChange) Decode(r io.ReadSeeker) (err erro if err != nil { return } - ret.ChunkCoordinates.X = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked << 0 >> 42) - if ret.ChunkCoordinates.X >= 1<<21 { - ret.ChunkCoordinates.X -= 1 << 22 + ret.ChunkCoordinates.Y = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked >> 0 & 1048575) + if ret.ChunkCoordinates.Y >= 1<<19 { + ret.ChunkCoordinates.Y -= 1 << 20 } - ret.ChunkCoordinates.Z = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked << 22 >> 42) + ret.ChunkCoordinates.Z = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked >> 20 & 4194303) if ret.ChunkCoordinates.Z >= 1<<21 { ret.ChunkCoordinates.Z -= 1 << 22 } - ret.ChunkCoordinates.Y = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked << 44 >> 44) - if ret.ChunkCoordinates.Y >= 1<<19 { - ret.ChunkCoordinates.Y -= 1 << 20 + ret.ChunkCoordinates.X = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked >> 42 & 4194303) + if ret.ChunkCoordinates.X >= 1<<21 { + ret.ChunkCoordinates.X -= 1 << 22 } var lPlayToClientPacketMultiBlockChangeRecords int32 lPlayToClientPacketMultiBlockChangeRecords, err = proto_base.DecodeVarInt(r) diff --git a/mc/proto_generated/v1_21_9/proto.go b/mc/proto_generated/v1_21_9/proto.go index c6f21c9..75a65ad 100644 --- a/mc/proto_generated/v1_21_9/proto.go +++ b/mc/proto_generated/v1_21_9/proto.go @@ -1,6 +1,6 @@ // Code generated by strom. DO NOT EDIT. -// source: minecraft-data/pc/1.21.9/protocol.json (sha256:9861cee397931c678c3b1837dcdf82e3fc885442c6bd0e4a60522fbf26653e59) -// version: v0.6.6-0.20260805175346-53d366ae5301+dirty (go1.26.2) +// source: minecraft-data/pc/1.21.9/protocol.json (sha256:de50c20cccb0093133fff3e243efe1fa9ffe2bfb9c67dd2f5c2a747c6935f9d6) +// version: v0.6.6-0.20260805191907-f4c27628815b+dirty (go1.26.2) package v1_21_9 import ( @@ -3413,8 +3413,8 @@ func (ret *ChunkBlockEntity) Decode(r io.ReadSeeker) (err error) { if err != nil { return } - ret.Anon.X = ChunkBlockEntityAnonPacked << 0 >> 4 - ret.Anon.Z = ChunkBlockEntityAnonPacked << 4 >> 4 + ret.Anon.Z = ChunkBlockEntityAnonPacked >> 0 & 15 + ret.Anon.X = ChunkBlockEntityAnonPacked >> 4 & 15 err = binary.Read(r, binary.BigEndian, &ret.Y) if err != nil { return @@ -3455,7 +3455,6 @@ func (ret *ChunkBlockEntity) Encode(w io.Writer) (err error) { type CommandNode struct { Flags struct { - Unused uint8 AllowsRestricted bool HasCustomSuggestions bool HasRedirectNode bool @@ -3467,18 +3466,20 @@ type CommandNode struct { ExtraNodeData any } +var CommandNodeExtraNodeData2TmpParserMap = map[int32]string{0: "brigadier:bool", 1: "brigadier:float", 10: "minecraft:vec3", 11: "minecraft:vec2", 12: "minecraft:block_state", 13: "minecraft:block_predicate", 14: "minecraft:item_stack", 15: "minecraft:item_predicate", 16: "minecraft:color", 17: "minecraft:hex_color", 18: "minecraft:component", 19: "minecraft:style", 2: "brigadier:double", 20: "minecraft:message", 21: "minecraft:nbt", 22: "minecraft:nbt_tag", 23: "minecraft:nbt_path", 24: "minecraft:objective", 25: "minecraft:objective_criteria", 26: "minecraft:operation", 27: "minecraft:particle", 28: "minecraft:angle", 29: "minecraft:rotation", 3: "brigadier:integer", 30: "minecraft:scoreboard_slot", 31: "minecraft:score_holder", 32: "minecraft:swizzle", 33: "minecraft:team", 34: "minecraft:item_slot", 35: "minecraft:item_slots", 36: "minecraft:resource_location", 37: "minecraft:function", 38: "minecraft:entity_anchor", 39: "minecraft:int_range", 4: "brigadier:long", 40: "minecraft:float_range", 41: "minecraft:dimension", 42: "minecraft:gamemode", 43: "minecraft:time", 44: "minecraft:resource_or_tag", 45: "minecraft:resource_or_tag_key", 46: "minecraft:resource", 47: "minecraft:resource_key", 48: "minecraft:resource_selector", 49: "minecraft:template_mirror", 5: "brigadier:string", 50: "minecraft:template_rotation", 51: "minecraft:heightmap", 52: "minecraft:loot_table", 53: "minecraft:loot_predicate", 54: "minecraft:loot_modifier", 55: "minecraft:dialog", 56: "minecraft:uuid", 6: "minecraft:entity", 7: "minecraft:game_profile", 8: "minecraft:block_pos", 9: "minecraft:column_pos"} +var CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpMap = map[int32]string{0: "SINGLE_WORD", 1: "QUOTABLE_PHRASE", 2: "GREEDY_PHRASE"} + func (ret *CommandNode) Decode(r io.ReadSeeker) (err error) { var CommandNodeFlagsPacked uint8 err = binary.Read(r, binary.BigEndian, &CommandNodeFlagsPacked) if err != nil { return } - ret.Flags.Unused = CommandNodeFlagsPacked << 0 >> 6 - ret.Flags.AllowsRestricted = CommandNodeFlagsPacked<<2>>7 == 1 - ret.Flags.HasCustomSuggestions = CommandNodeFlagsPacked<<3>>7 == 1 - ret.Flags.HasRedirectNode = CommandNodeFlagsPacked<<4>>7 == 1 - ret.Flags.HasCommand = CommandNodeFlagsPacked<<5>>7 == 1 - ret.Flags.CommandNodeType = CommandNodeFlagsPacked << 6 >> 6 + ret.Flags.CommandNodeType = CommandNodeFlagsPacked >> 0 & 3 + ret.Flags.HasCommand = CommandNodeFlagsPacked>>2&1 == 1 + ret.Flags.HasRedirectNode = CommandNodeFlagsPacked>>3&1 == 1 + ret.Flags.HasCustomSuggestions = CommandNodeFlagsPacked>>4&1 == 1 + ret.Flags.AllowsRestricted = CommandNodeFlagsPacked>>5&1 == 1 var lCommandNodeChildren int32 lCommandNodeChildren, err = proto_base.DecodeVarInt(r) if err != nil { @@ -3506,8 +3507,489 @@ func (ret *CommandNode) Decode(r io.ReadSeeker) (err error) { } ret.RedirectNode = CommandNodeRedirectNodeTmp } + switch ret.Flags.CommandNodeType { + case 0: + var CommandNodeExtraNodeData0Tmp struct { + } + ret.ExtraNodeData = CommandNodeExtraNodeData0Tmp + case 1: + var CommandNodeExtraNodeData1Tmp struct { + Name string + } + CommandNodeExtraNodeData1Tmp.Name, err = proto_base.DecodeString(r) + if err != nil { + return + } + ret.ExtraNodeData = CommandNodeExtraNodeData1Tmp + case 2: + var CommandNodeExtraNodeData2Tmp struct { + Name string + Parser string + Properties any + SuggestionType any + } + CommandNodeExtraNodeData2Tmp.Name, err = proto_base.DecodeString(r) + if err != nil { + return + } + var CommandNodeExtraNodeData2TmpParserKey int32 + CommandNodeExtraNodeData2TmpParserKey, err = proto_base.DecodeVarInt(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Parser, err = proto_base.ErroringIndex(CommandNodeExtraNodeData2TmpParserMap, CommandNodeExtraNodeData2TmpParserKey) + if err != nil { + return + } + switch CommandNodeExtraNodeData2Tmp.Parser { + case "brigadier:bool": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierBoolTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierBoolTmp + case "brigadier:double": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMin1Tmp float64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMax1Tmp float64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp + case "brigadier:float": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMin1Tmp float32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMax1Tmp float32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp + case "brigadier:integer": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMin1Tmp int32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMax1Tmp int32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp + case "brigadier:long": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMin1Tmp int64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMax1Tmp int64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp + case "brigadier:string": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmp string + var CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpKey int32 + CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpKey, err = proto_base.DecodeVarInt(r) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmp, err = proto_base.ErroringIndex(CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpMap, CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpKey) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmp + case "minecraft:angle": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftAngleTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftAngleTmp + case "minecraft:block_pos": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPosTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPosTmp + case "minecraft:block_predicate": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPredicateTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPredicateTmp + case "minecraft:block_state": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockStateTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockStateTmp + case "minecraft:color": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftColorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftColorTmp + case "minecraft:column_pos": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftColumnPosTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftColumnPosTmp + case "minecraft:component": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftComponentTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftComponentTmp + case "minecraft:dialog": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftDialogTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftDialogTmp + case "minecraft:dimension": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftDimensionTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftDimensionTmp + case "minecraft:entity": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp struct { + Unused uint8 + OnlyAllowPlayers bool + OnlyAllowEntities bool + } + var CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp.OnlyAllowEntities = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp.OnlyAllowPlayers = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp.Unused = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked >> 2 & 63 + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp + case "minecraft:entity_anchor": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityAnchorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityAnchorTmp + case "minecraft:float_range": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftFloatRangeTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftFloatRangeTmp + case "minecraft:function": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftFunctionTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftFunctionTmp + case "minecraft:game_profile": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftGameProfileTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftGameProfileTmp + case "minecraft:gamemode": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftGamemodeTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftGamemodeTmp + case "minecraft:heightmap": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftHeightmapTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftHeightmapTmp + case "minecraft:hex_color": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftHexColorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftHexColorTmp + case "minecraft:int_range": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftIntRangeTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftIntRangeTmp + case "minecraft:item_predicate": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftItemPredicateTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftItemPredicateTmp + case "minecraft:item_slot": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftItemSlotTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftItemSlotTmp + case "minecraft:item_stack": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftItemStackTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftItemStackTmp + case "minecraft:message": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftMessageTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftMessageTmp + case "minecraft:nbt": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtTmp + case "minecraft:nbt_path": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtPathTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtPathTmp + case "minecraft:objective": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveTmp + case "minecraft:objective_criteria": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveCriteriaTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveCriteriaTmp + case "minecraft:operation": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftOperationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftOperationTmp + case "minecraft:particle": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftParticleTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftParticleTmp + case "minecraft:resource": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceTmp + case "minecraft:resource_key": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceKeyTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceKeyTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceKeyTmp + case "minecraft:resource_location": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceLocationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceLocationTmp + case "minecraft:resource_or_tag": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagTmp + case "minecraft:resource_or_tag_key": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagKeyTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagKeyTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagKeyTmp + case "minecraft:resource_selector": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceSelectorTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceSelectorTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceSelectorTmp + case "minecraft:rotation": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftRotationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftRotationTmp + case "minecraft:score_holder": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp struct { + Unused uint8 + AllowMultiple bool + } + var CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp.AllowMultiple = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp.Unused = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked >> 1 & 127 + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp + case "minecraft:scoreboard_slot": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreboardSlotTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreboardSlotTmp + case "minecraft:swizzle": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftSwizzleTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftSwizzleTmp + case "minecraft:team": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTeamTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTeamTmp + case "minecraft:template_mirror": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTemplateMirrorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTemplateMirrorTmp + case "minecraft:template_rotation": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTemplateRotationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTemplateRotationTmp + case "minecraft:time": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTimeTmp struct { + Min int32 + } + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesMinecraftTimeTmp.Min) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTimeTmp + case "minecraft:uuid": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftUuidTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftUuidTmp + case "minecraft:vec2": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftVec2Tmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftVec2Tmp + case "minecraft:vec3": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftVec3Tmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftVec3Tmp + } + switch ret.Flags.HasCustomSuggestions { + case true: + var CommandNodeExtraNodeData2TmpSuggestionType1Tmp string + CommandNodeExtraNodeData2TmpSuggestionType1Tmp, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.SuggestionType = CommandNodeExtraNodeData2TmpSuggestionType1Tmp + default: + var CommandNodeExtraNodeData2TmpSuggestionTypeTmp struct { + } + CommandNodeExtraNodeData2Tmp.SuggestionType = CommandNodeExtraNodeData2TmpSuggestionTypeTmp + } + ret.ExtraNodeData = CommandNodeExtraNodeData2Tmp + } return } + +var CommandNodeExtraNodeDataParserReverseMap = map[string]int32{"brigadier:bool": 0, "brigadier:float": 1, "minecraft:vec3": 10, "minecraft:vec2": 11, "minecraft:block_state": 12, "minecraft:block_predicate": 13, "minecraft:item_stack": 14, "minecraft:item_predicate": 15, "minecraft:color": 16, "minecraft:hex_color": 17, "minecraft:component": 18, "minecraft:style": 19, "brigadier:double": 2, "minecraft:message": 20, "minecraft:nbt": 21, "minecraft:nbt_tag": 22, "minecraft:nbt_path": 23, "minecraft:objective": 24, "minecraft:objective_criteria": 25, "minecraft:operation": 26, "minecraft:particle": 27, "minecraft:angle": 28, "minecraft:rotation": 29, "brigadier:integer": 3, "minecraft:scoreboard_slot": 30, "minecraft:score_holder": 31, "minecraft:swizzle": 32, "minecraft:team": 33, "minecraft:item_slot": 34, "minecraft:item_slots": 35, "minecraft:resource_location": 36, "minecraft:function": 37, "minecraft:entity_anchor": 38, "minecraft:int_range": 39, "brigadier:long": 4, "minecraft:float_range": 40, "minecraft:dimension": 41, "minecraft:gamemode": 42, "minecraft:time": 43, "minecraft:resource_or_tag": 44, "minecraft:resource_or_tag_key": 45, "minecraft:resource": 46, "minecraft:resource_key": 47, "minecraft:resource_selector": 48, "minecraft:template_mirror": 49, "brigadier:string": 5, "minecraft:template_rotation": 50, "minecraft:heightmap": 51, "minecraft:loot_table": 52, "minecraft:loot_predicate": 53, "minecraft:loot_modifier": 54, "minecraft:dialog": 55, "minecraft:uuid": 56, "minecraft:entity": 6, "minecraft:game_profile": 7, "minecraft:block_pos": 8, "minecraft:column_pos": 9} +var CommandNodeExtraNodeDataPropertiesReverseMap = map[string]int32{"SINGLE_WORD": 0, "QUOTABLE_PHRASE": 1, "GREEDY_PHRASE": 2} + func (ret *CommandNode) Encode(w io.Writer) (err error) { var CommandNodeFlagsPacked uint8 CommandNodeFlagsPacked |= (uint8(ret.Flags.CommandNodeType) & 0x3) << 0x0 @@ -3515,7 +3997,6 @@ func (ret *CommandNode) Encode(w io.Writer) (err error) { CommandNodeFlagsPacked |= (proto_base.Bool2uint8(ret.Flags.HasRedirectNode) & 0x1) << 0x3 CommandNodeFlagsPacked |= (proto_base.Bool2uint8(ret.Flags.HasCustomSuggestions) & 0x1) << 0x4 CommandNodeFlagsPacked |= (proto_base.Bool2uint8(ret.Flags.AllowsRestricted) & 0x1) << 0x5 - CommandNodeFlagsPacked |= (uint8(ret.Flags.Unused) & 0x3) << 0x6 err = binary.Write(w, binary.BigEndian, CommandNodeFlagsPacked) if err != nil { return @@ -3549,6 +4030,699 @@ func (ret *CommandNode) Encode(w io.Writer) (err error) { return } } + switch ret.Flags.CommandNodeType { + case 0: + _, ok := ret.ExtraNodeData.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case 1: + CommandNodeExtraNodeData, ok := ret.ExtraNodeData.(struct { + Name string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeData.Name) + if err != nil { + return + } + case 2: + CommandNodeExtraNodeData, ok := ret.ExtraNodeData.(struct { + Name string + Parser string + Properties any + SuggestionType any + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeData.Name) + if err != nil { + return + } + var vCommandNodeExtraNodeDataParser int32 + vCommandNodeExtraNodeDataParser, err = proto_base.ErroringIndex(CommandNodeExtraNodeDataParserReverseMap, CommandNodeExtraNodeData.Parser) + if err != nil { + return + } + err = proto_base.EncodeVarInt(w, vCommandNodeExtraNodeDataParser) + if err != nil { + return + } + switch CommandNodeExtraNodeData.Parser { + case "brigadier:bool": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "brigadier:double": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(float64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(float64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:float": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(float32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(float32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:integer": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(int32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(int32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:long": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(int64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(int64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:string": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(string) + if !ok { + err = proto_base.BadTypeError + return + } + var vCommandNodeExtraNodeDataProperties int32 + vCommandNodeExtraNodeDataProperties, err = proto_base.ErroringIndex(CommandNodeExtraNodeDataPropertiesReverseMap, CommandNodeExtraNodeDataProperties) + if err != nil { + return + } + err = proto_base.EncodeVarInt(w, vCommandNodeExtraNodeDataProperties) + if err != nil { + return + } + case "minecraft:angle": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:block_pos": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:block_predicate": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:block_state": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:color": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:column_pos": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:component": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:dialog": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:dimension": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:entity": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Unused uint8 + OnlyAllowPlayers bool + OnlyAllowEntities bool + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesPacked uint8 + CommandNodeExtraNodeDataPropertiesPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.OnlyAllowEntities) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.OnlyAllowPlayers) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesPacked |= (uint8(CommandNodeExtraNodeDataProperties.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesPacked) + if err != nil { + return + } + case "minecraft:entity_anchor": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:float_range": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:function": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:game_profile": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:gamemode": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:heightmap": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:hex_color": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:int_range": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:item_predicate": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:item_slot": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:item_stack": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:message": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:nbt": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:nbt_path": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:objective": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:objective_criteria": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:operation": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:particle": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:resource": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:resource_key": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:resource_location": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:resource_or_tag": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:resource_or_tag_key": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:resource_selector": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:rotation": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:score_holder": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Unused uint8 + AllowMultiple bool + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesPacked uint8 + CommandNodeExtraNodeDataPropertiesPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.AllowMultiple) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesPacked |= (uint8(CommandNodeExtraNodeDataProperties.Unused) & 0x7F) << 0x1 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesPacked) + if err != nil { + return + } + case "minecraft:scoreboard_slot": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:swizzle": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:team": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:template_mirror": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:template_rotation": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:time": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Min int32 + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataProperties.Min) + if err != nil { + return + } + case "minecraft:uuid": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:vec2": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:vec3": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch ret.Flags.HasCustomSuggestions { + case true: + CommandNodeExtraNodeDataSuggestionType, ok := CommandNodeExtraNodeData.SuggestionType.(string) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataSuggestionType) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeData.SuggestionType.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + } return } @@ -4575,17 +5749,17 @@ func (ret *Position) Decode(r io.ReadSeeker) (err error) { if err != nil { return } - ret.X = int32(PositionPacked << 0 >> 38) - if ret.X >= 1<<25 { - ret.X -= 1 << 26 + ret.Y = int16(PositionPacked >> 0 & 4095) + if ret.Y >= 1<<11 { + ret.Y -= 1 << 12 } - ret.Z = int32(PositionPacked << 26 >> 38) + ret.Z = int32(PositionPacked >> 12 & 67108863) if ret.Z >= 1<<25 { ret.Z -= 1 << 26 } - ret.Y = int16(PositionPacked << 52 >> 52) - if ret.Y >= 1<<11 { - ret.Y -= 1 << 12 + ret.X = int32(PositionPacked >> 38 & 67108863) + if ret.X >= 1<<25 { + ret.X -= 1 << 26 } return } @@ -14264,10 +15438,10 @@ func (ret *PlayToClientPacketAdvancements) Decode(r io.ReadSeeker) (err error) { if err != nil { return } - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Unused = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked << 0 >> 3 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Hidden = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<29>>31 == 1 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.ShowToast = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<30>>31 == 1 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<31>>31 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>0&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.ShowToast = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>1&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Hidden = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>2&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Unused = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked >> 3 & 536870911 switch PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture { case true: var PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataBackgroundTexture1Tmp string @@ -18510,17 +19684,17 @@ func (ret *PlayToClientPacketMultiBlockChange) Decode(r io.ReadSeeker) (err erro if err != nil { return } - ret.ChunkCoordinates.X = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked << 0 >> 42) - if ret.ChunkCoordinates.X >= 1<<21 { - ret.ChunkCoordinates.X -= 1 << 22 + ret.ChunkCoordinates.Y = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked >> 0 & 1048575) + if ret.ChunkCoordinates.Y >= 1<<19 { + ret.ChunkCoordinates.Y -= 1 << 20 } - ret.ChunkCoordinates.Z = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked << 22 >> 42) + ret.ChunkCoordinates.Z = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked >> 20 & 4194303) if ret.ChunkCoordinates.Z >= 1<<21 { ret.ChunkCoordinates.Z -= 1 << 22 } - ret.ChunkCoordinates.Y = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked << 44 >> 44) - if ret.ChunkCoordinates.Y >= 1<<19 { - ret.ChunkCoordinates.Y -= 1 << 20 + ret.ChunkCoordinates.X = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked >> 42 & 4194303) + if ret.ChunkCoordinates.X >= 1<<21 { + ret.ChunkCoordinates.X -= 1 << 22 } var lPlayToClientPacketMultiBlockChangeRecords int32 lPlayToClientPacketMultiBlockChangeRecords, err = proto_base.DecodeVarInt(r) diff --git a/mc/proto_generated/v1_8/proto.go b/mc/proto_generated/v1_8/proto.go index ce8ac63..be0a695 100644 --- a/mc/proto_generated/v1_8/proto.go +++ b/mc/proto_generated/v1_8/proto.go @@ -1,6 +1,6 @@ // Code generated by strom. DO NOT EDIT. // source: minecraft-data/pc/1.8/protocol.json (sha256:79fe774bfc255dd281899c004fbb9c7adc40fb107de9353da1dd0371ea4b53af) -// version: v0.6.6-0.20260805175346-53d366ae5301+dirty (go1.26.2) +// version: v0.6.6-0.20260805191907-f4c27628815b+dirty (go1.26.2) package v1_8 import ( @@ -82,8 +82,90 @@ func (ret *EntityMetadata) Decode(r io.ReadSeeker) (err error) { if err != nil { return } - entry.Anon.Type = EntityMetadataInnerAnonPacked << 0 >> 5 - entry.Anon.Key = EntityMetadataInnerAnonPacked << 3 >> 3 + entry.Anon.Key = EntityMetadataInnerAnonPacked >> 0 & 31 + entry.Anon.Type = EntityMetadataInnerAnonPacked >> 5 & 7 + switch entry.Anon.Type { + case 0: + var EntityMetadataInnerValue0Tmp int8 + err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue0Tmp) + if err != nil { + return + } + entry.Value = EntityMetadataInnerValue0Tmp + case 1: + var EntityMetadataInnerValue1Tmp int16 + err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue1Tmp) + if err != nil { + return + } + entry.Value = EntityMetadataInnerValue1Tmp + case 2: + var EntityMetadataInnerValue2Tmp int32 + err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue2Tmp) + if err != nil { + return + } + entry.Value = EntityMetadataInnerValue2Tmp + case 3: + var EntityMetadataInnerValue3Tmp float32 + err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue3Tmp) + if err != nil { + return + } + entry.Value = EntityMetadataInnerValue3Tmp + case 4: + var EntityMetadataInnerValue4Tmp string + EntityMetadataInnerValue4Tmp, err = proto_base.DecodeString(r) + if err != nil { + return + } + entry.Value = EntityMetadataInnerValue4Tmp + case 5: + var EntityMetadataInnerValue5Tmp Slot + err = EntityMetadataInnerValue5Tmp.Decode(r) + if err != nil { + return + } + entry.Value = EntityMetadataInnerValue5Tmp + case 6: + var EntityMetadataInnerValue6Tmp struct { + X int32 + Y int32 + Z int32 + } + err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue6Tmp.X) + if err != nil { + return + } + err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue6Tmp.Y) + if err != nil { + return + } + err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue6Tmp.Z) + if err != nil { + return + } + entry.Value = EntityMetadataInnerValue6Tmp + case 7: + var EntityMetadataInnerValue7Tmp struct { + Pitch float32 + Yaw float32 + Roll float32 + } + err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue7Tmp.Pitch) + if err != nil { + return + } + err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue7Tmp.Yaw) + if err != nil { + return + } + err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue7Tmp.Roll) + if err != nil { + return + } + entry.Value = EntityMetadataInnerValue7Tmp + } ret.Val[id] = entry } return @@ -97,6 +179,113 @@ func (ret *EntityMetadata) Encode(w io.Writer) (err error) { if err != nil { return } + switch v.Anon.Type { + case 0: + EntityMetadataValue, ok := v.Value.(int8) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, EntityMetadataValue) + if err != nil { + return + } + case 1: + EntityMetadataValue, ok := v.Value.(int16) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, EntityMetadataValue) + if err != nil { + return + } + case 2: + EntityMetadataValue, ok := v.Value.(int32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, EntityMetadataValue) + if err != nil { + return + } + case 3: + EntityMetadataValue, ok := v.Value.(float32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, EntityMetadataValue) + if err != nil { + return + } + case 4: + EntityMetadataValue, ok := v.Value.(string) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, EntityMetadataValue) + if err != nil { + return + } + case 5: + EntityMetadataValue, ok := v.Value.(Slot) + if !ok { + err = proto_base.BadTypeError + return + } + EntityMetadataValueEncTmp := EntityMetadataValue + err = EntityMetadataValueEncTmp.Encode(w) + if err != nil { + return + } + case 6: + EntityMetadataValue, ok := v.Value.(struct { + X int32 + Y int32 + Z int32 + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, EntityMetadataValue.X) + if err != nil { + return + } + err = binary.Write(w, binary.BigEndian, EntityMetadataValue.Y) + if err != nil { + return + } + err = binary.Write(w, binary.BigEndian, EntityMetadataValue.Z) + if err != nil { + return + } + case 7: + EntityMetadataValue, ok := v.Value.(struct { + Pitch float32 + Yaw float32 + Roll float32 + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, EntityMetadataValue.Pitch) + if err != nil { + return + } + err = binary.Write(w, binary.BigEndian, EntityMetadataValue.Yaw) + if err != nil { + return + } + err = binary.Write(w, binary.BigEndian, EntityMetadataValue.Roll) + if err != nil { + return + } + } } err = binary.Write(w, binary.BigEndian, uint8(127)) if err != nil { @@ -130,17 +319,17 @@ func (ret *Position) Decode(r io.ReadSeeker) (err error) { if err != nil { return } - ret.X = int32(PositionPacked << 0 >> 38) - if ret.X >= 1<<25 { - ret.X -= 1 << 26 + ret.Z = int32(PositionPacked >> 0 & 67108863) + if ret.Z >= 1<<25 { + ret.Z -= 1 << 26 } - ret.Y = int16(PositionPacked << 26 >> 52) + ret.Y = int16(PositionPacked >> 26 & 4095) if ret.Y >= 1<<11 { ret.Y -= 1 << 12 } - ret.Z = int32(PositionPacked << 38 >> 38) - if ret.Z >= 1<<25 { - ret.Z -= 1 << 26 + ret.X = int32(PositionPacked >> 38 & 67108863) + if ret.X >= 1<<25 { + ret.X -= 1 << 26 } return } diff --git a/mc/proto_generated/v26_1/proto.go b/mc/proto_generated/v26_1/proto.go index 3fc2d8b..f7d59bd 100644 --- a/mc/proto_generated/v26_1/proto.go +++ b/mc/proto_generated/v26_1/proto.go @@ -1,6 +1,6 @@ // Code generated by strom. DO NOT EDIT. -// source: minecraft-data/pc/26.1/protocol.json (sha256:dfb6318886cd3ceab617f75ac05e24f9836a64501d60551071289b904ebfc389) -// version: v0.6.6-0.20260805175346-53d366ae5301+dirty (go1.26.2) +// source: minecraft-data/pc/26.1/protocol.json (sha256:093dbdd74f2cfbc8fc6be2e6f26c6b4d35470771cb34691306c68b066d785529) +// version: v0.6.6-0.20260805191907-f4c27628815b+dirty (go1.26.2) package v26_1 import ( @@ -3544,8 +3544,8 @@ func (ret *ChunkBlockEntity) Decode(r io.ReadSeeker) (err error) { if err != nil { return } - ret.Anon.X = ChunkBlockEntityAnonPacked << 0 >> 4 - ret.Anon.Z = ChunkBlockEntityAnonPacked << 4 >> 4 + ret.Anon.Z = ChunkBlockEntityAnonPacked >> 0 & 15 + ret.Anon.X = ChunkBlockEntityAnonPacked >> 4 & 15 err = binary.Read(r, binary.BigEndian, &ret.Y) if err != nil { return @@ -3586,7 +3586,6 @@ func (ret *ChunkBlockEntity) Encode(w io.Writer) (err error) { type CommandNode struct { Flags struct { - Unused uint8 AllowsRestricted bool HasCustomSuggestions bool HasRedirectNode bool @@ -3598,18 +3597,20 @@ type CommandNode struct { ExtraNodeData any } +var CommandNodeExtraNodeData2TmpParserMap = map[int32]string{0: "brigadier:bool", 1: "brigadier:float", 10: "minecraft:vec3", 11: "minecraft:vec2", 12: "minecraft:block_state", 13: "minecraft:block_predicate", 14: "minecraft:item_stack", 15: "minecraft:item_predicate", 16: "minecraft:color", 17: "minecraft:hex_color", 18: "minecraft:component", 19: "minecraft:style", 2: "brigadier:double", 20: "minecraft:message", 21: "minecraft:nbt", 22: "minecraft:nbt_tag", 23: "minecraft:nbt_path", 24: "minecraft:objective", 25: "minecraft:objective_criteria", 26: "minecraft:operation", 27: "minecraft:particle", 28: "minecraft:angle", 29: "minecraft:rotation", 3: "brigadier:integer", 30: "minecraft:scoreboard_slot", 31: "minecraft:score_holder", 32: "minecraft:swizzle", 33: "minecraft:team", 34: "minecraft:item_slot", 35: "minecraft:item_slots", 36: "minecraft:resource_location", 37: "minecraft:function", 38: "minecraft:entity_anchor", 39: "minecraft:int_range", 4: "brigadier:long", 40: "minecraft:float_range", 41: "minecraft:dimension", 42: "minecraft:gamemode", 43: "minecraft:time", 44: "minecraft:resource_or_tag", 45: "minecraft:resource_or_tag_key", 46: "minecraft:resource", 47: "minecraft:resource_key", 48: "minecraft:resource_selector", 49: "minecraft:template_mirror", 5: "brigadier:string", 50: "minecraft:template_rotation", 51: "minecraft:heightmap", 52: "minecraft:loot_table", 53: "minecraft:loot_predicate", 54: "minecraft:loot_modifier", 55: "minecraft:dialog", 56: "minecraft:uuid", 6: "minecraft:entity", 7: "minecraft:game_profile", 8: "minecraft:block_pos", 9: "minecraft:column_pos"} +var CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpMap = map[int32]string{0: "SINGLE_WORD", 1: "QUOTABLE_PHRASE", 2: "GREEDY_PHRASE"} + func (ret *CommandNode) Decode(r io.ReadSeeker) (err error) { var CommandNodeFlagsPacked uint8 err = binary.Read(r, binary.BigEndian, &CommandNodeFlagsPacked) if err != nil { return } - ret.Flags.Unused = CommandNodeFlagsPacked << 0 >> 6 - ret.Flags.AllowsRestricted = CommandNodeFlagsPacked<<2>>7 == 1 - ret.Flags.HasCustomSuggestions = CommandNodeFlagsPacked<<3>>7 == 1 - ret.Flags.HasRedirectNode = CommandNodeFlagsPacked<<4>>7 == 1 - ret.Flags.HasCommand = CommandNodeFlagsPacked<<5>>7 == 1 - ret.Flags.CommandNodeType = CommandNodeFlagsPacked << 6 >> 6 + ret.Flags.CommandNodeType = CommandNodeFlagsPacked >> 0 & 3 + ret.Flags.HasCommand = CommandNodeFlagsPacked>>2&1 == 1 + ret.Flags.HasRedirectNode = CommandNodeFlagsPacked>>3&1 == 1 + ret.Flags.HasCustomSuggestions = CommandNodeFlagsPacked>>4&1 == 1 + ret.Flags.AllowsRestricted = CommandNodeFlagsPacked>>5&1 == 1 var lCommandNodeChildren int32 lCommandNodeChildren, err = proto_base.DecodeVarInt(r) if err != nil { @@ -3637,8 +3638,489 @@ func (ret *CommandNode) Decode(r io.ReadSeeker) (err error) { } ret.RedirectNode = CommandNodeRedirectNodeTmp } + switch ret.Flags.CommandNodeType { + case 0: + var CommandNodeExtraNodeData0Tmp struct { + } + ret.ExtraNodeData = CommandNodeExtraNodeData0Tmp + case 1: + var CommandNodeExtraNodeData1Tmp struct { + Name string + } + CommandNodeExtraNodeData1Tmp.Name, err = proto_base.DecodeString(r) + if err != nil { + return + } + ret.ExtraNodeData = CommandNodeExtraNodeData1Tmp + case 2: + var CommandNodeExtraNodeData2Tmp struct { + Name string + Parser string + Properties any + SuggestionType any + } + CommandNodeExtraNodeData2Tmp.Name, err = proto_base.DecodeString(r) + if err != nil { + return + } + var CommandNodeExtraNodeData2TmpParserKey int32 + CommandNodeExtraNodeData2TmpParserKey, err = proto_base.DecodeVarInt(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Parser, err = proto_base.ErroringIndex(CommandNodeExtraNodeData2TmpParserMap, CommandNodeExtraNodeData2TmpParserKey) + if err != nil { + return + } + switch CommandNodeExtraNodeData2Tmp.Parser { + case "brigadier:bool": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierBoolTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierBoolTmp + case "brigadier:double": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMin1Tmp float64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMax1Tmp float64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp + case "brigadier:float": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMin1Tmp float32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMax1Tmp float32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp + case "brigadier:integer": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMin1Tmp int32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMax1Tmp int32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp + case "brigadier:long": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMin1Tmp int64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMax1Tmp int64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp + case "brigadier:string": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmp string + var CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpKey int32 + CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpKey, err = proto_base.DecodeVarInt(r) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmp, err = proto_base.ErroringIndex(CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpMap, CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpKey) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmp + case "minecraft:angle": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftAngleTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftAngleTmp + case "minecraft:block_pos": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPosTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPosTmp + case "minecraft:block_predicate": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPredicateTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPredicateTmp + case "minecraft:block_state": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockStateTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockStateTmp + case "minecraft:color": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftColorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftColorTmp + case "minecraft:column_pos": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftColumnPosTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftColumnPosTmp + case "minecraft:component": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftComponentTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftComponentTmp + case "minecraft:dialog": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftDialogTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftDialogTmp + case "minecraft:dimension": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftDimensionTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftDimensionTmp + case "minecraft:entity": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp struct { + Unused uint8 + OnlyAllowPlayers bool + OnlyAllowEntities bool + } + var CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp.OnlyAllowEntities = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp.OnlyAllowPlayers = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp.Unused = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked >> 2 & 63 + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp + case "minecraft:entity_anchor": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityAnchorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityAnchorTmp + case "minecraft:float_range": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftFloatRangeTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftFloatRangeTmp + case "minecraft:function": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftFunctionTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftFunctionTmp + case "minecraft:game_profile": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftGameProfileTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftGameProfileTmp + case "minecraft:gamemode": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftGamemodeTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftGamemodeTmp + case "minecraft:heightmap": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftHeightmapTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftHeightmapTmp + case "minecraft:hex_color": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftHexColorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftHexColorTmp + case "minecraft:int_range": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftIntRangeTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftIntRangeTmp + case "minecraft:item_predicate": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftItemPredicateTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftItemPredicateTmp + case "minecraft:item_slot": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftItemSlotTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftItemSlotTmp + case "minecraft:item_stack": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftItemStackTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftItemStackTmp + case "minecraft:message": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftMessageTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftMessageTmp + case "minecraft:nbt": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtTmp + case "minecraft:nbt_path": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtPathTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtPathTmp + case "minecraft:objective": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveTmp + case "minecraft:objective_criteria": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveCriteriaTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveCriteriaTmp + case "minecraft:operation": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftOperationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftOperationTmp + case "minecraft:particle": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftParticleTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftParticleTmp + case "minecraft:resource": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceTmp + case "minecraft:resource_key": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceKeyTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceKeyTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceKeyTmp + case "minecraft:resource_location": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceLocationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceLocationTmp + case "minecraft:resource_or_tag": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagTmp + case "minecraft:resource_or_tag_key": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagKeyTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagKeyTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagKeyTmp + case "minecraft:resource_selector": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceSelectorTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceSelectorTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceSelectorTmp + case "minecraft:rotation": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftRotationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftRotationTmp + case "minecraft:score_holder": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp struct { + Unused uint8 + AllowMultiple bool + } + var CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp.AllowMultiple = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp.Unused = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked >> 1 & 127 + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp + case "minecraft:scoreboard_slot": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreboardSlotTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreboardSlotTmp + case "minecraft:swizzle": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftSwizzleTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftSwizzleTmp + case "minecraft:team": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTeamTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTeamTmp + case "minecraft:template_mirror": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTemplateMirrorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTemplateMirrorTmp + case "minecraft:template_rotation": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTemplateRotationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTemplateRotationTmp + case "minecraft:time": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTimeTmp struct { + Min int32 + } + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesMinecraftTimeTmp.Min) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTimeTmp + case "minecraft:uuid": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftUuidTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftUuidTmp + case "minecraft:vec2": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftVec2Tmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftVec2Tmp + case "minecraft:vec3": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftVec3Tmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftVec3Tmp + } + switch ret.Flags.HasCustomSuggestions { + case true: + var CommandNodeExtraNodeData2TmpSuggestionType1Tmp string + CommandNodeExtraNodeData2TmpSuggestionType1Tmp, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.SuggestionType = CommandNodeExtraNodeData2TmpSuggestionType1Tmp + default: + var CommandNodeExtraNodeData2TmpSuggestionTypeTmp struct { + } + CommandNodeExtraNodeData2Tmp.SuggestionType = CommandNodeExtraNodeData2TmpSuggestionTypeTmp + } + ret.ExtraNodeData = CommandNodeExtraNodeData2Tmp + } return } + +var CommandNodeExtraNodeDataParserReverseMap = map[string]int32{"brigadier:bool": 0, "brigadier:float": 1, "minecraft:vec3": 10, "minecraft:vec2": 11, "minecraft:block_state": 12, "minecraft:block_predicate": 13, "minecraft:item_stack": 14, "minecraft:item_predicate": 15, "minecraft:color": 16, "minecraft:hex_color": 17, "minecraft:component": 18, "minecraft:style": 19, "brigadier:double": 2, "minecraft:message": 20, "minecraft:nbt": 21, "minecraft:nbt_tag": 22, "minecraft:nbt_path": 23, "minecraft:objective": 24, "minecraft:objective_criteria": 25, "minecraft:operation": 26, "minecraft:particle": 27, "minecraft:angle": 28, "minecraft:rotation": 29, "brigadier:integer": 3, "minecraft:scoreboard_slot": 30, "minecraft:score_holder": 31, "minecraft:swizzle": 32, "minecraft:team": 33, "minecraft:item_slot": 34, "minecraft:item_slots": 35, "minecraft:resource_location": 36, "minecraft:function": 37, "minecraft:entity_anchor": 38, "minecraft:int_range": 39, "brigadier:long": 4, "minecraft:float_range": 40, "minecraft:dimension": 41, "minecraft:gamemode": 42, "minecraft:time": 43, "minecraft:resource_or_tag": 44, "minecraft:resource_or_tag_key": 45, "minecraft:resource": 46, "minecraft:resource_key": 47, "minecraft:resource_selector": 48, "minecraft:template_mirror": 49, "brigadier:string": 5, "minecraft:template_rotation": 50, "minecraft:heightmap": 51, "minecraft:loot_table": 52, "minecraft:loot_predicate": 53, "minecraft:loot_modifier": 54, "minecraft:dialog": 55, "minecraft:uuid": 56, "minecraft:entity": 6, "minecraft:game_profile": 7, "minecraft:block_pos": 8, "minecraft:column_pos": 9} +var CommandNodeExtraNodeDataPropertiesReverseMap = map[string]int32{"SINGLE_WORD": 0, "QUOTABLE_PHRASE": 1, "GREEDY_PHRASE": 2} + func (ret *CommandNode) Encode(w io.Writer) (err error) { var CommandNodeFlagsPacked uint8 CommandNodeFlagsPacked |= (uint8(ret.Flags.CommandNodeType) & 0x3) << 0x0 @@ -3646,7 +4128,6 @@ func (ret *CommandNode) Encode(w io.Writer) (err error) { CommandNodeFlagsPacked |= (proto_base.Bool2uint8(ret.Flags.HasRedirectNode) & 0x1) << 0x3 CommandNodeFlagsPacked |= (proto_base.Bool2uint8(ret.Flags.HasCustomSuggestions) & 0x1) << 0x4 CommandNodeFlagsPacked |= (proto_base.Bool2uint8(ret.Flags.AllowsRestricted) & 0x1) << 0x5 - CommandNodeFlagsPacked |= (uint8(ret.Flags.Unused) & 0x3) << 0x6 err = binary.Write(w, binary.BigEndian, CommandNodeFlagsPacked) if err != nil { return @@ -3680,6 +4161,699 @@ func (ret *CommandNode) Encode(w io.Writer) (err error) { return } } + switch ret.Flags.CommandNodeType { + case 0: + _, ok := ret.ExtraNodeData.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case 1: + CommandNodeExtraNodeData, ok := ret.ExtraNodeData.(struct { + Name string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeData.Name) + if err != nil { + return + } + case 2: + CommandNodeExtraNodeData, ok := ret.ExtraNodeData.(struct { + Name string + Parser string + Properties any + SuggestionType any + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeData.Name) + if err != nil { + return + } + var vCommandNodeExtraNodeDataParser int32 + vCommandNodeExtraNodeDataParser, err = proto_base.ErroringIndex(CommandNodeExtraNodeDataParserReverseMap, CommandNodeExtraNodeData.Parser) + if err != nil { + return + } + err = proto_base.EncodeVarInt(w, vCommandNodeExtraNodeDataParser) + if err != nil { + return + } + switch CommandNodeExtraNodeData.Parser { + case "brigadier:bool": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "brigadier:double": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(float64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(float64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:float": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(float32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(float32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:integer": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(int32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(int32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:long": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(int64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(int64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:string": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(string) + if !ok { + err = proto_base.BadTypeError + return + } + var vCommandNodeExtraNodeDataProperties int32 + vCommandNodeExtraNodeDataProperties, err = proto_base.ErroringIndex(CommandNodeExtraNodeDataPropertiesReverseMap, CommandNodeExtraNodeDataProperties) + if err != nil { + return + } + err = proto_base.EncodeVarInt(w, vCommandNodeExtraNodeDataProperties) + if err != nil { + return + } + case "minecraft:angle": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:block_pos": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:block_predicate": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:block_state": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:color": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:column_pos": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:component": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:dialog": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:dimension": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:entity": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Unused uint8 + OnlyAllowPlayers bool + OnlyAllowEntities bool + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesPacked uint8 + CommandNodeExtraNodeDataPropertiesPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.OnlyAllowEntities) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.OnlyAllowPlayers) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesPacked |= (uint8(CommandNodeExtraNodeDataProperties.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesPacked) + if err != nil { + return + } + case "minecraft:entity_anchor": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:float_range": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:function": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:game_profile": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:gamemode": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:heightmap": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:hex_color": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:int_range": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:item_predicate": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:item_slot": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:item_stack": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:message": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:nbt": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:nbt_path": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:objective": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:objective_criteria": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:operation": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:particle": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:resource": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:resource_key": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:resource_location": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:resource_or_tag": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:resource_or_tag_key": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:resource_selector": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:rotation": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:score_holder": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Unused uint8 + AllowMultiple bool + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesPacked uint8 + CommandNodeExtraNodeDataPropertiesPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.AllowMultiple) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesPacked |= (uint8(CommandNodeExtraNodeDataProperties.Unused) & 0x7F) << 0x1 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesPacked) + if err != nil { + return + } + case "minecraft:scoreboard_slot": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:swizzle": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:team": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:template_mirror": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:template_rotation": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:time": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Min int32 + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataProperties.Min) + if err != nil { + return + } + case "minecraft:uuid": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:vec2": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:vec3": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch ret.Flags.HasCustomSuggestions { + case true: + CommandNodeExtraNodeDataSuggestionType, ok := CommandNodeExtraNodeData.SuggestionType.(string) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataSuggestionType) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeData.SuggestionType.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + } return } @@ -4752,17 +5926,17 @@ func (ret *Position) Decode(r io.ReadSeeker) (err error) { if err != nil { return } - ret.X = int32(PositionPacked << 0 >> 38) - if ret.X >= 1<<25 { - ret.X -= 1 << 26 + ret.Y = int16(PositionPacked >> 0 & 4095) + if ret.Y >= 1<<11 { + ret.Y -= 1 << 12 } - ret.Z = int32(PositionPacked << 26 >> 38) + ret.Z = int32(PositionPacked >> 12 & 67108863) if ret.Z >= 1<<25 { ret.Z -= 1 << 26 } - ret.Y = int16(PositionPacked << 52 >> 52) - if ret.Y >= 1<<11 { - ret.Y -= 1 << 12 + ret.X = int32(PositionPacked >> 38 & 67108863) + if ret.X >= 1<<25 { + ret.X -= 1 << 26 } return } @@ -14477,10 +15651,10 @@ func (ret *PlayToClientPacketAdvancements) Decode(r io.ReadSeeker) (err error) { if err != nil { return } - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Unused = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked << 0 >> 3 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Hidden = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<29>>31 == 1 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.ShowToast = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<30>>31 == 1 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<31>>31 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>0&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.ShowToast = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>1&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Hidden = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>2&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Unused = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked >> 3 & 536870911 switch PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture { case true: var PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataBackgroundTexture1Tmp string @@ -18785,17 +19959,17 @@ func (ret *PlayToClientPacketMultiBlockChange) Decode(r io.ReadSeeker) (err erro if err != nil { return } - ret.ChunkCoordinates.X = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked << 0 >> 42) - if ret.ChunkCoordinates.X >= 1<<21 { - ret.ChunkCoordinates.X -= 1 << 22 + ret.ChunkCoordinates.Y = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked >> 0 & 1048575) + if ret.ChunkCoordinates.Y >= 1<<19 { + ret.ChunkCoordinates.Y -= 1 << 20 } - ret.ChunkCoordinates.Z = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked << 22 >> 42) + ret.ChunkCoordinates.Z = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked >> 20 & 4194303) if ret.ChunkCoordinates.Z >= 1<<21 { ret.ChunkCoordinates.Z -= 1 << 22 } - ret.ChunkCoordinates.Y = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked << 44 >> 44) - if ret.ChunkCoordinates.Y >= 1<<19 { - ret.ChunkCoordinates.Y -= 1 << 20 + ret.ChunkCoordinates.X = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked >> 42 & 4194303) + if ret.ChunkCoordinates.X >= 1<<21 { + ret.ChunkCoordinates.X -= 1 << 22 } var lPlayToClientPacketMultiBlockChangeRecords int32 lPlayToClientPacketMultiBlockChangeRecords, err = proto_base.DecodeVarInt(r) diff --git a/mc/proto_generated/v26_2/proto.go b/mc/proto_generated/v26_2/proto.go index e53a1c8..f165f37 100644 --- a/mc/proto_generated/v26_2/proto.go +++ b/mc/proto_generated/v26_2/proto.go @@ -1,6 +1,6 @@ // Code generated by strom. DO NOT EDIT. -// source: minecraft-data/pc/26.2/protocol.json (sha256:795e78495a67b7311837c19c714f0c3fb2598fcf407a76779403a65ba1272457) -// version: v0.6.6-0.20260805175346-53d366ae5301+dirty (go1.26.2) +// source: minecraft-data/pc/26.2/protocol.json (sha256:e0d76c3d66b0995e69435d3ea0b2424e127cfcc610e230a511f51f899a1cb8f0) +// version: v0.6.6-0.20260805191907-f4c27628815b+dirty (go1.26.2) package v26_2 import ( @@ -3544,8 +3544,8 @@ func (ret *ChunkBlockEntity) Decode(r io.ReadSeeker) (err error) { if err != nil { return } - ret.Anon.X = ChunkBlockEntityAnonPacked << 0 >> 4 - ret.Anon.Z = ChunkBlockEntityAnonPacked << 4 >> 4 + ret.Anon.Z = ChunkBlockEntityAnonPacked >> 0 & 15 + ret.Anon.X = ChunkBlockEntityAnonPacked >> 4 & 15 err = binary.Read(r, binary.BigEndian, &ret.Y) if err != nil { return @@ -3586,7 +3586,6 @@ func (ret *ChunkBlockEntity) Encode(w io.Writer) (err error) { type CommandNode struct { Flags struct { - Unused uint8 AllowsRestricted bool HasCustomSuggestions bool HasRedirectNode bool @@ -3598,18 +3597,20 @@ type CommandNode struct { ExtraNodeData any } +var CommandNodeExtraNodeData2TmpParserMap = map[int32]string{0: "brigadier:bool", 1: "brigadier:float", 10: "minecraft:vec3", 11: "minecraft:vec2", 12: "minecraft:block_state", 13: "minecraft:block_predicate", 14: "minecraft:item_stack", 15: "minecraft:item_predicate", 16: "minecraft:color", 17: "minecraft:hex_color", 18: "minecraft:component", 19: "minecraft:style", 2: "brigadier:double", 20: "minecraft:message", 21: "minecraft:nbt", 22: "minecraft:nbt_tag", 23: "minecraft:nbt_path", 24: "minecraft:objective", 25: "minecraft:objective_criteria", 26: "minecraft:operation", 27: "minecraft:particle", 28: "minecraft:angle", 29: "minecraft:rotation", 3: "brigadier:integer", 30: "minecraft:scoreboard_slot", 31: "minecraft:score_holder", 32: "minecraft:swizzle", 33: "minecraft:team", 34: "minecraft:item_slot", 35: "minecraft:item_slots", 36: "minecraft:resource_location", 37: "minecraft:function", 38: "minecraft:entity_anchor", 39: "minecraft:int_range", 4: "brigadier:long", 40: "minecraft:float_range", 41: "minecraft:dimension", 42: "minecraft:gamemode", 43: "minecraft:time", 44: "minecraft:resource_or_tag", 45: "minecraft:resource_or_tag_key", 46: "minecraft:resource", 47: "minecraft:resource_key", 48: "minecraft:resource_selector", 49: "minecraft:template_mirror", 5: "brigadier:string", 50: "minecraft:template_rotation", 51: "minecraft:heightmap", 52: "minecraft:loot_table", 53: "minecraft:loot_predicate", 54: "minecraft:loot_modifier", 55: "minecraft:dialog", 56: "minecraft:uuid", 6: "minecraft:entity", 7: "minecraft:game_profile", 8: "minecraft:block_pos", 9: "minecraft:column_pos"} +var CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpMap = map[int32]string{0: "SINGLE_WORD", 1: "QUOTABLE_PHRASE", 2: "GREEDY_PHRASE"} + func (ret *CommandNode) Decode(r io.ReadSeeker) (err error) { var CommandNodeFlagsPacked uint8 err = binary.Read(r, binary.BigEndian, &CommandNodeFlagsPacked) if err != nil { return } - ret.Flags.Unused = CommandNodeFlagsPacked << 0 >> 6 - ret.Flags.AllowsRestricted = CommandNodeFlagsPacked<<2>>7 == 1 - ret.Flags.HasCustomSuggestions = CommandNodeFlagsPacked<<3>>7 == 1 - ret.Flags.HasRedirectNode = CommandNodeFlagsPacked<<4>>7 == 1 - ret.Flags.HasCommand = CommandNodeFlagsPacked<<5>>7 == 1 - ret.Flags.CommandNodeType = CommandNodeFlagsPacked << 6 >> 6 + ret.Flags.CommandNodeType = CommandNodeFlagsPacked >> 0 & 3 + ret.Flags.HasCommand = CommandNodeFlagsPacked>>2&1 == 1 + ret.Flags.HasRedirectNode = CommandNodeFlagsPacked>>3&1 == 1 + ret.Flags.HasCustomSuggestions = CommandNodeFlagsPacked>>4&1 == 1 + ret.Flags.AllowsRestricted = CommandNodeFlagsPacked>>5&1 == 1 var lCommandNodeChildren int32 lCommandNodeChildren, err = proto_base.DecodeVarInt(r) if err != nil { @@ -3637,8 +3638,489 @@ func (ret *CommandNode) Decode(r io.ReadSeeker) (err error) { } ret.RedirectNode = CommandNodeRedirectNodeTmp } + switch ret.Flags.CommandNodeType { + case 0: + var CommandNodeExtraNodeData0Tmp struct { + } + ret.ExtraNodeData = CommandNodeExtraNodeData0Tmp + case 1: + var CommandNodeExtraNodeData1Tmp struct { + Name string + } + CommandNodeExtraNodeData1Tmp.Name, err = proto_base.DecodeString(r) + if err != nil { + return + } + ret.ExtraNodeData = CommandNodeExtraNodeData1Tmp + case 2: + var CommandNodeExtraNodeData2Tmp struct { + Name string + Parser string + Properties any + SuggestionType any + } + CommandNodeExtraNodeData2Tmp.Name, err = proto_base.DecodeString(r) + if err != nil { + return + } + var CommandNodeExtraNodeData2TmpParserKey int32 + CommandNodeExtraNodeData2TmpParserKey, err = proto_base.DecodeVarInt(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Parser, err = proto_base.ErroringIndex(CommandNodeExtraNodeData2TmpParserMap, CommandNodeExtraNodeData2TmpParserKey) + if err != nil { + return + } + switch CommandNodeExtraNodeData2Tmp.Parser { + case "brigadier:bool": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierBoolTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierBoolTmp + case "brigadier:double": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMin1Tmp float64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMax1Tmp float64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierDoubleTmp + case "brigadier:float": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMin1Tmp float32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMax1Tmp float32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierFloatTmp + case "brigadier:integer": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMin1Tmp int32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMax1Tmp int32 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierIntegerTmp + case "brigadier:long": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + } + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MinPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MaxPresent = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.Unused = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpFlagsPacked >> 2 & 63 + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MinPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMin1Tmp int64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMin1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMin1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMinTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Min = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMinTmp + } + switch CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Flags.MaxPresent { + case true: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMax1Tmp int64 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMax1Tmp) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMax1Tmp + default: + var CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMaxTmp struct { + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp.Max = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmpMaxTmp + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierLongTmp + case "brigadier:string": + var CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmp string + var CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpKey int32 + CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpKey, err = proto_base.DecodeVarInt(r) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmp, err = proto_base.ErroringIndex(CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpMap, CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmpKey) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesBrigadierStringTmp + case "minecraft:angle": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftAngleTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftAngleTmp + case "minecraft:block_pos": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPosTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPosTmp + case "minecraft:block_predicate": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPredicateTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockPredicateTmp + case "minecraft:block_state": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockStateTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftBlockStateTmp + case "minecraft:color": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftColorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftColorTmp + case "minecraft:column_pos": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftColumnPosTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftColumnPosTmp + case "minecraft:component": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftComponentTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftComponentTmp + case "minecraft:dialog": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftDialogTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftDialogTmp + case "minecraft:dimension": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftDimensionTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftDimensionTmp + case "minecraft:entity": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp struct { + Unused uint8 + OnlyAllowPlayers bool + OnlyAllowEntities bool + } + var CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp.OnlyAllowEntities = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp.OnlyAllowPlayers = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked>>1&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp.Unused = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmpPacked >> 2 & 63 + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityTmp + case "minecraft:entity_anchor": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityAnchorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftEntityAnchorTmp + case "minecraft:float_range": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftFloatRangeTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftFloatRangeTmp + case "minecraft:function": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftFunctionTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftFunctionTmp + case "minecraft:game_profile": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftGameProfileTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftGameProfileTmp + case "minecraft:gamemode": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftGamemodeTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftGamemodeTmp + case "minecraft:heightmap": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftHeightmapTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftHeightmapTmp + case "minecraft:hex_color": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftHexColorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftHexColorTmp + case "minecraft:int_range": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftIntRangeTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftIntRangeTmp + case "minecraft:item_predicate": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftItemPredicateTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftItemPredicateTmp + case "minecraft:item_slot": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftItemSlotTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftItemSlotTmp + case "minecraft:item_stack": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftItemStackTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftItemStackTmp + case "minecraft:message": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftMessageTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftMessageTmp + case "minecraft:nbt": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtTmp + case "minecraft:nbt_path": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtPathTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftNbtPathTmp + case "minecraft:objective": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveTmp + case "minecraft:objective_criteria": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveCriteriaTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftObjectiveCriteriaTmp + case "minecraft:operation": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftOperationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftOperationTmp + case "minecraft:particle": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftParticleTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftParticleTmp + case "minecraft:resource": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceTmp + case "minecraft:resource_key": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceKeyTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceKeyTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceKeyTmp + case "minecraft:resource_location": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceLocationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceLocationTmp + case "minecraft:resource_or_tag": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagTmp + case "minecraft:resource_or_tag_key": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagKeyTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagKeyTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceOrTagKeyTmp + case "minecraft:resource_selector": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceSelectorTmp struct { + Registry string + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceSelectorTmp.Registry, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftResourceSelectorTmp + case "minecraft:rotation": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftRotationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftRotationTmp + case "minecraft:score_holder": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp struct { + Unused uint8 + AllowMultiple bool + } + var CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked uint8 + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked) + if err != nil { + return + } + CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp.AllowMultiple = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked>>0&1 == 1 + CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp.Unused = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmpPacked >> 1 & 127 + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreHolderTmp + case "minecraft:scoreboard_slot": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreboardSlotTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftScoreboardSlotTmp + case "minecraft:swizzle": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftSwizzleTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftSwizzleTmp + case "minecraft:team": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTeamTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTeamTmp + case "minecraft:template_mirror": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTemplateMirrorTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTemplateMirrorTmp + case "minecraft:template_rotation": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTemplateRotationTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTemplateRotationTmp + case "minecraft:time": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftTimeTmp struct { + Min int32 + } + err = binary.Read(r, binary.BigEndian, &CommandNodeExtraNodeData2TmpPropertiesMinecraftTimeTmp.Min) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftTimeTmp + case "minecraft:uuid": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftUuidTmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftUuidTmp + case "minecraft:vec2": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftVec2Tmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftVec2Tmp + case "minecraft:vec3": + var CommandNodeExtraNodeData2TmpPropertiesMinecraftVec3Tmp struct { + } + CommandNodeExtraNodeData2Tmp.Properties = CommandNodeExtraNodeData2TmpPropertiesMinecraftVec3Tmp + } + switch ret.Flags.HasCustomSuggestions { + case true: + var CommandNodeExtraNodeData2TmpSuggestionType1Tmp string + CommandNodeExtraNodeData2TmpSuggestionType1Tmp, err = proto_base.DecodeString(r) + if err != nil { + return + } + CommandNodeExtraNodeData2Tmp.SuggestionType = CommandNodeExtraNodeData2TmpSuggestionType1Tmp + default: + var CommandNodeExtraNodeData2TmpSuggestionTypeTmp struct { + } + CommandNodeExtraNodeData2Tmp.SuggestionType = CommandNodeExtraNodeData2TmpSuggestionTypeTmp + } + ret.ExtraNodeData = CommandNodeExtraNodeData2Tmp + } return } + +var CommandNodeExtraNodeDataParserReverseMap = map[string]int32{"brigadier:bool": 0, "brigadier:float": 1, "minecraft:vec3": 10, "minecraft:vec2": 11, "minecraft:block_state": 12, "minecraft:block_predicate": 13, "minecraft:item_stack": 14, "minecraft:item_predicate": 15, "minecraft:color": 16, "minecraft:hex_color": 17, "minecraft:component": 18, "minecraft:style": 19, "brigadier:double": 2, "minecraft:message": 20, "minecraft:nbt": 21, "minecraft:nbt_tag": 22, "minecraft:nbt_path": 23, "minecraft:objective": 24, "minecraft:objective_criteria": 25, "minecraft:operation": 26, "minecraft:particle": 27, "minecraft:angle": 28, "minecraft:rotation": 29, "brigadier:integer": 3, "minecraft:scoreboard_slot": 30, "minecraft:score_holder": 31, "minecraft:swizzle": 32, "minecraft:team": 33, "minecraft:item_slot": 34, "minecraft:item_slots": 35, "minecraft:resource_location": 36, "minecraft:function": 37, "minecraft:entity_anchor": 38, "minecraft:int_range": 39, "brigadier:long": 4, "minecraft:float_range": 40, "minecraft:dimension": 41, "minecraft:gamemode": 42, "minecraft:time": 43, "minecraft:resource_or_tag": 44, "minecraft:resource_or_tag_key": 45, "minecraft:resource": 46, "minecraft:resource_key": 47, "minecraft:resource_selector": 48, "minecraft:template_mirror": 49, "brigadier:string": 5, "minecraft:template_rotation": 50, "minecraft:heightmap": 51, "minecraft:loot_table": 52, "minecraft:loot_predicate": 53, "minecraft:loot_modifier": 54, "minecraft:dialog": 55, "minecraft:uuid": 56, "minecraft:entity": 6, "minecraft:game_profile": 7, "minecraft:block_pos": 8, "minecraft:column_pos": 9} +var CommandNodeExtraNodeDataPropertiesReverseMap = map[string]int32{"SINGLE_WORD": 0, "QUOTABLE_PHRASE": 1, "GREEDY_PHRASE": 2} + func (ret *CommandNode) Encode(w io.Writer) (err error) { var CommandNodeFlagsPacked uint8 CommandNodeFlagsPacked |= (uint8(ret.Flags.CommandNodeType) & 0x3) << 0x0 @@ -3646,7 +4128,6 @@ func (ret *CommandNode) Encode(w io.Writer) (err error) { CommandNodeFlagsPacked |= (proto_base.Bool2uint8(ret.Flags.HasRedirectNode) & 0x1) << 0x3 CommandNodeFlagsPacked |= (proto_base.Bool2uint8(ret.Flags.HasCustomSuggestions) & 0x1) << 0x4 CommandNodeFlagsPacked |= (proto_base.Bool2uint8(ret.Flags.AllowsRestricted) & 0x1) << 0x5 - CommandNodeFlagsPacked |= (uint8(ret.Flags.Unused) & 0x3) << 0x6 err = binary.Write(w, binary.BigEndian, CommandNodeFlagsPacked) if err != nil { return @@ -3680,6 +4161,699 @@ func (ret *CommandNode) Encode(w io.Writer) (err error) { return } } + switch ret.Flags.CommandNodeType { + case 0: + _, ok := ret.ExtraNodeData.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case 1: + CommandNodeExtraNodeData, ok := ret.ExtraNodeData.(struct { + Name string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeData.Name) + if err != nil { + return + } + case 2: + CommandNodeExtraNodeData, ok := ret.ExtraNodeData.(struct { + Name string + Parser string + Properties any + SuggestionType any + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeData.Name) + if err != nil { + return + } + var vCommandNodeExtraNodeDataParser int32 + vCommandNodeExtraNodeDataParser, err = proto_base.ErroringIndex(CommandNodeExtraNodeDataParserReverseMap, CommandNodeExtraNodeData.Parser) + if err != nil { + return + } + err = proto_base.EncodeVarInt(w, vCommandNodeExtraNodeDataParser) + if err != nil { + return + } + switch CommandNodeExtraNodeData.Parser { + case "brigadier:bool": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "brigadier:double": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(float64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(float64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:float": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(float32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(float32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:integer": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(int32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(int32) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:long": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Flags struct { + Unused uint8 + MaxPresent bool + MinPresent bool + } + Min any + Max any + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesFlagsPacked uint8 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MinPresent) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.Flags.MaxPresent) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesFlagsPacked |= (uint8(CommandNodeExtraNodeDataProperties.Flags.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesFlagsPacked) + if err != nil { + return + } + switch CommandNodeExtraNodeDataProperties.Flags.MinPresent { + case true: + CommandNodeExtraNodeDataPropertiesMin, ok := CommandNodeExtraNodeDataProperties.Min.(int64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMin) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Min.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch CommandNodeExtraNodeDataProperties.Flags.MaxPresent { + case true: + CommandNodeExtraNodeDataPropertiesMax, ok := CommandNodeExtraNodeDataProperties.Max.(int64) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesMax) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeDataProperties.Max.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + case "brigadier:string": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(string) + if !ok { + err = proto_base.BadTypeError + return + } + var vCommandNodeExtraNodeDataProperties int32 + vCommandNodeExtraNodeDataProperties, err = proto_base.ErroringIndex(CommandNodeExtraNodeDataPropertiesReverseMap, CommandNodeExtraNodeDataProperties) + if err != nil { + return + } + err = proto_base.EncodeVarInt(w, vCommandNodeExtraNodeDataProperties) + if err != nil { + return + } + case "minecraft:angle": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:block_pos": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:block_predicate": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:block_state": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:color": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:column_pos": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:component": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:dialog": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:dimension": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:entity": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Unused uint8 + OnlyAllowPlayers bool + OnlyAllowEntities bool + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesPacked uint8 + CommandNodeExtraNodeDataPropertiesPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.OnlyAllowEntities) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.OnlyAllowPlayers) & 0x1) << 0x1 + CommandNodeExtraNodeDataPropertiesPacked |= (uint8(CommandNodeExtraNodeDataProperties.Unused) & 0x3F) << 0x2 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesPacked) + if err != nil { + return + } + case "minecraft:entity_anchor": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:float_range": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:function": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:game_profile": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:gamemode": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:heightmap": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:hex_color": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:int_range": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:item_predicate": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:item_slot": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:item_stack": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:message": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:nbt": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:nbt_path": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:objective": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:objective_criteria": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:operation": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:particle": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:resource": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:resource_key": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:resource_location": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:resource_or_tag": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:resource_or_tag_key": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:resource_selector": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Registry string + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataProperties.Registry) + if err != nil { + return + } + case "minecraft:rotation": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:score_holder": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Unused uint8 + AllowMultiple bool + }) + if !ok { + err = proto_base.BadTypeError + return + } + var CommandNodeExtraNodeDataPropertiesPacked uint8 + CommandNodeExtraNodeDataPropertiesPacked |= (proto_base.Bool2uint8(CommandNodeExtraNodeDataProperties.AllowMultiple) & 0x1) << 0x0 + CommandNodeExtraNodeDataPropertiesPacked |= (uint8(CommandNodeExtraNodeDataProperties.Unused) & 0x7F) << 0x1 + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataPropertiesPacked) + if err != nil { + return + } + case "minecraft:scoreboard_slot": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:swizzle": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:team": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:template_mirror": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:template_rotation": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:time": + CommandNodeExtraNodeDataProperties, ok := CommandNodeExtraNodeData.Properties.(struct { + Min int32 + }) + if !ok { + err = proto_base.BadTypeError + return + } + err = binary.Write(w, binary.BigEndian, CommandNodeExtraNodeDataProperties.Min) + if err != nil { + return + } + case "minecraft:uuid": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:vec2": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + case "minecraft:vec3": + _, ok := CommandNodeExtraNodeData.Properties.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + switch ret.Flags.HasCustomSuggestions { + case true: + CommandNodeExtraNodeDataSuggestionType, ok := CommandNodeExtraNodeData.SuggestionType.(string) + if !ok { + err = proto_base.BadTypeError + return + } + err = proto_base.EncodeString(w, CommandNodeExtraNodeDataSuggestionType) + if err != nil { + return + } + default: + _, ok := CommandNodeExtraNodeData.SuggestionType.(struct { + }) + if !ok { + err = proto_base.BadTypeError + return + } + } + } return } @@ -4752,17 +5926,17 @@ func (ret *Position) Decode(r io.ReadSeeker) (err error) { if err != nil { return } - ret.X = int32(PositionPacked << 0 >> 38) - if ret.X >= 1<<25 { - ret.X -= 1 << 26 + ret.Y = int16(PositionPacked >> 0 & 4095) + if ret.Y >= 1<<11 { + ret.Y -= 1 << 12 } - ret.Z = int32(PositionPacked << 26 >> 38) + ret.Z = int32(PositionPacked >> 12 & 67108863) if ret.Z >= 1<<25 { ret.Z -= 1 << 26 } - ret.Y = int16(PositionPacked << 52 >> 52) - if ret.Y >= 1<<11 { - ret.Y -= 1 << 12 + ret.X = int32(PositionPacked >> 38 & 67108863) + if ret.X >= 1<<25 { + ret.X -= 1 << 26 } return } @@ -14574,10 +15748,10 @@ func (ret *PlayToClientPacketAdvancements) Decode(r io.ReadSeeker) (err error) { if err != nil { return } - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Unused = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked << 0 >> 3 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Hidden = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<29>>31 == 1 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.ShowToast = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<30>>31 == 1 - PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked<<31>>31 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>0&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.ShowToast = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>1&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Hidden = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked>>2&1 == 1 + PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.Unused = PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataFlagsPacked >> 3 & 536870911 switch PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataPresentValue.Flags.HasBackgroundTexture { case true: var PlayToClientPacketAdvancementsAdvancementMappingElementValueDisplayDataBackgroundTexture1Tmp string @@ -18882,17 +20056,17 @@ func (ret *PlayToClientPacketMultiBlockChange) Decode(r io.ReadSeeker) (err erro if err != nil { return } - ret.ChunkCoordinates.X = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked << 0 >> 42) - if ret.ChunkCoordinates.X >= 1<<21 { - ret.ChunkCoordinates.X -= 1 << 22 + ret.ChunkCoordinates.Y = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked >> 0 & 1048575) + if ret.ChunkCoordinates.Y >= 1<<19 { + ret.ChunkCoordinates.Y -= 1 << 20 } - ret.ChunkCoordinates.Z = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked << 22 >> 42) + ret.ChunkCoordinates.Z = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked >> 20 & 4194303) if ret.ChunkCoordinates.Z >= 1<<21 { ret.ChunkCoordinates.Z -= 1 << 22 } - ret.ChunkCoordinates.Y = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked << 44 >> 44) - if ret.ChunkCoordinates.Y >= 1<<19 { - ret.ChunkCoordinates.Y -= 1 << 20 + ret.ChunkCoordinates.X = int32(PlayToClientPacketMultiBlockChangeChunkCoordinatesPacked >> 42 & 4194303) + if ret.ChunkCoordinates.X >= 1<<21 { + ret.ChunkCoordinates.X -= 1 << 22 } var lPlayToClientPacketMultiBlockChangeRecords int32 lPlayToClientPacketMultiBlockChangeRecords, err = proto_base.DecodeVarInt(r) diff --git a/mc/proto_generator/native_decoder.go b/mc/proto_generator/native_decoder.go index aa3d54c..1832872 100644 --- a/mc/proto_generator/native_decoder.go +++ b/mc/proto_generator/native_decoder.go @@ -225,7 +225,7 @@ func MultiTypeFix(s string, t *CaseExprType) (e ast.Expr) { *t = ct return } - if *t == ct { + if *t == ct || (*t == CaseExprTypeOnlyNumber && ct == CaseExprTypeNumber) || (*t == CaseExprTypeOnlyBool && ct == CaseExprTypeBool) || (*t == CaseExprTypeNumber && ct == CaseExprTypeOnlyNumber) || (*t == CaseExprTypeBool && ct == CaseExprTypeOnlyBool) { return } @@ -400,6 +400,7 @@ func BitFieldDecoder(g *Generator, varToSet ast.Expr, dataRaw any, name string) } s = append(s, packedVarStmt) s = append(s, stmts...) + slices.Reverse(data) lShiftBy := 0 for _, field := range data { var fieldTypeProtodef string @@ -413,16 +414,13 @@ func BitFieldDecoder(g *Generator, varToSet ast.Expr, dataRaw any, name string) return } - rShiftBy := totalSize - field.Size fieldToSet := SelectorExprAndStr(varToSet, util2.CamelCase(field.Name)) + mask := (1 << field.Size) - 1 var getDataExpr ast.Expr - getDataExpr = RightShift( - LeftShift( - Ident(packed), - NumLit(lShiftBy)), - NumLit(rShiftBy), - ) + getDataExpr = BinAnd( + RightShift(Ident(packed), NumLit(lShiftBy)), + NumLit(mask)) if fieldTypeProtodef == "bool" { getDataExpr = Equals(getDataExpr, NumLit(1)) } else if fieldTypeProtodef != packedTypeProtodef { diff --git a/mc/proto_generator/native_encoder.go b/mc/proto_generator/native_encoder.go index 1d99e0a..8614f6a 100644 --- a/mc/proto_generator/native_encoder.go +++ b/mc/proto_generator/native_encoder.go @@ -4,7 +4,6 @@ import ( "go/ast" "go/token" "slices" - "strconv" "github.com/admin-else/strom/mc/proto_generator/protodef" util2 "github.com/admin-else/strom/mc/util" @@ -152,7 +151,16 @@ func BitFieldEncoder(g *Generator, varToSet ast.Expr, dataRaw any, name string) } packedVarName := name + "Packed" packedExpr := Ident(packedVarName) - packedTypeStr := "uint" + strconv.Itoa(totalSize) + packedTypeStr := "uint8" + if totalSize > 8 { + packedTypeStr = "uint16" + } + if totalSize > 16 { + packedTypeStr = "uint32" + } + if totalSize > 32 { + packedTypeStr = "uint64" + } s = append(s, VarStmt(packedVarName, Ident(packedTypeStr))) @@ -185,7 +193,17 @@ func BitFieldEncoder(g *Generator, varToSet ast.Expr, dataRaw any, name string) shiftBy += field.Size } - encodePacked, err := g.VisitEncoder(packedExpr, "u"+strconv.Itoa(totalSize), name) + packedProtoType := "u8" + if totalSize > 8 { + packedProtoType = "u16" + } + if totalSize > 16 { + packedProtoType = "u32" + } + if totalSize > 32 { + packedProtoType = "u64" + } + encodePacked, err := g.VisitEncoder(packedExpr, packedProtoType, name) if err != nil { return }