diff --git a/facts/AI_CONTEXT.md b/facts/AI_CONTEXT.md index 640e6e9..dec337d 100644 --- a/facts/AI_CONTEXT.md +++ b/facts/AI_CONTEXT.md @@ -88,6 +88,7 @@ ids [--format json|toon] ids --pv [--ns namespace] [--direction toClient|toServer] [--format json|toon] chunks [--kind all|packet|type] [--filter text] [--max-chars N] [--format json|toon] stats [--format json|toon] +versions [--format json|toon] order [--format json|toon] graph [--ns play] [--direction toClient] [--include-types false] [--format json|toon] ``` @@ -117,6 +118,7 @@ get_protocol_usage get_protocol_users get_protocol_dependencies get_protocol_stats +get_protocol_versions get_protocol_graph ``` @@ -129,6 +131,7 @@ endpoints are useful when another process is already running the server: GET /api/packets GET /api/packets/{ns}/{dir} GET /api/stats +GET /api/versions GET /api/types GET /api/native-types GET /api/types-by-kind diff --git a/facts/README.md b/facts/README.md index df08e41..0b167a1 100644 --- a/facts/README.md +++ b/facts/README.md @@ -93,6 +93,7 @@ ids [--format json|toon] ids --pv [--ns play] [--direction toClient|toServer] [--format json|toon] chunks [--kind all|packet|type] [--filter text] [--max-chars N] [--format json|toon] stats [--format json|toon] +versions [--format json|toon] (protocol number -> Minecraft releases) order [--format json|toon] (type build order, simple -> complex) graph [--ns play] [--direction toClient] [--include-types false] [--format json|toon] ``` @@ -124,6 +125,7 @@ get_protocol_usage get_protocol_users get_protocol_dependencies get_protocol_stats +get_protocol_versions get_protocol_graph ``` @@ -135,6 +137,7 @@ get_protocol_graph GET /api/packets GET /api/packets/{ns}/{dir} GET /api/stats +GET /api/versions GET /api/types GET /api/native-types GET /api/types-by-kind diff --git a/facts/minecraft-data b/facts/minecraft-data index 9dd3f5e..4dd8762 160000 --- a/facts/minecraft-data +++ b/facts/minecraft-data @@ -1 +1 @@ -Subproject commit 9dd3f5eaf0bdbef52b9c5efd08a8bf122f3db33c +Subproject commit 4dd8762a45b97dafdb216b8d7a95ab92379e2c68 diff --git a/facts/src/McProtoFacts.Cli/Program.cs b/facts/src/McProtoFacts.Cli/Program.cs index edf50fd..2f7515f 100644 --- a/facts/src/McProtoFacts.Cli/Program.cs +++ b/facts/src/McProtoFacts.Cli/Program.cs @@ -110,6 +110,10 @@ static async Task RunAsync(string[] args) Write(query.GetStats(), format); return Ok; + case "versions": + Write(query.GetVersions(), format); + return Ok; + case "order": case "build-order": Write(query.GetBuildOrder(), format); @@ -265,6 +269,7 @@ usage [--top N] [--kind packet|type|shape|native] [--format json|toon] ids --pv [--ns play] [--direction toClient|toServer] [--format json|toon] chunks [--kind all|packet|type] [--filter text] [--max-chars N] [--format json|toon] stats [--format json|toon] + versions [--format json|toon] (protocol number -> Minecraft releases) order [--format json|toon] (type build order, simple -> complex) graph [--ns play] [--direction toClient] [--include-types false] [--format json|toon] diff --git a/facts/src/McProtoFacts.McpStdio/Program.cs b/facts/src/McProtoFacts.McpStdio/Program.cs index 952bca8..60aeb61 100644 --- a/facts/src/McProtoFacts.McpStdio/Program.cs +++ b/facts/src/McProtoFacts.McpStdio/Program.cs @@ -85,6 +85,11 @@ public static string GetProtocolDependencies(ProtocolUsageQueries usage, string public static string GetProtocolStats(ProtocolQueryService query, string format = "json") => Serialize(query.GetStats(), format); + [McpServerTool(Name = "get_protocol_versions")] + [Description("Returns loaded protocol numbers with the Minecraft releases that speak them.")] + public static string GetProtocolVersions(ProtocolQueryService query, string format = "toon") => + Serialize(query.GetVersions(), format); + [McpServerTool(Name = "get_protocol_graph")] [Description("Returns protocol graph nodes/edges for packets, named types, native types, and protodef shapes.")] public static string GetProtocolGraph( diff --git a/facts/src/McProtoFacts.Protocol/Loading/ProtocolDataLoader.cs b/facts/src/McProtoFacts.Protocol/Loading/ProtocolDataLoader.cs index 5562ff9..eaa8852 100644 --- a/facts/src/McProtoFacts.Protocol/Loading/ProtocolDataLoader.cs +++ b/facts/src/McProtoFacts.Protocol/Loading/ProtocolDataLoader.cs @@ -5,7 +5,7 @@ namespace McProtoFacts.Protocol.Loading; -public sealed record ProtocolDataOptions(int FromProtocol = 735, int ToProtocol = 772); +public sealed record ProtocolDataOptions(int FromProtocol = 735, int ToProtocol = 776); public static class ProtocolDataLoader { diff --git a/facts/src/McProtoFacts.Protocol/Queries/ProtocolQueryService.cs b/facts/src/McProtoFacts.Protocol/Queries/ProtocolQueryService.cs index e689761..846ec4f 100644 --- a/facts/src/McProtoFacts.Protocol/Queries/ProtocolQueryService.cs +++ b/facts/src/McProtoFacts.Protocol/Queries/ProtocolQueryService.cs @@ -154,6 +154,21 @@ public PacketIdsResult GetPacketIds(string id) .ToArray()); } + /// Loaded protocol numbers with the Minecraft releases that speak them. + public ProtocolVersionsResult GetVersions() + { + var entries = _repository.GetVersions() + .OrderBy(entry => entry.Protocol) + .Select(entry => new ProtocolVersionEntryResult( + entry.Protocol, + entry.Versions.ToArray(), + string.Join(", ", entry.Versions))) + .ToArray(); + + var supported = _repository.GetSupportedProtocols(); + return new ProtocolVersionsResult(entries.Length, supported.From, supported.To, entries); + } + public PacketIdMapResult GetPacketIdMap(int protocolVersion, string? ns = null, string? direction = null) { var supported = _repository.GetSupportedProtocols(); @@ -428,6 +443,17 @@ public sealed record PacketIdsResult( string Name, IReadOnlyList Ranges); +public sealed record ProtocolVersionEntryResult( + int Protocol, + IReadOnlyList Versions, + string Display); + +public sealed record ProtocolVersionsResult( + int Count, + int From, + int To, + IReadOnlyList Protocols); + public sealed record PacketIdMapEntry(string Id, string Hex, int Dec); public sealed record PacketIdMapResult( diff --git a/facts/src/McProtoFacts.Protocol/Repository/IProtocolRepository.cs b/facts/src/McProtoFacts.Protocol/Repository/IProtocolRepository.cs index b132205..93ad9f8 100644 --- a/facts/src/McProtoFacts.Protocol/Repository/IProtocolRepository.cs +++ b/facts/src/McProtoFacts.Protocol/Repository/IProtocolRepository.cs @@ -2,10 +2,16 @@ namespace McProtoFacts.Protocol.Repository; +/// One protocol number with the Minecraft releases that speak it. +public sealed record ProtocolVersionEntry(int Protocol, IReadOnlyList Versions); + public interface IProtocolRepository { ProtocolRange GetSupportedProtocols(); + /// Loaded protocol numbers with their Minecraft release names, ascending. + IReadOnlyList GetVersions(); + IEnumerable GetTypes(); IEnumerable GetNativeTypes(); Dictionary> GetPackets(); diff --git a/facts/src/McProtoFacts.Protocol/Repository/ProtocolRepository.cs b/facts/src/McProtoFacts.Protocol/Repository/ProtocolRepository.cs index 9ad5eae..0cec3c2 100644 --- a/facts/src/McProtoFacts.Protocol/Repository/ProtocolRepository.cs +++ b/facts/src/McProtoFacts.Protocol/Repository/ProtocolRepository.cs @@ -87,6 +87,13 @@ public ProtocolRange GetSupportedProtocols() return _range; } + public IReadOnlyList GetVersions() + { + return _map.Protocols + .Select(kv => new ProtocolVersionEntry(kv.Key, kv.Value.MinecraftVersions.ToArray())) + .ToArray(); + } + public IEnumerable GetTypes() { return diff --git a/facts/src/McpServer/Endpoints/PacketEndpoints.cs b/facts/src/McpServer/Endpoints/PacketEndpoints.cs index bf2ff4a..77f0992 100644 --- a/facts/src/McpServer/Endpoints/PacketEndpoints.cs +++ b/facts/src/McpServer/Endpoints/PacketEndpoints.cs @@ -66,6 +66,24 @@ public static void MapPacketApi(this WebApplication app) }); }); + app.MapGet("/api/versions", (ProtocolQueryService query) => + { + var versions = query.GetVersions(); + + return Results.Ok(new + { + count = versions.Count, + from = versions.From, + to = versions.To, + protocols = versions.Protocols.Select(entry => new + { + protocol = entry.Protocol, + versions = entry.Versions, + display = entry.Display + }).ToArray() + }); + }); + app.MapGet("/api/types", (ProtocolQueryService query) => { return Results.Ok(query.GetTypes()); diff --git a/facts/src/McpServer/Program.cs b/facts/src/McpServer/Program.cs index e9a354a..13d8c16 100644 --- a/facts/src/McpServer/Program.cs +++ b/facts/src/McpServer/Program.cs @@ -11,7 +11,7 @@ using McProtoFacts.Protocol.Loading; var start = 735; -var end = 772; +var end = 776; Console.WriteLine($"[McpServer] Loading protocols {start}-{end}..."); var repository = await ProtocolDataLoader.LoadRepositoryAsync(new ProtocolDataOptions(start, end)); diff --git a/minecraft-protocol-fs/Codegen/CSharp.fs b/minecraft-protocol-fs/Codegen/CSharp.fs index a11d482..a17a814 100644 --- a/minecraft-protocol-fs/Codegen/CSharp.fs +++ b/minecraft-protocol-fs/Codegen/CSharp.fs @@ -30,17 +30,86 @@ module CSharp = /// C# reserved keywords; a camel-cased identifier that collides with one must be verbatim /// (`@namespace`), else Roslyn emits the bare keyword and the file fails to parse. let private csharpKeywords = - set [ - "abstract"; "as"; "base"; "bool"; "break"; "byte"; "case"; "catch"; "char"; "checked" - "class"; "const"; "continue"; "decimal"; "default"; "delegate"; "do"; "double"; "else" - "enum"; "event"; "explicit"; "extern"; "false"; "finally"; "fixed"; "float"; "for" - "foreach"; "goto"; "if"; "implicit"; "in"; "int"; "interface"; "internal"; "is"; "lock" - "long"; "namespace"; "new"; "null"; "object"; "operator"; "out"; "override"; "params" - "private"; "protected"; "public"; "readonly"; "ref"; "return"; "sbyte"; "sealed" - "short"; "sizeof"; "stackalloc"; "static"; "string"; "struct"; "switch"; "this"; "throw" - "true"; "try"; "typeof"; "uint"; "ulong"; "unchecked"; "unsafe"; "ushort"; "using" - "virtual"; "void"; "volatile"; "while" - ] + set + [ + "abstract" + "as" + "base" + "bool" + "break" + "byte" + "case" + "catch" + "char" + "checked" + "class" + "const" + "continue" + "decimal" + "default" + "delegate" + "do" + "double" + "else" + "enum" + "event" + "explicit" + "extern" + "false" + "finally" + "fixed" + "float" + "for" + "foreach" + "goto" + "if" + "implicit" + "in" + "int" + "interface" + "internal" + "is" + "lock" + "long" + "namespace" + "new" + "null" + "object" + "operator" + "out" + "override" + "params" + "private" + "protected" + "public" + "readonly" + "ref" + "return" + "sbyte" + "sealed" + "short" + "sizeof" + "stackalloc" + "static" + "string" + "struct" + "switch" + "this" + "throw" + "true" + "try" + "typeof" + "uint" + "ulong" + "unchecked" + "unsafe" + "ushort" + "using" + "virtual" + "void" + "volatile" + "while" + ] let private camel (s: string) = let n = @@ -98,6 +167,22 @@ module CSharp = typeName s.VersionParam + /// A discriminator the layer has no arm for: a stream condition, not a codegen gap. + let private throwNoCaseLine (s: RuntimeSurface) (typeName: string) = + sprintf + "throw new System.NotSupportedException($\"%s has no case for discriminator {%s} at protocol version {%s}.\");" + typeName + s.DiscriminatorParam + s.VersionParam + + /// A case whose layer does not cover the version being written: the model holds a shape this + /// version cannot carry, so the write must fail rather than invent one. + let private throwNoCaseLayerLine (s: RuntimeSurface) (typeName: string) = + sprintf + "throw new System.NotSupportedException($\"%s case {GetType().Name} has no wire layout for protocol version {%s}.\");" + typeName + s.VersionParam + /// Local variable name for an api field; dodges the generated method's own parameter names. let private localName (s: RuntimeSurface) (api: string) = let n = camel api @@ -263,6 +348,14 @@ module CSharp = | Named n -> Some n | _ -> s.Primitives.TryFind w |> Option.map (fun p -> p.CsType) + /// C# type of a whole wire field, wrappers included — what a union case declares as a + /// positional parameter. `None` means the shape has no renderer yet. + let rec private wireCsType (s: RuntimeSurface) (w: WireType) : string option = + match w with + | Option inner -> wireCsType s inner |> Option.map (fun t -> t + "?") + | Array(item, _) -> wireCsType s item |> Option.map (fun t -> t + "[]") + | _ -> itemCsType s w + /// Count-prefix read: setup lines + the count expression. let private countRead (s: RuntimeSurface) (cnt: ArrayCount) (ln: string) : (string list * string) option = match cnt with @@ -282,8 +375,14 @@ module CSharp = s.Primitives.TryFind w |> Option.map (fun p -> [ sprintf "%s.%s((%s)%s.Length);" s.WriterParam p.WriteMethod p.CsType value ]) - /// One wire entry -> read statement lines. - let private readEntryLines (s: RuntimeSurface) (entry: WireEntry) : Result = + /// One wire entry -> read statement lines. `bound` are the api names the entries before this + /// one in the same layout already read into locals — the only names an entry may address. + let private readEntryLines + (s: RuntimeSurface) + (bound: Set) + (entry: WireEntry) + : Result + = match entry with | Read(_, Option inner, api) -> let ln = localName s api @@ -327,20 +426,90 @@ module CSharp = match readExpr s wt with | Ok call -> Ok [ sprintf "%s;" call ] | Error e -> Error(sprintf "discard '%s' (%s)" wire e) + | ReadUnion(disc, _, api) when not (bound.Contains disc) -> + // Nothing read '%s' yet, so the emitted call would name a local that does not exist: + // valid-looking C# that cannot compile. A stub is the honest answer. + Error(sprintf "read union '%s' (discriminator '%s' is not read by an earlier entry)" api disc) + | ReadUnion(disc, unionName, api) -> + // the discriminator is a plain wire field an earlier entry already read into a local; + // the cast normalizes whatever integer it was to the union's `int discriminator` + Ok + [ + sprintf + "var %s = %s.%s(ref %s, %s, (int)%s);" + (localName s api) + unionName + s.ReadMethodName + s.ReaderParam + s.VersionParam + (localName s disc) + ] | other -> Error(sprintf "%A" other) - /// One wire entry -> write statement lines. `apiTypes` drives narrowing casts. + /// Read entries in layout order, pairing each with its rendered lines. The fold is what makes + /// "an earlier entry bound this" checkable: an entry only ever sees the api names before it. + let private readEntriesLines + (s: RuntimeSurface) + (entries: WireEntry list) + : (WireEntry * Result) list + = + entries + |> List.mapFold + (fun bound e -> + let rendered = readEntryLines s bound e + + let bound = + match e with + | Read(_, _, api) -> Set.add api bound + | _ -> bound + + (e, rendered), bound) + Set.empty + |> fst + + let private hasReadError (results: (WireEntry * Result) list) = + results + |> List.exists (function + | _, Error _ -> true + | _ -> false) + + /// Wire-only discriminator -> the api field of the union that consumes it. The write side has + /// no such wire field in the model, so the union's own `Discriminator(pv)` is its only source. + let private discriminatorUnions (entries: WireEntry list) : Map = + entries + |> List.choose (function + | ReadUnion(disc, _, api) -> Some(disc, api) + | _ -> None) + |> Map.ofList + + /// One wire entry -> write statement lines. `apiTypes` drives narrowing casts; `discUnions` + /// pairs a wire-only discriminator with the union field that derives its value. let private writeEntryLines (s: RuntimeSurface) (apiTypes: Map) + (discUnions: Map) (entry: WireEntry) : Result = match entry with - | Read(_, _, api) when api.StartsWith "_" -> - // wire-only discriminator: its value must be derived from the model, which needs the - // union/conditional entry that consumes it to be generated first - Error(sprintf "write wire-only '%s' (derive from model)" api) + | Read(_, wt, api) when api.StartsWith "_" -> + // wire-only field: the model carries no such field, so the value must be derived. Only + // a union consumer knows how — anything else stays a gap. + match discUnions.TryFind api with + | None -> Error(sprintf "write wire-only '%s' (derive from model)" api) + | Some unionApi -> + let disc = sprintf "%s.%s(%s)" unionApi s.DiscriminatorMethodName s.VersionParam + + // `Discriminator` hands back the api-level integer; a narrower wire primitive must + // report a key it cannot carry instead of wrapping it (same rule as `countRead`). + let value = + match s.Primitives.TryFind wt with + | Some p when p.CsType <> csType s TInt -> sprintf "checked((%s)%s)" p.CsType disc + | _ -> disc + + match writeExpr s wt None value with + | Ok call -> Ok [ sprintf "%s;" call ] + | Error e -> Error(sprintf "write discriminator '%s' (%s)" api e) | Read(_, Option inner, api) -> let v = camel api + "Value" @@ -402,6 +571,7 @@ module CSharp = match writeExpr s wt None value with | Ok call -> Ok [ sprintf "%s;" call ] | Error e -> Error(sprintf "discard '%s' (%s)" wire e) + | ReadUnion(_, _, api) -> Ok [ sprintf "%s.%s(%s, %s);" api s.WriteMethodName s.WriterParam s.VersionParam ] | other -> Error(sprintf "%A" other) // ----- per-layout bodies + version branching ----- @@ -413,9 +583,13 @@ module CSharp = (l: WireLayout) : string list = - let results = l.Entries |> List.map (fun e -> e, readEntryLines s e) + let results = readEntriesLines s l.Entries - let errors = results |> List.choose (function _, Error e -> Some e | _ -> None) + let errors = + results + |> List.choose (function + | _, Error e -> Some e + | _ -> None) if not (List.isEmpty errors) then (errors |> List.map todoLine) @ [ throwTodoLine name ] @@ -423,11 +597,16 @@ module CSharp = let bound = results |> List.choose (function - | Read(_, _, api), Ok _ -> Some(localName s api) + | Read(_, _, api), Ok _ + | ReadUnion(_, _, api), Ok _ -> Some(localName s api) | _ -> None) |> Set.ofList - let lines = results |> List.collect (function _, Ok ls -> ls | _, Error _ -> []) + let lines = + results + |> List.collect (function + | _, Ok ls -> ls + | _, Error _ -> []) let ctorArgs = apiFields @@ -447,14 +626,23 @@ module CSharp = (l: WireLayout) : string list = - let results = l.Entries |> List.map (writeEntryLines s apiTypes) + let results = + l.Entries + |> List.map (writeEntryLines s apiTypes (discriminatorUnions l.Entries)) - let errors = results |> List.choose (function Error e -> Some e | _ -> None) + let errors = + results + |> List.choose (function + | Error e -> Some e + | _ -> None) if not (List.isEmpty errors) then (errors |> List.map todoLine) @ [ throwTodoLine name ] else - results |> List.collect (function Ok ls -> ls | Error _ -> []) + results + |> List.collect (function + | Ok ls -> ls + | Error _ -> []) /// One guarded branch per layout. A single unconditional layout stays flat (the support /// attribute already gates its span); with several layouts, a version that matches none throws. @@ -476,7 +664,11 @@ module CSharp = let endsWithThrow = body |> List.tryLast |> Option.exists (fun (l: string) -> l.StartsWith "throw") - let body = if isWrite && not endsWithThrow then body @ [ "return;" ] else body + let body = + if isWrite && not endsWithThrow then + body @ [ "return;" ] + else + body match guardCondition s r with | Some c -> yield! [ sprintf "if (%s)" c; "{" ] @ body @ [ "}" ] @@ -527,9 +719,7 @@ module CSharp = s spec.Name true - [ - for l in spec.Layouts -> l.Range, layoutWriteLines s spec.Name apiTypes l - ] + [ for l in spec.Layouts -> l.Range, layoutWriteLines s spec.Name apiTypes l ] let shell = if value then @@ -589,18 +779,14 @@ module CSharp = .AddModifiers(Token SyntaxKind.PublicKeyword, Token SyntaxKind.StaticKeyword) .AddParameterListParameters( Parameter(Identifier s.VersionParam).WithType(ParseTypeName "int"), - Parameter(Identifier "id") - .WithType(ParseTypeName "int") - .AddModifiers(Token SyntaxKind.OutKeyword) + Parameter(Identifier "id").WithType(ParseTypeName "int").AddModifiers(Token SyntaxKind.OutKeyword) ) .WithBody(parseBody tryBody) let getBody = [ sprintf "if (TryGetPacketId(%s, out var id)) return id;" s.VersionParam - sprintf - "throw new System.NotSupportedException($\"No packet id for protocol {%s}.\");" - s.VersionParam + sprintf "throw new System.NotSupportedException($\"No packet id for protocol {%s}.\");" s.VersionParam ] let getDecl = @@ -624,14 +810,15 @@ module CSharp = Fields: (string * string) list } - /// Mechanical group name from a layout range: `V759`, `V761_763`, `V764_Last`. - let private layerName (allLayouts: WireLayout list) (r: VersionRange) : string = + /// Mechanical group name from a layout range: `V759`, `V761_763`, `V764_Last`. Shared with the + /// union backend, which labels its per-layer cases the same way — one naming scheme, not two. + let private layerName (allRanges: VersionRange list) (r: VersionRange) : string = match VersionRangeX.bounds r with | Some a, Some b when a = b -> sprintf "V%d" a | Some a, Some b -> sprintf "V%d_%d" a b | Some a, None -> sprintf "V%d_Last" a | None, Some b -> - match VersionRangeX.span (allLayouts |> List.map (fun l -> l.Range)) |> fst with + match VersionRangeX.span allRanges |> fst with | Some lo -> sprintf "V%d_%d" lo b | None -> sprintf "VUntil%d" b | None, None -> "VAll" @@ -686,7 +873,11 @@ module CSharp = { Layout = l - GroupName = (if fields.IsEmpty then None else Some(layerName p.Layouts l.Range)) + GroupName = + (if fields.IsEmpty then + None + else + Some(layerName (p.Layouts |> List.map (fun l -> l.Range)) l.Range)) Fields = fields } ] @@ -728,9 +919,7 @@ module CSharp = sprintf "public readonly record struct %sLayer(%s);" g - (l.Fields - |> List.map (fun (t, n) -> sprintf "%s %s" t n) - |> String.concat ", ") + (l.Fields |> List.map (fun (t, n) -> sprintf "%s %s" t n) |> String.concat ", ") ) | None -> () ] @@ -762,9 +951,13 @@ module CSharp = (layer: PacketLayer) : string list = - let results = layer.Layout.Entries |> List.map (fun e -> e, readEntryLines s e) + let results = readEntriesLines s layer.Layout.Entries - let errors = results |> List.choose (function _, Error e -> Some e | _ -> None) + let errors = + results + |> List.choose (function + | _, Error e -> Some e + | _ -> None) if not (List.isEmpty errors) then (errors |> List.map todoLine) @ [ throwTodoLine name ] @@ -772,11 +965,16 @@ module CSharp = let bound = results |> List.choose (function - | Read(_, _, api), Ok _ -> Some(localName s api) + | Read(_, _, api), Ok _ + | ReadUnion(_, _, api), Ok _ -> Some(localName s api) | _ -> None) |> Set.ofList - let lines = results |> List.collect (function _, Ok ls -> ls | _, Error _ -> []) + let lines = + results + |> List.collect (function + | _, Ok ls -> ls + | _, Error _ -> []) let commonArgs = common @@ -793,7 +991,10 @@ module CSharp = [ sprintf "%s: new %sLayer(%s)" g g (String.concat ", " args) ] | None -> [] - lines @ [ sprintf "return new %s(%s);" name (String.concat ", " (commonArgs @ groupArg)) ] + lines + @ [ + sprintf "return new %s(%s);" name (String.concat ", " (commonArgs @ groupArg)) + ] /// Write body of one layer. A layer with a group first demands it (`WrongLayerException`), /// then aliases each group field as a local with the *api-level* type (keeps the `?? throw` @@ -805,9 +1006,15 @@ module CSharp = (layer: PacketLayer) : string list = - let results = layer.Layout.Entries |> List.map (writeEntryLines s apiTypes) + let results = + layer.Layout.Entries + |> List.map (writeEntryLines s apiTypes (discriminatorUnions layer.Layout.Entries)) - let errors = results |> List.choose (function Error e -> Some e | _ -> None) + let errors = + results + |> List.choose (function + | Error e -> Some e + | _ -> None) if not (List.isEmpty errors) then (errors |> List.map todoLine) @ [ throwTodoLine name ] @@ -824,14 +1031,17 @@ module CSharp = g :: [ for _, n in layer.Fields -> - let apiT = - apiTypes.TryFind n |> Option.map (csType s) |> Option.defaultValue "var" + let apiT = apiTypes.TryFind n |> Option.map (csType s) |> Option.defaultValue "var" sprintf "%s %s = layer.%s;" apiT n n ] | None -> [] - unpack @ (results |> List.collect (function Ok ls -> ls | Error _ -> [])) + unpack + @ (results + |> List.collect (function + | Ok ls -> ls + | Error _ -> [])) /// `public static PacketIdentity Identity => new(...)` — identity as a value, from the catalog. let private identityMember (s: RuntimeSurface) (e: Registry.CatalogEntry) : MemberDeclarationSyntax = @@ -907,8 +1117,7 @@ module CSharp = | None -> () ] - let args = - String.concat ", " (sprintf "\"%s\", \"%s\"" name typeName :: named) + let args = String.concat ", " (sprintf "\"%s\", \"%s\"" name typeName :: named) AttributeList( SingletonSeparatedList( @@ -937,7 +1146,10 @@ module CSharp = let multi = List.length p.Layouts > 1 let commonFields = - if multi then p.ApiFields |> List.filter isCommon else p.ApiFields + if multi then + p.ApiFields |> List.filter isCommon + else + p.ApiFields let layers = if multi then @@ -971,9 +1183,7 @@ module CSharp = s p.ClassName true - [ - for l in layers -> l.Layout.Range, formAWriteLines s p.ClassName apiTypes l - ] + [ for l in layers -> l.Layout.Range, formAWriteLines s p.ClassName apiTypes l ] let identityMembers = identityMember s e @@ -981,10 +1191,7 @@ module CSharp = let shell = (packetRecordShell s.PacketInterface s.PacketBaseInterface p.ClassName commonPos layers) - .AddMembers( - readMethod s p.ClassName (parseBody readBody), - writeMethod s false (parseBody writeBody) - ) + .AddMembers(readMethod s p.ClassName (parseBody readBody), writeMethod s false (parseBody writeBody)) .AddMembers(identityMembers @ packetIdMethods s p.Ids |> List.toArray) .AddAttributeLists(supportAttr s (p.Layouts |> List.map (fun l -> l.Range))) .AddAttributeLists( @@ -1042,6 +1249,290 @@ module CSharp = renderUnit s s.Namespace name [ s.UsingAttributes; s.UsingSerialization ] shell + // ----- unions ----- + + /// One case of a rendered union: the nested record's name and its positional parameters. + type private UnionCase = + { + CaseName: string + Params: (string * string) list + } + + /// Positional parameters of an arm, in wire order. The parameter is named by the api name + /// verbatim, because `writeEntryLines` addresses a value by that same string: any second + /// spelling here (Pascal-casing, say) generates a write body that references a local nobody + /// declared. The packet path aliases layer fields under the api name for the same reason. + /// An entry whose shape has no renderer drops out here — the same entry also fails + /// `readEntryLines`, so that arm's bodies become stubs while the case still declares and the + /// file still compiles. + let private armParams (s: RuntimeSurface) (arm: UnionArm) : (string * string) list = + arm.Entries + |> List.choose (function + | Read(_, w, api) when not (api.StartsWith "_") -> wireCsType s w |> Option.map (fun t -> t, api) + | _ -> None) + + /// Case name of an arm inside one layer: the DSL name while the arm's parameter list is the + /// same in every layer that carries it, else the name plus the layer label. TeamAction's + /// `Created` is string-typed until 764 and NBT-typed from 771 — one record cannot be both, + /// so both shapes exist as separate cases. + let private unionCaseName (s: RuntimeSurface) (spec: UnionTypeSpec) (l: UnionLayout) (arm: UnionArm) : string = + let shapes = + spec.Layouts + |> List.choose (fun other -> other.Arms |> List.tryFind (fun a -> a.Name = arm.Name)) + |> List.map (armParams s) + |> List.distinct + + if List.length shapes <= 1 then + arm.Name + else + arm.Name + layerName (spec.Layouts |> List.map (fun x -> x.Range)) l.Range + + /// Every case the union declares, across all layers, deduplicated by name. + let private unionCases (s: RuntimeSurface) (spec: UnionTypeSpec) : UnionCase list = + [ + for l in spec.Layouts do + for a in l.Arms -> + { + CaseName = unionCaseName s spec l a + Params = armParams s a + } + ] + |> List.distinctBy (fun c -> c.CaseName) + + /// Read body of one layer: switch on the discriminator the container already took off the + /// wire, read that arm's entries into locals, construct its case. Each arm gets its own block + /// so two arms may bind the same local name. + let private unionReadLines (s: RuntimeSurface) (spec: UnionTypeSpec) (l: UnionLayout) : string list = + [ + yield sprintf "switch (%s)" s.DiscriminatorParam + yield "{" + + for arm in l.Arms do + for k in arm.Keys do + yield sprintf "case %d:" k + + yield "{" + + let results = readEntriesLines s arm.Entries + + let errors = + results + |> List.choose (function + | _, Error e -> Some e + | _ -> None) + + if not (List.isEmpty errors) then + yield! errors |> List.map todoLine + yield throwTodoLine spec.Name + else + yield! + results + |> List.collect (function + | _, Ok ls -> ls + | _, Error _ -> []) + + let args = + arm.Entries + |> List.choose (function + | Read(_, _, api) when not (api.StartsWith "_") -> Some(localName s api) + | _ -> None) + + yield sprintf "return new %s(%s);" (unionCaseName s spec l arm) (String.concat ", " args) + + yield "}" + + yield "}" + yield throwNoCaseLine s spec.Name + ] + + /// Write body of one layer: switch on the concrete case, then write that arm's entries. The + /// entry renderer addresses values by their api name, so each case property is aliased to a + /// local of exactly that name (the same trick form-A layers use). + let private unionWriteLines (s: RuntimeSurface) (spec: UnionTypeSpec) (l: UnionLayout) : string list = + [ + yield "switch (this)" + yield "{" + + for arm in l.Arms do + let ps = armParams s arm + + yield sprintf "case %s %s:" (unionCaseName s spec l arm) (if ps.IsEmpty then "_" else "arm") + yield "{" + + let results = arm.Entries |> List.map (writeEntryLines s Map.empty Map.empty) + + let errors = + results + |> List.choose (function + | Error e -> Some e + | _ -> None) + + if not (List.isEmpty errors) then + yield! errors |> List.map todoLine + yield throwTodoLine spec.Name + else + for t, n in ps do + yield sprintf "%s %s = arm.%s;" t n n + + yield! + results + |> List.collect (function + | Ok ls -> ls + | Error _ -> []) + + yield "return;" + + yield "}" + + yield "}" + yield throwNoCaseLayerLine s spec.Name + ] + + /// `Discriminator` body of one layer: the case picks the key. An arm that reads under several + /// keys (`case [3; 4] "PlayersChanged"`) writes the first one. + let private unionDiscriminatorLines (s: RuntimeSurface) (spec: UnionTypeSpec) (l: UnionLayout) : string list = + [ + yield "switch (this)" + yield "{" + + for arm in l.Arms do + match arm.Keys with + | key :: _ -> yield sprintf "case %s _: return %d;" (unionCaseName s spec l arm) key + | [] -> () + + yield "}" + yield throwNoCaseLayerLine s spec.Name + ] + + /// `[Union] public partial record Name { ... }`. Not sealed and not an `IProtocolType`: the + /// source generator derives the case records from the nested partials, and the read needs the + /// discriminator the containing layout already consumed, which that interface has no room for. + let private unionShell (name: string) : TypeDeclarationSyntax = + RecordDeclaration(SyntaxKind.RecordDeclaration, Token SyntaxKind.RecordKeyword, Identifier name) + .AddModifiers(Token SyntaxKind.PublicKeyword, Token SyntaxKind.PartialKeyword) + .WithOpenBraceToken(Token SyntaxKind.OpenBraceToken) + .WithCloseBraceToken(Token SyntaxKind.CloseBraceToken) + :> TypeDeclarationSyntax + + let private unionAttr (s: RuntimeSurface) : AttributeListSyntax = + AttributeList(SingletonSeparatedList(Attribute(ParseName s.UnionAttribute))) + + /// `public static T Read(ref Reader reader, int protocolVersion, int discriminator)`. + let private unionReadMethod (s: RuntimeSurface) (typeName: string) (body: BlockSyntax) : MemberDeclarationSyntax = + MethodDeclaration(ParseTypeName typeName, s.ReadMethodName) + .AddModifiers(Token SyntaxKind.PublicKeyword, Token SyntaxKind.StaticKeyword) + .AddParameterListParameters( + Parameter(Identifier s.ReaderParam) + .WithType(ParseTypeName s.ReaderType) + .AddModifiers(Token SyntaxKind.RefKeyword), + Parameter(Identifier s.VersionParam).WithType(ParseTypeName "int"), + Parameter(Identifier s.DiscriminatorParam).WithType(ParseTypeName "int") + ) + .WithBody(body) + + /// `public int Discriminator(int protocolVersion)` — the key the containing layout writes + /// ahead of the union body, derived from the case the model holds. + let private discriminatorMethod (s: RuntimeSurface) (body: BlockSyntax) : MemberDeclarationSyntax = + MethodDeclaration(PredefinedType(Token SyntaxKind.IntKeyword), s.DiscriminatorMethodName) + .AddModifiers(Token SyntaxKind.PublicKeyword) + .AddParameterListParameters(Parameter(Identifier s.VersionParam).WithType(ParseTypeName "int")) + .WithBody(body) + + let private unionUsings (s: RuntimeSurface) (cases: UnionCase list) = + let text = + cases |> List.collect (fun c -> c.Params |> List.map fst) |> String.concat " " + + [ + yield s.UsingUnion + yield s.UsingAttributes + yield s.UsingSerialization + if text.Contains s.NbtType then + yield s.UsingNbt + if text.Contains s.UuidType then + yield s.UsingSystem + ] + + /// A case record shadows a same-named type for the whole union body: read as written, + /// `Rotations(Rotations Value)` binds the parameter to the case, not to the type. Rewriting + /// the wire's named references to namespace-qualified ones fixes every use at once — the case + /// declarations, the `ReadType` calls and the write-side locals all come from these entries. + /// The shadow set is every arm name, whether or not the layer label ends up suffixed to it: an + /// unnecessary qualification is only longer, a missing one is wrong code. + let private qualifyShadowed (s: RuntimeSurface) (spec: UnionTypeSpec) : UnionTypeSpec = + let shadowed = + spec.Layouts + |> List.collect (fun l -> l.Arms |> List.map (fun a -> a.Name)) + |> Set.ofList + + let rec wire w = + match w with + | Named n when shadowed.Contains n -> Named(sprintf "%s.%s" s.Namespace n) + | Array(item, cnt) -> Array(wire item, cnt) + | Option inner -> Option(wire inner) + | SentinelArray(item, e) -> SentinelArray(wire item, e) + | other -> other + + let entry e = + match e with + | Read(w, t, api) -> Read(w, wire t, api) + | Discard(w, t) -> Discard(w, wire t) + | other -> other + + { spec with + Layouts = + [ + for l in spec.Layouts -> + { l with + Arms = + [ + for a in l.Arms -> + { a with + Entries = a.Entries |> List.map entry + } + ] + } + ] + } + + let private renderUnion (s: RuntimeSurface) (spec: UnionTypeSpec) : string = + let spec = qualifyShadowed s spec + let cases = unionCases s spec + + let caseDecls: MemberDeclarationSyntax list = + [ + for c in cases -> + ParseMemberDeclaration( + sprintf + "partial record %s(%s);" + c.CaseName + (c.Params |> List.map (fun (t, n) -> sprintf "%s %s" t n) |> String.concat ", ") + ) + ] + + let readBody = + gateLine s spec.Name + :: versionedBody s spec.Name false [ for l in spec.Layouts -> l.Range, unionReadLines s spec l ] + + let writeBody = + gateLine s spec.Name + :: versionedBody s spec.Name true [ for l in spec.Layouts -> l.Range, unionWriteLines s spec l ] + + let discBody = + versionedBody s spec.Name false [ for l in spec.Layouts -> l.Range, unionDiscriminatorLines s spec l ] + + let shell = + (unionShell spec.Name) + .AddMembers(List.toArray caseDecls) + .AddMembers( + unionReadMethod s spec.Name (parseBody readBody), + writeMethod s false (parseBody writeBody), + discriminatorMethod s (parseBody discBody) + ) + .AddAttributeLists(supportAttr s (spec.Layouts |> List.map (fun l -> l.Range))) + .AddAttributeLists(unionAttr s) + + renderUnit s s.Namespace spec.Name (unionUsings s cases) shell + // ----- whole-protocol aggregates: registry tables, dispatcher, handler base ----- /// Validate + format a hand-assembled aggregate source file (several top-level types per @@ -1071,13 +1562,7 @@ module CSharp = /// dispatch and the handler base: its ordinal falls through to `Unknown`, so a stub `Read` /// throw can never take down the receive loop. let private hasReadStub (s: RuntimeSurface) (p: PacketSpec) = - p.Layouts - |> List.exists (fun l -> - l.Entries - |> List.exists (fun e -> - match readEntryLines s e with - | Error _ -> true - | Ok _ -> false)) + p.Layouts |> List.exists (fun l -> readEntriesLines s l.Entries |> hasReadError) let rec private wireNamedRefs (w: WireType) : string list = match w with @@ -1111,19 +1596,14 @@ module CSharp = | _ -> [] /// Named types the delivered output can resolve: runtime-provided primitives plus generated - /// named/bitflags types that are themselves stub-free and reference only resolvable types - /// (fixpoint). Unions are not generated yet, so a union reference is unresolvable. + /// named/bitflags/union types that are themselves stub-free and reference only resolvable + /// types (fixpoint). A union is a candidate like any other type — it is generated now, so a + /// union reference resolves as soon as every type its arms read does. let private resolvableTypes (s: RuntimeSurface) (protocol: ProtocolSpec) : Set = let runtimeProvided = Set.ofList [ "Position" ] - let stubFree (t: NamedTypeSpec) = - t.Layouts - |> List.forall (fun l -> - l.Entries - |> List.forall (fun e -> - match readEntryLines s e with - | Ok _ -> true - | Error _ -> false)) + let stubFreeEntries (entries: WireEntry list) = + readEntriesLines s entries |> hasReadError |> not let candidates = [ @@ -1132,7 +1612,13 @@ module CSharp = (t.ApiFields |> List.collect (fun f -> apiNamedRefs f.Type)) @ (t.Layouts |> List.collect (fun l -> l.Entries |> List.collect entryNamedRefs)) - t.Name, refs, stubFree t + t.Name, refs, t.Layouts |> List.forall (fun l -> stubFreeEntries l.Entries) + for u in protocol.Unions -> + let arms = u.Layouts |> List.collect (fun l -> l.Arms) + + let refs = arms |> List.collect (fun a -> a.Entries |> List.collect entryNamedRefs) + + u.Name, refs, arms |> List.forall (fun a -> stubFreeEntries a.Entries) ] let mutable known = @@ -1180,7 +1666,9 @@ module CSharp = for st in allStates do for dir in allDirs do let slice = Registry.slice st dir entries - if not slice.IsEmpty then yield st, dir, slice + + if not slice.IsEmpty then + yield st, dir, slice ] // pv runs with an identical id -> ordinal layout, per slice @@ -1272,7 +1760,10 @@ module CSharp = line (sprintf " [%s];" (table |> Seq.map string |> String.concat ", ")) line "" - line (sprintf " private static ReadOnlySpan Table(%s phase, %s dir, int pv)" s.PhaseEnum s.DirectionEnum) + line ( + sprintf " private static ReadOnlySpan Table(%s phase, %s dir, int pv)" s.PhaseEnum s.DirectionEnum + ) + line " {" line " switch (phase, dir)" line " {" @@ -1284,7 +1775,9 @@ module CSharp = line (sprintf " case (%s.%A, %s.%A):" s.PhaseEnum st s.DirectionEnum dir) for lo, hi, _ in runs do - line (sprintf " if (pv >= %d && pv <= %d) return Table%A%A_%d_%d;" lo hi st dir lo hi) + line ( + sprintf " if (pv >= %d && pv <= %d) return Table%A%A_%d_%d;" lo hi st dir lo hi + ) line " return default;" @@ -1293,6 +1786,7 @@ module CSharp = line " return default;" line " }" line "" + line ( sprintf " public static bool TryGetOrdinal(int id, int %s, %s phase, %s dir, out ushort ordinal)" @@ -1300,6 +1794,7 @@ module CSharp = s.PhaseEnum s.DirectionEnum ) + line " {" line (sprintf " var table = Table(phase, dir, %s);" s.VersionParam) line " if ((uint)id < (uint)table.Length && table[id] >= 0)" @@ -1312,6 +1807,7 @@ module CSharp = line " return false;" line " }" line "" + line ( sprintf " public static bool TryResolve(int id, int %s, %s phase, %s dir, [NotNullWhen(true)] out PacketDescriptor? descriptor)" @@ -1319,6 +1815,7 @@ module CSharp = s.PhaseEnum s.DirectionEnum ) + line " {" line (sprintf " if (TryGetOrdinal(id, %s, phase, dir, out var ordinal))" s.VersionParam) line " {" @@ -1330,13 +1827,22 @@ module CSharp = line " return false;" line " }" line "" - line (sprintf " public static ReadOnlySpan Catalog(%s phase, %s dir)" s.PhaseEnum s.DirectionEnum) + + line ( + sprintf + " public static ReadOnlySpan Catalog(%s phase, %s dir)" + s.PhaseEnum + s.DirectionEnum + ) + line " {" line " switch (phase, dir)" line " {" for st, dir, _ in slices do - line (sprintf " case (%s.%A, %s.%A): return Catalog%A%A;" s.PhaseEnum st s.DirectionEnum dir st dir) + line ( + sprintf " case (%s.%A, %s.%A): return Catalog%A%A;" s.PhaseEnum st s.DirectionEnum dir st dir + ) line " }" line "" @@ -1362,10 +1868,10 @@ module CSharp = for st in allStates do for dir in allDirs do let slice = - Registry.slice st dir entries - |> List.filter (fun e -> dispatchable e.Spec) + Registry.slice st dir entries |> List.filter (fun e -> dispatchable e.Spec) - if not slice.IsEmpty then yield st, dir, slice + if not slice.IsEmpty then + yield st, dir, slice ] // A `.g.cs` file is auto-generated as far as the compiler is concerned, so the project's @@ -1381,7 +1887,11 @@ module CSharp = line "" line (sprintf "namespace %s;" s.Namespace) line "" - line (sprintf "public delegate void TrailingBytesHook(int packetId, int %s, long remainingBytes);" s.VersionParam) + + line ( + sprintf "public delegate void TrailingBytesHook(int packetId, int %s, long remainingBytes);" s.VersionParam + ) + line "" line "/// Generated dispatcher. Packets whose codegen is still stubbed are not" line "/// dispatched — they fall through to Unknown instead of throwing inside the" @@ -1394,6 +1904,7 @@ module CSharp = line "{" line " public static event TrailingBytesHook? OnTrailingBytes;" line "" + line ( sprintf " public static void Dispatch(in InputPacket raw, int %s, %s phase, %s dir, ref TVisitor visitor)" @@ -1401,9 +1912,14 @@ module CSharp = s.PhaseEnum s.DirectionEnum ) + line " where TVisitor : IPacketVisitor" line " {" - line (sprintf " if (!PacketRegistry.TryGetOrdinal(raw.Id, %s, phase, dir, out var ordinal))" s.VersionParam) + + line ( + sprintf " if (!PacketRegistry.TryGetOrdinal(raw.Id, %s, phase, dir, out var ordinal))" s.VersionParam + ) + line " {" line " visitor.Unknown(in raw);" line " return;" @@ -1421,6 +1937,7 @@ module CSharp = for st, dir, _ in slices do line (sprintf " case (%s.%A, %s.%A):" s.PhaseEnum st s.DirectionEnum dir) + line ( sprintf " handled = Dispatch%A%A(ordinal, ref %s, %s, ref visitor, ref reading);" @@ -1429,6 +1946,7 @@ module CSharp = s.ReaderParam s.VersionParam ) + line " break;" line " default:" @@ -1443,7 +1961,11 @@ module CSharp = line " }" line "" line (sprintf " if (%s.RemainingCount != 0)" s.ReaderParam) - line (sprintf " OnTrailingBytes?.Invoke(raw.Id, %s, %s.RemainingCount);" s.VersionParam s.ReaderParam) + + line ( + sprintf " OnTrailingBytes?.Invoke(raw.Id, %s, %s.RemainingCount);" s.VersionParam s.ReaderParam + ) + line " }" // ----- TryDispatch: the same table, a reason instead of a throw ----- @@ -1458,6 +1980,7 @@ module CSharp = line " /// decoder and out-of-memory still propagate. An exception thrown by the visitor" line " /// itself is never converted — the table lowers reading before it calls the" line " /// visitor, so the consumer's own bugs come out as themselves." + line ( sprintf " public static bool TryDispatch(in InputPacket raw, int %s, %s phase, %s direction, ref TVisitor visitor, out DecodeError error)" @@ -1465,15 +1988,18 @@ module CSharp = s.PhaseEnum s.DirectionEnum ) + line " where TVisitor : IPacketVisitor" line " {" line " error = DecodeError.None;" line "" + line ( sprintf " if (!PacketRegistry.TryGetOrdinal(raw.Id, %s, phase, direction, out var ordinal))" s.VersionParam ) + line " {" line " visitor.Unknown(in raw);" line " return true;" @@ -1492,6 +2018,7 @@ module CSharp = for st, dir, _ in slices do line (sprintf " case (%s.%A, %s.%A):" s.PhaseEnum st s.DirectionEnum dir) + line ( sprintf " handled = Dispatch%A%A(ordinal, ref %s, %s, ref visitor, ref reading);" @@ -1500,6 +2027,7 @@ module CSharp = s.ReaderParam s.VersionParam ) + line " break;" line " default:" @@ -1520,7 +2048,11 @@ module CSharp = line " }" line "" line (sprintf " if (%s.RemainingCount != 0)" s.ReaderParam) - line (sprintf " OnTrailingBytes?.Invoke(raw.Id, %s, %s.RemainingCount);" s.VersionParam s.ReaderParam) + + line ( + sprintf " OnTrailingBytes?.Invoke(raw.Id, %s, %s.RemainingCount);" s.VersionParam s.ReaderParam + ) + line "" line " return true;" line " }" @@ -1530,15 +2062,13 @@ module CSharp = | Some baseIface -> line "" line " /// One raw packet in, one decoded packet out — no visitor to write." - line ( - sprintf - " /// An id this (phase, direction) cannot map yields an " - ) + line (sprintf " /// An id this (phase, direction) cannot map yields an ") line " /// and still returns true: an unmapped id is a normal stream condition, not an error." line " /// A malformed body returns false with filled and" line " /// null. The allocation-free hot path is" line " /// / ; this door costs nothing" line " /// extra either — packets are classes, so the capture is a reference, not a box." + line ( sprintf " public static bool TryDecode(in InputPacket raw, int %s, %s phase, %s direction, [System.Diagnostics.CodeAnalysis.NotNullWhen(true)] out %s? packet, out DecodeError error)" @@ -1547,14 +2077,15 @@ module CSharp = s.DirectionEnum baseIface ) + line " {" line " var capture = new Capture(phase, direction);" line "" + line ( - sprintf - " if (!TryDispatch(in raw, %s, phase, direction, ref capture, out error))" - s.VersionParam + sprintf " if (!TryDispatch(in raw, %s, phase, direction, ref capture, out error))" s.VersionParam ) + line " {" line " packet = null;" line " return false;" @@ -1564,11 +2095,13 @@ module CSharp = line " return true;" line " }" line "" + line ( sprintf " /// Keeps the decoded packet as . The assignment is a" baseIface ) + line " /// reference conversion (every packet is a class that implements it), so there is no" line " /// boxing and no adapter object — the same jump table, one field write." line " private struct Capture : IPacketVisitor" @@ -1585,14 +2118,19 @@ module CSharp = line " Result = null;" line " }" line "" + line ( sprintf " public void Visit(T packet) where T : class, %s => Result = (%s)packet;" (s.PacketInterface |> Option.defaultValue baseIface) baseIface ) + line "" - line " public void Unknown(in InputPacket raw) => Result = new UnknownPacket(raw.Id, _phase, _direction);" + + line + " public void Unknown(in InputPacket raw) => Result = new UnknownPacket(raw.Id, _phase, _direction);" + line " }" | None -> () @@ -1630,12 +2168,10 @@ module CSharp = for st, dir, slice in slices do line "" - line ( - sprintf - " /// One ordinal, one read, one constrained call. " - ) + line (sprintf " /// One ordinal, one read, one constrained call. ") line " /// goes false between the two: above it the exception is the packet's fault, below it" line " /// the visitor's. Only the Try door reads it." + line ( sprintf " private static bool Dispatch%A%A(ushort ordinal, ref %s %s, int %s, ref TVisitor visitor, ref bool reading)" @@ -1645,6 +2181,7 @@ module CSharp = s.ReaderParam s.VersionParam ) + line " where TVisitor : IPacketVisitor" line " {" line " switch (ordinal)" @@ -1653,6 +2190,7 @@ module CSharp = for e in slice do line (sprintf " case %d:" e.Ordinal) line " {" + line ( sprintf " var packet = %s.Read(ref %s, %s);" @@ -1660,6 +2198,7 @@ module CSharp = s.ReaderParam s.VersionParam ) + line " reading = false;" line " visitor.Visit(packet);" line " return true;" @@ -1678,10 +2217,7 @@ module CSharp = /// Play keeps the bare name and other phases get a phase prefix. let private handlerNames (entries: Registry.CatalogEntry list) : Map = let counts = - entries - |> List.map (fun e -> shortName e.Spec) - |> List.countBy id - |> Map.ofList + entries |> List.map (fun e -> shortName e.Spec) |> List.countBy id |> Map.ofList entries |> List.map (fun e -> @@ -1714,7 +2250,8 @@ module CSharp = Registry.slice st Clientbound entries |> List.filter (fun e -> dispatchable e.Spec) - if not slice.IsEmpty then yield st, slice + if not slice.IsEmpty then + yield st, slice ] let names = handlerNames (clientbound |> List.collect snd) @@ -1741,7 +2278,14 @@ module CSharp = line " {" line " _pending = default;" line " var self = this;" - line (sprintf " PacketFlow.Dispatch(in raw, %s, Phase, %s.Clientbound, ref self);" s.VersionParam s.DirectionEnum) + + line ( + sprintf + " PacketFlow.Dispatch(in raw, %s, Phase, %s.Clientbound, ref self);" + s.VersionParam + s.DirectionEnum + ) + line " return _pending;" line " }" line "" @@ -1760,12 +2304,7 @@ module CSharp = let handler = names.[(sprintf "%A" st, e.Spec.ClassName)] line (sprintf " case %d:" e.Ordinal) - line ( - sprintf - " _pending = %s((%s)(object)packet);" - handler - (relTypeName e.Spec) - ) + line (sprintf " _pending = %s((%s)(object)packet);" handler (relTypeName e.Spec)) line " return;" line " }" @@ -1787,12 +2326,7 @@ module CSharp = let handler = names.[(sprintf "%A" st, e.Spec.ClassName)] line "" - line ( - sprintf - " protected virtual ValueTask %s(%s packet) => default;" - handler - (relTypeName e.Spec) - ) + line (sprintf " protected virtual ValueTask %s(%s packet) => default;" handler (relTypeName e.Spec)) line "}" sb.ToString() @@ -1833,6 +2367,7 @@ module CSharp = renderType surface surface.Namespace surface.ProtocolInterface spec [] [] member _.RenderBitflags spec = renderBitflags surface spec + member _.RenderUnion spec = renderUnion surface spec member _.RenderPacket entry = renderPacket surface entry member _.RenderProtocol entries = renderProtocolExtras surface entries } diff --git a/minecraft-protocol-fs/Codegen/CSharpSurface.fs b/minecraft-protocol-fs/Codegen/CSharpSurface.fs index 8a719f2..c5800b5 100644 --- a/minecraft-protocol-fs/Codegen/CSharpSurface.fs +++ b/minecraft-protocol-fs/Codegen/CSharpSurface.fs @@ -34,12 +34,20 @@ module CSharpSurface = UsingSerialization: string UsingNbt: string UsingSystem: string + /// Namespace of the discriminated-union source generator the union backend leans on. + UsingUnion: string /// Reader / writer types and the parameter names used in generated signatures. ReaderType: string WriterType: string ReaderParam: string WriterParam: string VersionParam: string + /// Union surface: the marker attribute the generator reads, the extra read parameter + /// carrying the discriminator the container already consumed, and the method that + /// gives that value back on the write side. + UnionAttribute: string + DiscriminatorParam: string + DiscriminatorMethodName: string /// Version gate: attribute name, throw helper, open-range bound constants. SupportAttribute: string ThrowIfNotSupported: string @@ -99,11 +107,15 @@ module CSharpSurface = UsingSerialization = "McProtoNet.Serialization" UsingNbt = "McProtoNet.NBT" UsingSystem = "System" + UsingUnion = "Dunet" ReaderType = "MinecraftPrimitiveReader" WriterType = "MinecraftPrimitiveWriter" ReaderParam = "reader" WriterParam = "writer" VersionParam = "protocolVersion" + UnionAttribute = "Union" + DiscriminatorParam = "discriminator" + DiscriminatorMethodName = "Discriminator" SupportAttribute = "ProtocolSupport" ThrowIfNotSupported = "ThrowHelper.ThrowIfProtocolNotSupported" StartProtocolConst = "MinecraftVersion.StartProtocol" diff --git a/minecraft-protocol-fs/Codegen/Coverage.fs b/minecraft-protocol-fs/Codegen/Coverage.fs index 875665c..b810115 100644 --- a/minecraft-protocol-fs/Codegen/Coverage.fs +++ b/minecraft-protocol-fs/Codegen/Coverage.fs @@ -11,7 +11,7 @@ open McProtocol.Dsl /// gaps / stubs / missing — per release protocol version. See `dotnet run -- coverage`. module Coverage = - /// Release protocol versions the library targets (735–772), with display names. + /// Release protocol versions the library targets (735–776), with display names. /// Mirrors McProtoNet's `MinecraftVersion` table; snapshot/pre/rc protocols /// (737–750, 752) are left out on purpose — nobody ships against them. let knownVersions = @@ -39,11 +39,17 @@ module Coverage = 770, "1.21.5" 771, "1.21.6" 772, "1.21.7–1.21.8" + 773, "1.21.9–1.21.10" + 774, "1.21.11" + 775, "26.1–26.1.2" + 776, "26.2" ] let private contains pv range = let lo, hi = VersionRangeX.bounds range - (lo |> Option.forall (fun l -> pv >= l)) && (hi |> Option.forall (fun h -> pv <= h)) + + (lo |> Option.forall (fun l -> pv >= l)) + && (hi |> Option.forall (fun h -> pv <= h)) /// Compress a set of pvs into "a, b–c" chunks. Adjacency follows the known-version /// ordering, not integer succession (753 and 754 are neighbours; so are 736 and 751). @@ -90,8 +96,7 @@ module Coverage = [ for p in doc.RootElement.GetProperty("Packets").EnumerateArray() -> - p.GetProperty("Id").GetString(), - (p.GetProperty("Score").GetInt32(), p.GetProperty("Tier").GetString()) + p.GetProperty("Id").GetString(), (p.GetProperty("Score").GetInt32(), p.GetProperty("Tier").GetString()) ] |> Map.ofList @@ -112,7 +117,8 @@ module Coverage = (allowlistPath: string) (statsPath: string option) (packets: PacketSpec list) - : string * string = + : string * string + = let manifest = readManifest manifestPath let stats = statsPath |> Option.map readStats let stubs = readStubs allowlistPath @@ -142,8 +148,7 @@ module Coverage = ] let orphanSpecs = - packets - |> List.filter (fun p -> not (manifestKeys.Contains(PacketIds.key p))) + packets |> List.filter (fun p -> not (manifestKeys.Contains(PacketIds.key p))) let sb = StringBuilder() let line (s: string) = sb.AppendLine s |> ignore @@ -153,17 +158,13 @@ module Coverage = line "Автогенерат: `dotnet run -- coverage` — не править руками." line "" - line - "Вселенная пакетов — `Spec/protocol-ids.json` (манифест из McProtoFacts), спеки — то," + line "Вселенная пакетов — `Spec/protocol-ids.json` (манифест из McProtoFacts), спеки — то," - line - "что реально лежит в `Spec/Packets/**`. «Покрыто» на версии значит: спек есть, версия" + line "что реально лежит в `Spec/Packets/**`. «Покрыто» на версии значит: спек есть, версия" - line - "внутри его диапазона поддержки и есть wire-layout на неё. «Стаб» — спек есть, но" + line "внутри его диапазона поддержки и есть wire-layout на неё. «Стаб» — спек есть, но" - line - "генерат в `Spec/todo-allowlist.txt`: компилируется, работать не будет. Снапшоты" + line "генерат в `Spec/todo-allowlist.txt`: компилируется, работать не будет. Снапшоты" line "(pv 737–750, 752) не считаются." line "" @@ -215,8 +216,7 @@ module Coverage = // ---- stubs ------------------------------------------------------------------ let stubRows = rows - |> List.choose (fun (_, spec, _, _) -> - spec |> Option.filter (fun p -> stubs.Contains p.ClassName)) + |> List.choose (fun (_, spec, _, _) -> spec |> Option.filter (fun p -> stubs.Contains p.ClassName)) if not (List.isEmpty stubRows) then line "## Стабы (todo-allowlist)" @@ -301,7 +301,8 @@ module Coverage = let latestPv = pvs |> List.max let latestCovered = - rows |> List.sumBy (fun (_, _, _, cov) -> if cov.Contains latestPv then 1 else 0) + rows + |> List.sumBy (fun (_, _, _, cov) -> if cov.Contains latestPv then 1 else 0) let latestTotal = rows |> List.sumBy (fun (_, _, ex, _) -> if ex.Contains latestPv then 1 else 0) diff --git a/minecraft-protocol-fs/Codegen/Generator.fs b/minecraft-protocol-fs/Codegen/Generator.fs index 5ca6f1a..b32e0ed 100644 --- a/minecraft-protocol-fs/Codegen/Generator.fs +++ b/minecraft-protocol-fs/Codegen/Generator.fs @@ -20,6 +20,13 @@ module Generator = Contents = t.RenderBitflags spec } + /// Generate one union type as a source file for the target language. + let generateUnion (t: ILanguageTarget) (spec: UnionTypeSpec) : GeneratedFile = + { + RelativePath = sprintf "Unions/%s%s" spec.Name t.Extension + Contents = t.RenderUnion spec + } + /// Generate one packet as a source file for the target language. let generatePacket (t: ILanguageTarget) (e: Registry.CatalogEntry) : GeneratedFile = { @@ -27,13 +34,14 @@ module Generator = Contents = t.RenderPacket e } - /// Generate every named type, bitflags and packet in a protocol, plus the target's - /// whole-protocol aggregates. Unions are future work. Packets go through the ordinal - /// catalog: identity and ordinals come from there. + /// Generate every named type, bitflags, union and packet in a protocol, plus the target's + /// whole-protocol aggregates. Packets go through the ordinal catalog: identity and ordinals + /// come from there. let generateProtocol (t: ILanguageTarget) (p: ProtocolSpec) : GeneratedFile list = let catalog = Registry.catalog p.Packets (p.Types |> List.map (generateType t)) @ (p.Bitflags |> List.map (generateBitflags t)) + @ (p.Unions |> List.map (generateUnion t)) @ (catalog |> List.map (generatePacket t)) @ t.RenderProtocol p diff --git a/minecraft-protocol-fs/Codegen/Target.fs b/minecraft-protocol-fs/Codegen/Target.fs index 857309f..be4b16d 100644 --- a/minecraft-protocol-fs/Codegen/Target.fs +++ b/minecraft-protocol-fs/Codegen/Target.fs @@ -25,6 +25,8 @@ type ILanguageTarget = abstract RenderType: NamedTypeSpec -> string /// Render one bitflags type into a complete source file body. abstract RenderBitflags: BitflagsSpec -> string + /// Render one union type into a complete source file body. + abstract RenderUnion: UnionTypeSpec -> string /// Render one packet (with its ordinal-catalog entry) into a complete source file body. abstract RenderPacket: Registry.CatalogEntry -> string /// Render whole-protocol aggregate outputs (registry tables, dispatcher, handler bases). diff --git a/minecraft-protocol-fs/Spec/Bitflags/Scoreboard/TeamFlags.fs b/minecraft-protocol-fs/Spec/Bitflags/Scoreboard/TeamFlags.fs new file mode 100644 index 0000000..b2e54ce --- /dev/null +++ b/minecraft-protocol-fs/Spec/Bitflags/Scoreboard/TeamFlags.fs @@ -0,0 +1,11 @@ +namespace McProtocol.Spec + +open McProtocol.Dsl + +[] +module TeamFlags = + + let teamFlags = + bitflags "TeamFlags" { + layout (Since 771) U8 [ "friendlyFire"; "seeFriendlyInvisible" ] + } diff --git a/minecraft-protocol-fs/Spec/Packets/Configuration/Clientbound/CodeOfConduct.fs b/minecraft-protocol-fs/Spec/Packets/Configuration/Clientbound/CodeOfConduct.fs new file mode 100644 index 0000000..5f1ce36 --- /dev/null +++ b/minecraft-protocol-fs/Spec/Packets/Configuration/Clientbound/CodeOfConduct.fs @@ -0,0 +1,12 @@ +namespace McProtocol.Spec + +open McProtocol.Dsl + +[] +module CodeOfConductConfiguration = + + let codeOfConductConfiguration = + packet "CodeOfConductPacket" Configuration Clientbound (Since 773) { + api [ field "Contents" TString All ] + wire (Since 773) [ read "contents" Str "Contents" ] + } diff --git a/minecraft-protocol-fs/Spec/Packets/Configuration/Serverbound/AcceptCodeOfConduct.fs b/minecraft-protocol-fs/Spec/Packets/Configuration/Serverbound/AcceptCodeOfConduct.fs new file mode 100644 index 0000000..6fe4f8b --- /dev/null +++ b/minecraft-protocol-fs/Spec/Packets/Configuration/Serverbound/AcceptCodeOfConduct.fs @@ -0,0 +1,12 @@ +namespace McProtocol.Spec + +open McProtocol.Dsl + +[] +module AcceptCodeOfConductConfiguration = + + let acceptCodeOfConductConfiguration = + packet "AcceptCodeOfConductPacket" Configuration Serverbound (Since 773) { + api [] + wire (Since 773) [] + } diff --git a/minecraft-protocol-fs/Spec/Packets/Configuration/Serverbound/CookieResponse.fs b/minecraft-protocol-fs/Spec/Packets/Configuration/Serverbound/CookieResponse.fs index 0075ace..ed28688 100644 --- a/minecraft-protocol-fs/Spec/Packets/Configuration/Serverbound/CookieResponse.fs +++ b/minecraft-protocol-fs/Spec/Packets/Configuration/Serverbound/CookieResponse.fs @@ -7,13 +7,11 @@ module CookieResponseConfiguration = let cookieResponseConfiguration = packet "CookieResponsePacket" Configuration Serverbound (Since 766) { - api [ - field "Key" TString All - field "Value" (TOption TBytes) All - ] + api [ field "Key" TString All; field "Value" (TOption TBytes) All ] - wire (Since 766) [ - read "key" Str "Key" - read "value" (Option ByteArray) "Value" - ] + wire (Between(766, 771)) [ read "key" Str "Key"; read "value" (Option ByteArray) "Value" ] + + wire (Between(772, 772)) [ read "key" Str "Key"; read "value" ByteArray "Value" ] + + wire (Since 773) [ read "key" Str "Key"; read "value" (Option ByteArray) "Value" ] } diff --git a/minecraft-protocol-fs/Spec/Packets/Login/Clientbound/LoginSuccess.fs b/minecraft-protocol-fs/Spec/Packets/Login/Clientbound/LoginSuccess.fs index 581058e..6b4fee3 100644 --- a/minecraft-protocol-fs/Spec/Packets/Login/Clientbound/LoginSuccess.fs +++ b/minecraft-protocol-fs/Spec/Packets/Login/Clientbound/LoginSuccess.fs @@ -9,34 +9,48 @@ module LoginSuccess = packet "LoginSuccessPacket" Login Clientbound All { protoId "success" - api [ - field "Uuid" TUuid All - field "Username" TString All - field "Properties" (TArray(TNamed "ProfileProperty")) (Since 759) - field "StrictErrorHandling" TBool (Between(766, 767)) - ] - - wire (Until 758) [ - read "uuid" Uuid "Uuid" - read "username" Str "Username" - ] - - wire (Between(759, 765)) [ - read "uuid" Uuid "Uuid" - read "username" Str "Username" - read "properties" (Array(Named "ProfileProperty", VarIntCount)) "Properties" - ] - - wire (Between(766, 767)) [ - read "uuid" Uuid "Uuid" - read "username" Str "Username" - read "properties" (Array(Named "ProfileProperty", VarIntCount)) "Properties" - read "strictErrorHandling" Bool "StrictErrorHandling" - ] - - wire (Since 768) [ - read "uuid" Uuid "Uuid" - read "username" Str "Username" - read "properties" (Array(Named "ProfileProperty", VarIntCount)) "Properties" - ] + api + [ + field "Uuid" TUuid All + field "Username" TString All + field "Properties" (TArray(TNamed "ProfileProperty")) (Since 759) + field "StrictErrorHandling" TBool (Between(766, 767)) + field "SessionId" TUuid (Since 776) + ] + + wire (Until 758) [ read "uuid" Uuid "Uuid"; read "username" Str "Username" ] + + wire + (Between(759, 765)) + [ + read "uuid" Uuid "Uuid" + read "username" Str "Username" + read "properties" (Array(Named "ProfileProperty", VarIntCount)) "Properties" + ] + + wire + (Between(766, 767)) + [ + read "uuid" Uuid "Uuid" + read "username" Str "Username" + read "properties" (Array(Named "ProfileProperty", VarIntCount)) "Properties" + read "strictErrorHandling" Bool "StrictErrorHandling" + ] + + wire + (Between(768, 775)) + [ + read "uuid" Uuid "Uuid" + read "username" Str "Username" + read "properties" (Array(Named "ProfileProperty", VarIntCount)) "Properties" + ] + + wire + (Since 776) + [ + read "uuid" Uuid "Uuid" + read "username" Str "Username" + read "properties" (Array(Named "ProfileProperty", VarIntCount)) "Properties" + read "sessionId" Uuid "SessionId" + ] } diff --git a/minecraft-protocol-fs/Spec/Packets/Login/Serverbound/LoginCookieResponse.fs b/minecraft-protocol-fs/Spec/Packets/Login/Serverbound/LoginCookieResponse.fs index be7295b..bf30efc 100644 --- a/minecraft-protocol-fs/Spec/Packets/Login/Serverbound/LoginCookieResponse.fs +++ b/minecraft-protocol-fs/Spec/Packets/Login/Serverbound/LoginCookieResponse.fs @@ -9,13 +9,11 @@ module LoginCookieResponse = packet "LoginCookieResponsePacket" Login Serverbound (Since 766) { protoId "cookie_response" - api [ - field "Key" TString All - field "Value" (TOption TBytes) All - ] + api [ field "Key" TString All; field "Value" (TOption TBytes) All ] - wire (Since 766) [ - read "key" Str "Key" - read "value" (Option ByteArray) "Value" - ] + wire (Between(766, 771)) [ read "key" Str "Key"; read "value" (Option ByteArray) "Value" ] + + wire (Between(772, 772)) [ read "key" Str "Key"; read "value" ByteArray "Value" ] + + wire (Since 773) [ read "key" Str "Key"; read "value" (Option ByteArray) "Value" ] } diff --git a/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Entity/EntityVelocity.fs b/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Entity/EntityVelocity.fs index e0a9063..0e264db 100644 --- a/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Entity/EntityVelocity.fs +++ b/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Entity/EntityVelocity.fs @@ -7,17 +7,28 @@ module EntityVelocity = let entityVelocity = packet "EntityVelocityPacket" Play Clientbound All { - api [ - field "EntityId" TInt All - field "VelocityX" TInt All - field "VelocityY" TInt All - field "VelocityZ" TInt All - ] + api + [ + field "EntityId" TInt All + field "VelocityX" TInt (Until 772) + field "VelocityY" TInt (Until 772) + field "VelocityZ" TInt (Until 772) + field "Velocity" (TNamed "LpVec3") (Since 773) + ] - wire All [ - read "entityId" VarInt "EntityId" - read "velocityX" I16 "VelocityX" - read "velocityY" I16 "VelocityY" - read "velocityZ" I16 "VelocityZ" - ] + wire + (Until 772) + [ + read "entityId" VarInt "EntityId" + read "velocityX" I16 "VelocityX" + read "velocityY" I16 "VelocityY" + read "velocityZ" I16 "VelocityZ" + ] + + wire + (Since 773) + [ + read "entityId" VarInt "EntityId" + read "velocity" (Named "LpVec3") "Velocity" + ] } diff --git a/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Entity/Player/PlayerRotation.fs b/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Entity/Player/PlayerRotation.fs index 3f9883f..1c1d429 100644 --- a/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Entity/Player/PlayerRotation.fs +++ b/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Entity/Player/PlayerRotation.fs @@ -7,13 +7,22 @@ module PlayerRotation = let playerRotation = packet "PlayerRotationPacket" Play Clientbound (Since 768) { - api [ - field "Yaw" TFloat All - field "Pitch" TFloat All - ] + api + [ + field "Yaw" TFloat All + field "Pitch" TFloat All + field "RelativeYaw" TBool (Since 773) + field "RelativePitch" TBool (Since 773) + ] - wire (Since 768) [ - read "yaw" F32 "Yaw" - read "pitch" F32 "Pitch" - ] + wire (Between(768, 772)) [ read "yaw" F32 "Yaw"; read "pitch" F32 "Pitch" ] + + wire + (Since 773) + [ + read "yaw" F32 "Yaw" + read "relativeYaw" Bool "RelativeYaw" + read "pitch" F32 "Pitch" + read "relativePitch" Bool "RelativePitch" + ] } diff --git a/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Entity/SpawnEntity.fs b/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Entity/SpawnEntity.fs index 68fa7df..812cb5b 100644 --- a/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Entity/SpawnEntity.fs +++ b/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Entity/SpawnEntity.fs @@ -7,50 +7,72 @@ module SpawnEntity = let spawnEntity = packet "SpawnEntityPacket" Play Clientbound All { - api [ - field "EntityId" TInt All - field "ObjectUuid" TUuid All - field "Type" TInt All - field "X" TDouble All - field "Y" TDouble All - field "Z" TDouble All - field "Pitch" TInt All - field "Yaw" TInt All - field "HeadPitch" TInt (Since 759) - field "ObjectData" TInt All - field "VelocityX" TInt All - field "VelocityY" TInt All - field "VelocityZ" TInt All - ] + api + [ + field "EntityId" TInt All + field "ObjectUuid" TUuid All + field "Type" TInt All + field "X" TDouble All + field "Y" TDouble All + field "Z" TDouble All + field "Pitch" TInt All + field "Yaw" TInt All + field "HeadPitch" TInt (Since 759) + field "ObjectData" TInt All + field "VelocityX" TInt (Until 772) + field "VelocityY" TInt (Until 772) + field "VelocityZ" TInt (Until 772) + field "Velocity" (TNamed "LpVec3") (Since 773) + ] - wire (Until 758) [ - read "entityId" VarInt "EntityId" - read "objectUUID" Uuid "ObjectUuid" - read "type" VarInt "Type" - read "x" F64 "X" - read "y" F64 "Y" - read "z" F64 "Z" - read "pitch" I8 "Pitch" - read "yaw" I8 "Yaw" - read "objectData" I32 "ObjectData" - read "velocityX" I16 "VelocityX" - read "velocityY" I16 "VelocityY" - read "velocityZ" I16 "VelocityZ" - ] + wire + (Until 758) + [ + read "entityId" VarInt "EntityId" + read "objectUUID" Uuid "ObjectUuid" + read "type" VarInt "Type" + read "x" F64 "X" + read "y" F64 "Y" + read "z" F64 "Z" + read "pitch" I8 "Pitch" + read "yaw" I8 "Yaw" + read "objectData" I32 "ObjectData" + read "velocityX" I16 "VelocityX" + read "velocityY" I16 "VelocityY" + read "velocityZ" I16 "VelocityZ" + ] - wire (Since 759) [ - read "entityId" VarInt "EntityId" - read "objectUUID" Uuid "ObjectUuid" - read "type" VarInt "Type" - read "x" F64 "X" - read "y" F64 "Y" - read "z" F64 "Z" - read "pitch" I8 "Pitch" - read "yaw" I8 "Yaw" - read "headPitch" I8 "HeadPitch" - read "objectData" VarInt "ObjectData" - read "velocityX" I16 "VelocityX" - read "velocityY" I16 "VelocityY" - read "velocityZ" I16 "VelocityZ" - ] + wire + (Between(759, 772)) + [ + read "entityId" VarInt "EntityId" + read "objectUUID" Uuid "ObjectUuid" + read "type" VarInt "Type" + read "x" F64 "X" + read "y" F64 "Y" + read "z" F64 "Z" + read "pitch" I8 "Pitch" + read "yaw" I8 "Yaw" + read "headPitch" I8 "HeadPitch" + read "objectData" VarInt "ObjectData" + read "velocityX" I16 "VelocityX" + read "velocityY" I16 "VelocityY" + read "velocityZ" I16 "VelocityZ" + ] + + wire + (Since 773) + [ + read "entityId" VarInt "EntityId" + read "objectUUID" Uuid "ObjectUuid" + read "type" VarInt "Type" + read "x" F64 "X" + read "y" F64 "Y" + read "z" F64 "Z" + read "velocity" (Named "LpVec3") "Velocity" + read "pitch" I8 "Pitch" + read "yaw" I8 "Yaw" + read "headPitch" I8 "HeadPitch" + read "objectData" VarInt "ObjectData" + ] } diff --git a/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Level/Explosion.fs b/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Level/Explosion.fs index db86cad..4a85348 100644 --- a/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Level/Explosion.fs +++ b/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Level/Explosion.fs @@ -7,86 +7,126 @@ module Explosion = let explosion = packet "ExplosionPacket" Play Clientbound All { - api [ - field "X" TDouble All - field "Y" TDouble All - field "Z" TDouble All - field "Radius" TFloat (Until 767) - field "AffectedBlockOffsets" (TArray(TNamed "ExplosionBlockOffset")) (Until 767) - field "PlayerMotionX" TFloat (Until 767) - field "PlayerMotionY" TFloat (Until 767) - field "PlayerMotionZ" TFloat (Until 767) - field "BlockInteractionType" TInt (Between(765, 767)) - field "SmallExplosionParticle" (TNamed "Particle") (Between(765, 767)) - field "LargeExplosionParticle" (TNamed "Particle") (Between(765, 767)) - field "Sound" (TNamed "ItemSoundHolder") (Since 765) - field "PlayerKnockback" (TOption(TNamed "Vec3f64")) (Since 768) - field "ExplosionParticle" (TNamed "Particle") (Since 768) - ] + api + [ + field "X" TDouble (Until 772) + field "Y" TDouble (Until 772) + field "Z" TDouble (Until 772) + field "Radius" TFloat (Until 767) + field "AffectedBlockOffsets" (TArray(TNamed "ExplosionBlockOffset")) (Until 767) + field "PlayerMotionX" TFloat (Until 767) + field "PlayerMotionY" TFloat (Until 767) + field "PlayerMotionZ" TFloat (Until 767) + field "BlockInteractionType" TInt (Between(765, 767)) + field "SmallExplosionParticle" (TNamed "Particle") (Between(765, 767)) + field "LargeExplosionParticle" (TNamed "Particle") (Between(765, 767)) + field "Sound" (TNamed "ItemSoundHolder") (Since 765) + field "PlayerKnockback" (TOption(TNamed "Vec3f64")) (Since 768) + field "ExplosionParticle" (TNamed "Particle") (Since 768) + field "Center" (TNamed "Vec3f64") (Since 773) + field "BlockCount" TInt (Since 773) + field "BlockParticles" (TArray(TNamed "ExplosionParticleEntry")) (Since 773) + ] - wire (Until 754) [ - read "x" F32 "X" - read "y" F32 "Y" - read "z" F32 "Z" - read "radius" F32 "Radius" - read "affectedBlockOffsets" (Array(Named "ExplosionBlockOffset", TypedCount I32)) "AffectedBlockOffsets" - read "playerMotionX" F32 "PlayerMotionX" - read "playerMotionY" F32 "PlayerMotionY" - read "playerMotionZ" F32 "PlayerMotionZ" - ] + wire + (Until 754) + [ + read "x" F32 "X" + read "y" F32 "Y" + read "z" F32 "Z" + read "radius" F32 "Radius" + read + "affectedBlockOffsets" + (Array(Named "ExplosionBlockOffset", TypedCount I32)) + "AffectedBlockOffsets" + read "playerMotionX" F32 "PlayerMotionX" + read "playerMotionY" F32 "PlayerMotionY" + read "playerMotionZ" F32 "PlayerMotionZ" + ] - wire (Between(755, 760)) [ - read "x" F32 "X" - read "y" F32 "Y" - read "z" F32 "Z" - read "radius" F32 "Radius" - read "affectedBlockOffsets" (Array(Named "ExplosionBlockOffset", VarIntCount)) "AffectedBlockOffsets" - read "playerMotionX" F32 "PlayerMotionX" - read "playerMotionY" F32 "PlayerMotionY" - read "playerMotionZ" F32 "PlayerMotionZ" - ] + wire + (Between(755, 760)) + [ + read "x" F32 "X" + read "y" F32 "Y" + read "z" F32 "Z" + read "radius" F32 "Radius" + read + "affectedBlockOffsets" + (Array(Named "ExplosionBlockOffset", VarIntCount)) + "AffectedBlockOffsets" + read "playerMotionX" F32 "PlayerMotionX" + read "playerMotionY" F32 "PlayerMotionY" + read "playerMotionZ" F32 "PlayerMotionZ" + ] - wire (Between(761, 764)) [ - read "x" F64 "X" - read "y" F64 "Y" - read "z" F64 "Z" - read "radius" F32 "Radius" - read "affectedBlockOffsets" (Array(Named "ExplosionBlockOffset", VarIntCount)) "AffectedBlockOffsets" - read "playerMotionX" F32 "PlayerMotionX" - read "playerMotionY" F32 "PlayerMotionY" - read "playerMotionZ" F32 "PlayerMotionZ" - ] + wire + (Between(761, 764)) + [ + read "x" F64 "X" + read "y" F64 "Y" + read "z" F64 "Z" + read "radius" F32 "Radius" + read + "affectedBlockOffsets" + (Array(Named "ExplosionBlockOffset", VarIntCount)) + "AffectedBlockOffsets" + read "playerMotionX" F32 "PlayerMotionX" + read "playerMotionY" F32 "PlayerMotionY" + read "playerMotionZ" F32 "PlayerMotionZ" + ] - wire (Between(765, 767)) [ - read "x" F64 "X" - read "y" F64 "Y" - read "z" F64 "Z" - read "radius" F32 "Radius" - read "affectedBlockOffsets" (Array(Named "ExplosionBlockOffset", VarIntCount)) "AffectedBlockOffsets" - read "playerMotionX" F32 "PlayerMotionX" - read "playerMotionY" F32 "PlayerMotionY" - read "playerMotionZ" F32 "PlayerMotionZ" - read "block_interaction_type" VarInt "BlockInteractionType" - read "small_explosion_particle" (Named "Particle") "SmallExplosionParticle" - read "large_explosion_particle" (Named "Particle") "LargeExplosionParticle" - read "sound" (Named "ItemSoundHolder") "Sound" - ] + wire + (Between(765, 767)) + [ + read "x" F64 "X" + read "y" F64 "Y" + read "z" F64 "Z" + read "radius" F32 "Radius" + read + "affectedBlockOffsets" + (Array(Named "ExplosionBlockOffset", VarIntCount)) + "AffectedBlockOffsets" + read "playerMotionX" F32 "PlayerMotionX" + read "playerMotionY" F32 "PlayerMotionY" + read "playerMotionZ" F32 "PlayerMotionZ" + read "block_interaction_type" VarInt "BlockInteractionType" + read "small_explosion_particle" (Named "Particle") "SmallExplosionParticle" + read "large_explosion_particle" (Named "Particle") "LargeExplosionParticle" + read "sound" (Named "ItemSoundHolder") "Sound" + ] - wire (Between(768, 768)) [ - read "x" F64 "X" - read "y" F64 "Y" - read "z" F64 "Z" - read "playerKnockback" (Option(Named "Vec3f")) "PlayerKnockback" - read "explosionParticle" (Named "Particle") "ExplosionParticle" - read "sound" (Named "ItemSoundHolder") "Sound" - ] + wire + (Between(768, 768)) + [ + read "x" F64 "X" + read "y" F64 "Y" + read "z" F64 "Z" + read "playerKnockback" (Option(Named "Vec3f")) "PlayerKnockback" + read "explosionParticle" (Named "Particle") "ExplosionParticle" + read "sound" (Named "ItemSoundHolder") "Sound" + ] - wire (Since 769) [ - read "x" F64 "X" - read "y" F64 "Y" - read "z" F64 "Z" - read "playerKnockback" (Option(Named "Vec3f64")) "PlayerKnockback" - read "explosionParticle" (Named "Particle") "ExplosionParticle" - read "sound" (Named "ItemSoundHolder") "Sound" - ] + wire + (Between(769, 772)) + [ + read "x" F64 "X" + read "y" F64 "Y" + read "z" F64 "Z" + read "playerKnockback" (Option(Named "Vec3f64")) "PlayerKnockback" + read "explosionParticle" (Named "Particle") "ExplosionParticle" + read "sound" (Named "ItemSoundHolder") "Sound" + ] + + wire + (Since 773) + [ + read "center" (Named "Vec3f64") "Center" + read "radius" F32 "Radius" + read "blockCount" I32 "BlockCount" + read "playerKnockback" (Option(Named "Vec3f64")) "PlayerKnockback" + read "explosionParticle" (Named "Particle") "ExplosionParticle" + read "sound" (Named "ItemSoundHolder") "Sound" + read "blockParticles" (Array(Named "ExplosionParticleEntry", VarIntCount)) "BlockParticles" + ] } diff --git a/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Level/GameRuleValues.fs b/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Level/GameRuleValues.fs new file mode 100644 index 0000000..a1fab33 --- /dev/null +++ b/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Level/GameRuleValues.fs @@ -0,0 +1,12 @@ +namespace McProtocol.Spec + +open McProtocol.Dsl + +[] +module GameRuleValues = + + let gameRuleValues = + packet "GameRuleValuesPacket" Play Clientbound (Since 775) { + api [ field "Values" (TArray(TNamed "GameRule")) All ] + wire (Since 775) [ read "values" (Array(Named "GameRule", VarIntCount)) "Values" ] + } diff --git a/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Level/GameTestHighlightPos.fs b/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Level/GameTestHighlightPos.fs new file mode 100644 index 0000000..620fd2d --- /dev/null +++ b/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Level/GameTestHighlightPos.fs @@ -0,0 +1,22 @@ +namespace McProtocol.Spec + +open McProtocol.Dsl + +[] +module GameTestHighlightPos = + + let gameTestHighlightPos = + packet "GameTestHighlightPosPacket" Play Clientbound (Since 773) { + api + [ + field "AbsolutePos" (TNamed "Position") All + field "RelativePos" (TNamed "Position") All + ] + + wire + (Since 773) + [ + read "absolutePos" (Named "Position") "AbsolutePos" + read "relativePos" (Named "Position") "RelativePos" + ] + } diff --git a/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Level/SpawnPosition.fs b/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Level/SpawnPosition.fs index dffa157..aa54d80 100644 --- a/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Level/SpawnPosition.fs +++ b/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Level/SpawnPosition.fs @@ -7,17 +7,16 @@ module SpawnPosition = let spawnPosition = packet "SpawnPositionPacket" Play Clientbound All { - api [ - field "Location" (TNamed "Position") All - field "Angle" TFloat (Since 755) - ] + api + [ + field "Location" (TNamed "Position") (Until 772) + field "Angle" TFloat (Between(755, 772)) + field "RespawnData" (TNamed "RespawnData") (Since 773) + ] - wire (Until 754) [ - read "location" (Named "Position") "Location" - ] + wire (Until 754) [ read "location" (Named "Position") "Location" ] - wire (Since 755) [ - read "location" (Named "Position") "Location" - read "angle" F32 "Angle" - ] + wire (Between(755, 772)) [ read "location" (Named "Position") "Location"; read "angle" F32 "Angle" ] + + wire (Since 773) [ read "respawnData" (Named "RespawnData") "RespawnData" ] } diff --git a/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Level/UpdateTime.fs b/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Level/UpdateTime.fs index 3009573..b5d70d7 100644 --- a/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Level/UpdateTime.fs +++ b/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Level/UpdateTime.fs @@ -7,20 +7,28 @@ module UpdateTime = let updateTime = packet "UpdateTimePacket" Play Clientbound All { - api [ - field "Age" TLong All - field "Time" TLong All - field "TickDayTime" TBool (Since 768) - ] + api + [ + field "Age" TLong All + field "Time" TLong (Until 774) + field "TickDayTime" TBool (Between(768, 774)) + field "ClockUpdates" (TArray(TNamed "ClockUpdate")) (Since 775) + ] - wire (Until 767) [ - read "age" I64 "Age" - read "time" I64 "Time" - ] + wire (Until 767) [ read "age" I64 "Age"; read "time" I64 "Time" ] - wire (Since 768) [ - read "age" I64 "Age" - read "time" I64 "Time" - read "tickDayTime" Bool "TickDayTime" - ] + wire + (Between(768, 774)) + [ + read "age" I64 "Age" + read "time" I64 "Time" + read "tickDayTime" Bool "TickDayTime" + ] + + wire + (Since 775) + [ + read "age" I64 "Age" + read "clockUpdates" (Array(Named "ClockUpdate", VarIntCount)) "ClockUpdates" + ] } diff --git a/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Login.fs b/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Login.fs new file mode 100644 index 0000000..0337bdc --- /dev/null +++ b/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/Login.fs @@ -0,0 +1,218 @@ +namespace McProtocol.Spec + +open McProtocol.Dsl + +[] +module LoginPlay = + + let loginPlay = + packet "LoginPacket" Play Clientbound All { + api + [ + field "EntityId" TInt All + field "IsHardcore" TBool (Since 751) + field "Gamemode" TInt (Until 765) + field "PreviousGamemode" TInt (Until 765) + field "WorldNames" (TArray TString) All + field "DimensionCodec" TNbt (Until 763) + field "Dimension" TString (Until 736) + field "DimensionNbt" TNbt (Between(751, 758)) + field "WorldType" TString (Between(759, 765)) + field "WorldName" TString (Until 765) + field "HashedSeed" TLong (Until 765) + field "MaxPlayers" TInt All + field "ViewDistance" TInt All + field "SimulationDistance" TInt (Since 757) + field "ReducedDebugInfo" TBool All + field "EnableRespawnScreen" TBool All + field "IsDebug" TBool (Until 765) + field "IsFlat" TBool (Until 765) + field "Death" (TOption(TNamed "DeathLocation")) (Between(759, 765)) + field "PortalCooldown" TInt (Between(763, 765)) + field "DoLimitedCrafting" TBool (Since 764) + field "WorldState" (TNamed "SpawnInfo") (Since 766) + field "OnlineMode" TBool (Since 776) + field "EnforcesSecureChat" TBool (Since 766) + ] + + wire + (Until 736) + [ + read "entityId" I32 "EntityId" + read "gameMode" U8 "Gamemode" + read "previousGameMode" U8 "PreviousGamemode" + read "worldNames" (Array(Str, VarIntCount)) "WorldNames" + read "dimensionCodec" Nbt "DimensionCodec" + read "dimension" Str "Dimension" + read "worldName" Str "WorldName" + read "hashedSeed" I64 "HashedSeed" + read "maxPlayers" U8 "MaxPlayers" + read "viewDistance" VarInt "ViewDistance" + read "reducedDebugInfo" Bool "ReducedDebugInfo" + read "enableRespawnScreen" Bool "EnableRespawnScreen" + read "isDebug" Bool "IsDebug" + read "isFlat" Bool "IsFlat" + ] + + wire + (Between(751, 754)) + [ + read "entityId" I32 "EntityId" + read "isHardcore" Bool "IsHardcore" + read "gameMode" U8 "Gamemode" + read "previousGameMode" U8 "PreviousGamemode" + read "worldNames" (Array(Str, VarIntCount)) "WorldNames" + read "dimensionCodec" Nbt "DimensionCodec" + read "dimension" Nbt "DimensionNbt" + read "worldName" Str "WorldName" + read "hashedSeed" I64 "HashedSeed" + read "maxPlayers" VarInt "MaxPlayers" + read "viewDistance" VarInt "ViewDistance" + read "reducedDebugInfo" Bool "ReducedDebugInfo" + read "enableRespawnScreen" Bool "EnableRespawnScreen" + read "isDebug" Bool "IsDebug" + read "isFlat" Bool "IsFlat" + ] + + wire + (Between(755, 756)) + [ + read "entityId" I32 "EntityId" + read "isHardcore" Bool "IsHardcore" + read "gameMode" U8 "Gamemode" + read "previousGameMode" I8 "PreviousGamemode" + read "worldNames" (Array(Str, VarIntCount)) "WorldNames" + read "dimensionCodec" Nbt "DimensionCodec" + read "dimension" Nbt "DimensionNbt" + read "worldName" Str "WorldName" + read "hashedSeed" I64 "HashedSeed" + read "maxPlayers" VarInt "MaxPlayers" + read "viewDistance" VarInt "ViewDistance" + read "reducedDebugInfo" Bool "ReducedDebugInfo" + read "enableRespawnScreen" Bool "EnableRespawnScreen" + read "isDebug" Bool "IsDebug" + read "isFlat" Bool "IsFlat" + ] + + wire + (Between(757, 758)) + [ + read "entityId" I32 "EntityId" + read "isHardcore" Bool "IsHardcore" + read "gameMode" U8 "Gamemode" + read "previousGameMode" I8 "PreviousGamemode" + read "worldNames" (Array(Str, VarIntCount)) "WorldNames" + read "dimensionCodec" Nbt "DimensionCodec" + read "dimension" Nbt "DimensionNbt" + read "worldName" Str "WorldName" + read "hashedSeed" I64 "HashedSeed" + read "maxPlayers" VarInt "MaxPlayers" + read "viewDistance" VarInt "ViewDistance" + read "simulationDistance" VarInt "SimulationDistance" + read "reducedDebugInfo" Bool "ReducedDebugInfo" + read "enableRespawnScreen" Bool "EnableRespawnScreen" + read "isDebug" Bool "IsDebug" + read "isFlat" Bool "IsFlat" + ] + + wire + (Between(759, 762)) + [ + read "entityId" I32 "EntityId" + read "isHardcore" Bool "IsHardcore" + read "gameMode" U8 "Gamemode" + read "previousGameMode" I8 "PreviousGamemode" + read "worldNames" (Array(Str, VarIntCount)) "WorldNames" + read "dimensionCodec" Nbt "DimensionCodec" + read "worldType" Str "WorldType" + read "worldName" Str "WorldName" + read "hashedSeed" I64 "HashedSeed" + read "maxPlayers" VarInt "MaxPlayers" + read "viewDistance" VarInt "ViewDistance" + read "simulationDistance" VarInt "SimulationDistance" + read "reducedDebugInfo" Bool "ReducedDebugInfo" + read "enableRespawnScreen" Bool "EnableRespawnScreen" + read "isDebug" Bool "IsDebug" + read "isFlat" Bool "IsFlat" + read "death" (Option(Named "DeathLocation")) "Death" + ] + + wire + (Between(763, 763)) + [ + read "entityId" I32 "EntityId" + read "isHardcore" Bool "IsHardcore" + read "gameMode" U8 "Gamemode" + read "previousGameMode" I8 "PreviousGamemode" + read "worldNames" (Array(Str, VarIntCount)) "WorldNames" + read "dimensionCodec" Nbt "DimensionCodec" + read "worldType" Str "WorldType" + read "worldName" Str "WorldName" + read "hashedSeed" I64 "HashedSeed" + read "maxPlayers" VarInt "MaxPlayers" + read "viewDistance" VarInt "ViewDistance" + read "simulationDistance" VarInt "SimulationDistance" + read "reducedDebugInfo" Bool "ReducedDebugInfo" + read "enableRespawnScreen" Bool "EnableRespawnScreen" + read "isDebug" Bool "IsDebug" + read "isFlat" Bool "IsFlat" + read "death" (Option(Named "DeathLocation")) "Death" + read "portalCooldown" VarInt "PortalCooldown" + ] + + wire + (Between(764, 765)) + [ + read "entityId" I32 "EntityId" + read "isHardcore" Bool "IsHardcore" + read "worldNames" (Array(Str, VarIntCount)) "WorldNames" + read "maxPlayers" VarInt "MaxPlayers" + read "viewDistance" VarInt "ViewDistance" + read "simulationDistance" VarInt "SimulationDistance" + read "reducedDebugInfo" Bool "ReducedDebugInfo" + read "enableRespawnScreen" Bool "EnableRespawnScreen" + read "doLimitedCrafting" Bool "DoLimitedCrafting" + read "worldType" Str "WorldType" + read "worldName" Str "WorldName" + read "hashedSeed" I64 "HashedSeed" + read "gameMode" U8 "Gamemode" + read "previousGameMode" I8 "PreviousGamemode" + read "isDebug" Bool "IsDebug" + read "isFlat" Bool "IsFlat" + read "death" (Option(Named "DeathLocation")) "Death" + read "portalCooldown" VarInt "PortalCooldown" + ] + + wire + (Between(766, 775)) + [ + read "entityId" I32 "EntityId" + read "isHardcore" Bool "IsHardcore" + read "worldNames" (Array(Str, VarIntCount)) "WorldNames" + read "maxPlayers" VarInt "MaxPlayers" + read "viewDistance" VarInt "ViewDistance" + read "simulationDistance" VarInt "SimulationDistance" + read "reducedDebugInfo" Bool "ReducedDebugInfo" + read "enableRespawnScreen" Bool "EnableRespawnScreen" + read "doLimitedCrafting" Bool "DoLimitedCrafting" + read "worldState" (Named "SpawnInfo") "WorldState" + read "enforcesSecureChat" Bool "EnforcesSecureChat" + ] + + wire + (Since 776) + [ + read "entityId" I32 "EntityId" + read "isHardcore" Bool "IsHardcore" + read "worldNames" (Array(Str, VarIntCount)) "WorldNames" + read "maxPlayers" VarInt "MaxPlayers" + read "viewDistance" VarInt "ViewDistance" + read "simulationDistance" VarInt "SimulationDistance" + read "reducedDebugInfo" Bool "ReducedDebugInfo" + read "enableRespawnScreen" Bool "EnableRespawnScreen" + read "doLimitedCrafting" Bool "DoLimitedCrafting" + read "worldState" (Named "SpawnInfo") "WorldState" + read "onlineMode" Bool "OnlineMode" + read "enforcesSecureChat" Bool "EnforcesSecureChat" + ] + } diff --git a/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/LowDiskSpaceWarning.fs b/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/LowDiskSpaceWarning.fs new file mode 100644 index 0000000..41b58fa --- /dev/null +++ b/minecraft-protocol-fs/Spec/Packets/Play/Clientbound/LowDiskSpaceWarning.fs @@ -0,0 +1,12 @@ +namespace McProtocol.Spec + +open McProtocol.Dsl + +[] +module LowDiskSpaceWarning = + + let lowDiskSpaceWarning = + packet "LowDiskSpaceWarningPacket" Play Clientbound (Since 775) { + api [] + wire (Since 775) [] + } diff --git a/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/Chat/ChatCommandSigned.fs b/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/Chat/ChatCommandSigned.fs index 2a1f74b..f9ccb8e 100644 --- a/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/Chat/ChatCommandSigned.fs +++ b/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/Chat/ChatCommandSigned.fs @@ -7,32 +7,37 @@ module ChatCommandSigned = let chatCommandSigned = packet "ChatCommandSignedPacket" Play Serverbound (Since 766) { - api [ - field "Command" TString All - field "Timestamp" TLong All - field "Salt" TLong All - field "ArgumentSignatures" (TArray(TNamed "ArgumentSignature")) All - field "MessageCount" TInt All - field "Acknowledged" TBytes All - field "Checksum" TInt (Since 770) - ] + api + [ + field "Command" TString All + field "Timestamp" TLong All + field "Salt" TLong All + field "ArgumentSignatures" (TArray(TNamed "ArgumentSignature")) All + field "MessageCount" TInt All + field "Acknowledged" TBytes All + field "Checksum" TInt (Since 770) + ] - wire (Between(766, 769)) [ - read "command" Str "Command" - read "timestamp" I64 "Timestamp" - read "salt" I64 "Salt" - read "argumentSignatures" (Array(Named "ArgumentSignature", VarIntCount)) "ArgumentSignatures" - read "messageCount" VarInt "MessageCount" - read "acknowledged" (FixedBytes 3) "Acknowledged" - ] + wire + (Between(766, 769)) + [ + read "command" Str "Command" + read "timestamp" I64 "Timestamp" + read "salt" I64 "Salt" + read "argumentSignatures" (Array(Named "ArgumentSignature", VarIntCount)) "ArgumentSignatures" + read "messageCount" VarInt "MessageCount" + read "acknowledged" (FixedBytes 3) "Acknowledged" + ] - wire (Since 770) [ - read "command" Str "Command" - read "timestamp" I64 "Timestamp" - read "salt" I64 "Salt" - read "argumentSignatures" (Array(Named "ArgumentSignature", VarIntCount)) "ArgumentSignatures" - read "messageCount" VarInt "MessageCount" - read "acknowledged" (FixedBytes 3) "Acknowledged" - read "checksum" I8 "Checksum" - ] + wire + (Since 770) + [ + read "command" Str "Command" + read "timestamp" I64 "Timestamp" + read "salt" I64 "Salt" + read "argumentSignatures" (Array(Named "ArgumentSignature", VarIntCount)) "ArgumentSignatures" + read "messageCount" VarInt "MessageCount" + read "acknowledged" (FixedBytes 3) "Acknowledged" + read "checksum" U8 "Checksum" + ] } diff --git a/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/CookieResponse.fs b/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/CookieResponse.fs index e1da130..60f6b4e 100644 --- a/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/CookieResponse.fs +++ b/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/CookieResponse.fs @@ -7,13 +7,11 @@ module CookieResponsePlay = let cookieResponsePlay = packet "CookieResponsePacket" Play Serverbound (Since 766) { - api [ - field "Key" TString All - field "Value" (TOption TBytes) All - ] + api [ field "Key" TString All; field "Value" (TOption TBytes) All ] - wire (Since 766) [ - read "key" Str "Key" - read "value" (Option ByteArray) "Value" - ] + wire (Between(766, 771)) [ read "key" Str "Key"; read "value" (Option ByteArray) "Value" ] + + wire (Between(772, 772)) [ read "key" Str "Key"; read "value" ByteArray "Value" ] + + wire (Since 773) [ read "key" Str "Key"; read "value" (Option ByteArray) "Value" ] } diff --git a/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/DebugSampleSubscription.fs b/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/DebugSampleSubscription.fs index 83498db..2fb3eec 100644 --- a/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/DebugSampleSubscription.fs +++ b/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/DebugSampleSubscription.fs @@ -6,12 +6,8 @@ open McProtocol.Dsl module DebugSampleSubscription = let debugSampleSubscription = - packet "DebugSampleSubscriptionPacket" Play Serverbound (Since 766) { - api [ - field "Type" TInt All - ] + packet "DebugSampleSubscriptionPacket" Play Serverbound (Between(766, 772)) { + api [ field "Type" TInt All ] - wire (Since 766) [ - read "type" VarInt "Type" - ] + wire (Between(766, 772)) [ read "type" VarInt "Type" ] } diff --git a/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/Inventory/EnchantItem.fs b/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/Inventory/EnchantItem.fs index db28fa8..85bf4d2 100644 --- a/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/Inventory/EnchantItem.fs +++ b/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/Inventory/EnchantItem.fs @@ -7,23 +7,11 @@ module EnchantItem = let enchantItem = packet "EnchantItemPacket" Play Serverbound All { - api [ - field "WindowId" TInt All - field "Enchantment" TInt All - ] + api [ field "WindowId" TInt All; field "Enchantment" TInt All ] - wire (Until 766) [ - read "windowId" I8 "WindowId" - read "enchantment" I8 "Enchantment" - ] + wire (Until 766) [ read "windowId" I8 "WindowId"; read "enchantment" I8 "Enchantment" ] - wire (Between(767, 767)) [ - read "windowId" U8 "WindowId" - read "enchantment" I8 "Enchantment" - ] + wire (Between(767, 767)) [ read "windowId" U8 "WindowId"; read "enchantment" VarInt "Enchantment" ] - wire (Since 768) [ - read "windowId" VarInt "WindowId" - read "enchantment" I8 "Enchantment" - ] + wire (Since 768) [ read "windowId" VarInt "WindowId"; read "enchantment" VarInt "Enchantment" ] } diff --git a/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/Level/SetGameRule.fs b/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/Level/SetGameRule.fs new file mode 100644 index 0000000..a22c6b2 --- /dev/null +++ b/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/Level/SetGameRule.fs @@ -0,0 +1,12 @@ +namespace McProtocol.Spec + +open McProtocol.Dsl + +[] +module SetGameRule = + + let setGameRule = + packet "SetGameRulePacket" Play Serverbound (Since 775) { + api [ field "Entries" (TArray(TNamed "GameRule")) All ] + wire (Since 775) [ read "entries" (Array(Named "GameRule", VarIntCount)) "Entries" ] + } diff --git a/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/Player/Attack.fs b/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/Player/Attack.fs new file mode 100644 index 0000000..97d8a15 --- /dev/null +++ b/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/Player/Attack.fs @@ -0,0 +1,13 @@ +namespace McProtocol.Spec + +open McProtocol.Dsl + +[] +module Attack = + + let attack = + packet "AttackPacket" Play Serverbound (Since 775) { + api [ field "EntityId" TInt All ] + + wire (Since 775) [ read "entityId" VarInt "EntityId" ] + } diff --git a/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/Player/SpectateEntity.fs b/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/Player/SpectateEntity.fs new file mode 100644 index 0000000..9d62b84 --- /dev/null +++ b/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/Player/SpectateEntity.fs @@ -0,0 +1,13 @@ +namespace McProtocol.Spec + +open McProtocol.Dsl + +[] +module SpectateEntity = + + let spectateEntity = + packet "SpectateEntityPacket" Play Serverbound (Since 775) { + api [ field "EntityId" TInt All ] + + wire (Since 775) [ read "entityId" VarInt "EntityId" ] + } diff --git a/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/Player/UseEntity.fs b/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/Player/UseEntity.fs new file mode 100644 index 0000000..9e8061d --- /dev/null +++ b/minecraft-protocol-fs/Spec/Packets/Play/Serverbound/Player/UseEntity.fs @@ -0,0 +1,36 @@ +namespace McProtocol.Spec + +open McProtocol.Dsl + +[] +module UseEntity = + + let useEntity = + packet "UseEntityPacket" Play Serverbound All { + api + [ + field "Target" TInt All + field "Action" (TUnion "InteractAction") (Until 774) + field "Hand" TInt (Since 775) + field "Location" (TNamed "LpVec3") (Since 775) + field "Sneaking" TBool All + ] + + wire + (Until 774) + [ + read "target" VarInt "Target" + read "mouse" VarInt "_mouse" + readUnion "_mouse" "InteractAction" "Action" + read "sneaking" Bool "Sneaking" + ] + + wire + (Since 775) + [ + read "target" VarInt "Target" + read "hand" VarInt "Hand" + read "location" (Named "LpVec3") "Location" + read "sneaking" Bool "Sneaking" + ] + } diff --git a/minecraft-protocol-fs/Spec/Types/Level/ClockUpdate.fs b/minecraft-protocol-fs/Spec/Types/Level/ClockUpdate.fs new file mode 100644 index 0000000..025724f --- /dev/null +++ b/minecraft-protocol-fs/Spec/Types/Level/ClockUpdate.fs @@ -0,0 +1,17 @@ +namespace McProtocol.Spec + +open McProtocol.Dsl + +[] +module ClockUpdate = + + let clockUpdate = + record + "ClockUpdate" + (Since 775) + [ + col "id" VarInt + col "totalTicks" VarLong + col "partialTick" F32 + col "rate" F32 + ] diff --git a/minecraft-protocol-fs/Spec/Types/Level/ExplosionParticleEntry.fs b/minecraft-protocol-fs/Spec/Types/Level/ExplosionParticleEntry.fs new file mode 100644 index 0000000..1390bf9 --- /dev/null +++ b/minecraft-protocol-fs/Spec/Types/Level/ExplosionParticleEntry.fs @@ -0,0 +1,9 @@ +namespace McProtocol.Spec + +open McProtocol.Dsl + +[] +module ExplosionParticleEntry = + + let explosionParticleEntry = + record "ExplosionParticleEntry" (Since 773) [ col "data" (Named "ExplosionParticleInfo"); col "weight" VarInt ] diff --git a/minecraft-protocol-fs/Spec/Types/Level/ExplosionParticleInfo.fs b/minecraft-protocol-fs/Spec/Types/Level/ExplosionParticleInfo.fs new file mode 100644 index 0000000..6ebed39 --- /dev/null +++ b/minecraft-protocol-fs/Spec/Types/Level/ExplosionParticleInfo.fs @@ -0,0 +1,12 @@ +namespace McProtocol.Spec + +open McProtocol.Dsl + +[] +module ExplosionParticleInfo = + + let explosionParticleInfo = + record + "ExplosionParticleInfo" + (Since 773) + [ col "particle" (Named "Particle"); col "scaling" F32; col "speed" F32 ] diff --git a/minecraft-protocol-fs/Spec/Types/Level/GameRule.fs b/minecraft-protocol-fs/Spec/Types/Level/GameRule.fs new file mode 100644 index 0000000..f27096c --- /dev/null +++ b/minecraft-protocol-fs/Spec/Types/Level/GameRule.fs @@ -0,0 +1,8 @@ +namespace McProtocol.Spec + +open McProtocol.Dsl + +[] +module GameRule = + + let gameRule = record "GameRule" (Since 775) [ col "name" Str; col "value" Str ] diff --git a/minecraft-protocol-fs/Spec/Types/Level/GlobalPos.fs b/minecraft-protocol-fs/Spec/Types/Level/GlobalPos.fs new file mode 100644 index 0000000..53afc0f --- /dev/null +++ b/minecraft-protocol-fs/Spec/Types/Level/GlobalPos.fs @@ -0,0 +1,9 @@ +namespace McProtocol.Spec + +open McProtocol.Dsl + +[] +module GlobalPos = + + let globalPos = + record "GlobalPos" (Since 773) [ col "dimensionName" Str; col "location" (Named "Position") ] diff --git a/minecraft-protocol-fs/Spec/Types/Level/RespawnData.fs b/minecraft-protocol-fs/Spec/Types/Level/RespawnData.fs new file mode 100644 index 0000000..ac2c47f --- /dev/null +++ b/minecraft-protocol-fs/Spec/Types/Level/RespawnData.fs @@ -0,0 +1,9 @@ +namespace McProtocol.Spec + +open McProtocol.Dsl + +[] +module RespawnData = + + let respawnData = + record "RespawnData" (Since 773) [ col "globalPos" (Named "GlobalPos"); col "yaw" F32; col "pitch" F32 ] diff --git a/minecraft-protocol-fs/Spec/Unions/Codegen/UnionShapeProbe.fs b/minecraft-protocol-fs/Spec/Unions/Codegen/UnionShapeProbe.fs new file mode 100644 index 0000000..79d61f2 --- /dev/null +++ b/minecraft-protocol-fs/Spec/Unions/Codegen/UnionShapeProbe.fs @@ -0,0 +1,17 @@ +namespace McProtocol.Spec + +open McProtocol.Dsl + +[] +module UnionShapeProbe = + + let unionShapeProbe = + unionType "UnionShapeProbe" { + cases All [ + case1 0 "Byte" [ read "value" I8 "Value" ] + case1 1 "Int" [ read "value" VarInt "Value" ] + case1 2 "String" [ read "value" Str "Value" ] + case1 3 "Rotations" [ read "value" (Named "Rotations") "Value" ] + case1 4 "Vec3f" [ read "value" (Array(Named "Vec3f", VarIntCount)) "Value" ] + ] + } diff --git a/minecraft-protocol-fs/Spec/Unions/Entity/InteractAction.fs b/minecraft-protocol-fs/Spec/Unions/Entity/InteractAction.fs new file mode 100644 index 0000000..645d821 --- /dev/null +++ b/minecraft-protocol-fs/Spec/Unions/Entity/InteractAction.fs @@ -0,0 +1,27 @@ +namespace McProtocol.Spec + +open McProtocol.Dsl + +[] +module InteractAction = + + let interactAction = + unionType "InteractAction" { + cases + (Until 774) + [ + case1 0 "Interact" [ read "hand" VarInt "Hand" ] + + case1 1 "Attack" [] + + case1 + 2 + "InteractAt" + [ + read "x" F32 "X" + read "y" F32 "Y" + read "z" F32 "Z" + read "hand" VarInt "Hand" + ] + ] + } diff --git a/minecraft-protocol-fs/Spec/Unions/Scoreboard/TeamAction.fs b/minecraft-protocol-fs/Spec/Unions/Scoreboard/TeamAction.fs index 243a340..ebca851 100644 --- a/minecraft-protocol-fs/Spec/Unions/Scoreboard/TeamAction.fs +++ b/minecraft-protocol-fs/Spec/Unions/Scoreboard/TeamAction.fs @@ -7,65 +7,75 @@ module TeamAction = let teamAction = unionType "TeamAction" { - cases (Until 764) [ - case1 0 "Created" [ - read "name" Str "Name" - read "friendlyFire" I8 "FriendlyFire" - read "nameTagVis" Str "NameTagVisibility" - read "collisionRule" Str "CollisionRule" - read "formatting" VarInt "Formatting" - read "prefix" Str "Prefix" - read "suffix" Str "Suffix" - read "players" (Array(Str, VarIntCount)) "Players" - ] + cases + (Until 764) + [ + case1 + 0 + "Created" + [ + read "name" Str "Name" + read "friendlyFire" I8 "FriendlyFire" + read "nameTagVis" Str "NameTagVisibility" + read "collisionRule" Str "CollisionRule" + read "formatting" VarInt "Formatting" + read "prefix" Str "Prefix" + read "suffix" Str "Suffix" + read "players" (Array(Str, VarIntCount)) "Players" + ] - case1 1 "Removed" [] + case1 1 "Removed" [] - case1 2 "Updated" [ - read "name" Str "Name" - read "friendlyFire" I8 "FriendlyFire" - read "nameTagVis" Str "NameTagVisibility" - read "collisionRule" Str "CollisionRule" - read "formatting" VarInt "Formatting" - read "prefix" Str "Prefix" - read "suffix" Str "Suffix" - ] + case1 + 2 + "Updated" + [ + read "name" Str "Name" + read "friendlyFire" I8 "FriendlyFire" + read "nameTagVis" Str "NameTagVisibility" + read "collisionRule" Str "CollisionRule" + read "formatting" VarInt "Formatting" + read "prefix" Str "Prefix" + read "suffix" Str "Suffix" + ] - case1 3 "PlayersAdded" [ - read "players" (Array(Str, VarIntCount)) "Players" - ] + case1 3 "PlayersAdded" [ read "players" (Array(Str, VarIntCount)) "Players" ] - case1 4 "PlayersRemoved" [ - read "players" (Array(Str, VarIntCount)) "Players" + case1 4 "PlayersRemoved" [ read "players" (Array(Str, VarIntCount)) "Players" ] ] - ] - cases (Since 771) [ - case1 0 "Created" [ - read "name" AnonNbt "Name" - discard "flags" U8 - read "nameTagVis" VarInt "NameTagVisibility" - read "collisionRule" VarInt "CollisionRule" - read "formatting" VarInt "Formatting" - read "prefix" AnonNbt "Prefix" - read "suffix" AnonNbt "Suffix" - read "players" (Array(Str, VarIntCount)) "Players" - ] + cases + (Since 771) + [ + case1 + 0 + "Created" + [ + read "name" AnonNbt "Name" + read "flags" (Named "TeamFlags") "Flags" + read "nameTagVis" VarInt "NameTagVisibility" + read "collisionRule" VarInt "CollisionRule" + read "formatting" VarInt "Formatting" + read "prefix" AnonNbt "Prefix" + read "suffix" AnonNbt "Suffix" + read "players" (Array(Str, VarIntCount)) "Players" + ] - case1 1 "Removed" [] + case1 1 "Removed" [] - case1 2 "Updated" [ - read "name" AnonNbt "Name" - discard "flags" U8 - read "nameTagVis" VarInt "NameTagVisibility" - read "collisionRule" VarInt "CollisionRule" - read "formatting" VarInt "Formatting" - read "prefix" AnonNbt "Prefix" - read "suffix" AnonNbt "Suffix" - ] + case1 + 2 + "Updated" + [ + read "name" AnonNbt "Name" + read "flags" (Named "TeamFlags") "Flags" + read "nameTagVis" VarInt "NameTagVisibility" + read "collisionRule" VarInt "CollisionRule" + read "formatting" VarInt "Formatting" + read "prefix" AnonNbt "Prefix" + read "suffix" AnonNbt "Suffix" + ] - case [3; 4] "PlayersChanged" [ - read "players" (Array(Str, VarIntCount)) "Players" + case [ 3; 4 ] "PlayersChanged" [ read "players" (Array(Str, VarIntCount)) "Players" ] ] - ] } diff --git a/minecraft-protocol-fs/Spec/protocol-ids.json b/minecraft-protocol-fs/Spec/protocol-ids.json index fb65156..6a3a192 100644 --- a/minecraft-protocol-fs/Spec/protocol-ids.json +++ b/minecraft-protocol-fs/Spec/protocol-ids.json @@ -1,14021 +1,16272 @@ -{ - "comment": "Generated from McProtoFacts /api/packets/{ns}/{dir} (protodef \"packet\" mappers of minecraft-data). Regenerate: scripts\\generate-ids-manifest.ps1 with serve-facts running.", - "packets": { - "handshaking.toServer.legacy_server_list_ping": [ - { - "from": 735, - "to": 772, - "id": "0xFE" - } - ], - "handshaking.toServer.set_protocol": [ - { - "from": 735, - "to": 772, - "id": "0x00" - } - ], - "status.toClient.ping": [ - { - "from": 735, - "to": 772, - "id": "0x01" - } - ], - "status.toClient.server_info": [ - { - "from": 735, - "to": 772, - "id": "0x00" - } - ], - "status.toServer.ping": [ - { - "from": 735, - "to": 772, - "id": "0x01" - } - ], - "status.toServer.ping_start": [ - { - "from": 735, - "to": 772, - "id": "0x00" - } - ], - "login.toClient.compress": [ - { - "from": 735, - "to": 765, - "id": "0x03" - }, - { - "from": 766, - "to": 772, - "id": "0x03" - } - ], - "login.toClient.cookie_request": [ - { - "from": 766, - "to": 772, - "id": "0x05" - } - ], - "login.toClient.disconnect": [ - { - "from": 735, - "to": 765, - "id": "0x00" - }, - { - "from": 766, - "to": 772, - "id": "0x00" - } - ], - "login.toClient.encryption_begin": [ - { - "from": 735, - "to": 765, - "id": "0x01" - }, - { - "from": 766, - "to": 772, - "id": "0x01" - } - ], - "login.toClient.login_plugin_request": [ - { - "from": 735, - "to": 765, - "id": "0x04" - }, - { - "from": 766, - "to": 772, - "id": "0x04" - } - ], - "login.toClient.success": [ - { - "from": 735, - "to": 765, - "id": "0x02" - }, - { - "from": 766, - "to": 772, - "id": "0x02" - } - ], - "login.toServer.cookie_response": [ - { - "from": 766, - "to": 772, - "id": "0x04" - } - ], - "login.toServer.encryption_begin": [ - { - "from": 735, - "to": 763, - "id": "0x01" - }, - { - "from": 764, - "to": 765, - "id": "0x01" - }, - { - "from": 766, - "to": 772, - "id": "0x01" - } - ], - "login.toServer.login_acknowledged": [ - { - "from": 764, - "to": 765, - "id": "0x03" - }, - { - "from": 766, - "to": 772, - "id": "0x03" - } - ], - "login.toServer.login_plugin_response": [ - { - "from": 735, - "to": 763, - "id": "0x02" - }, - { - "from": 764, - "to": 765, - "id": "0x02" - }, - { - "from": 766, - "to": 772, - "id": "0x02" - } - ], - "login.toServer.login_start": [ - { - "from": 735, - "to": 763, - "id": "0x00" - }, - { - "from": 764, - "to": 765, - "id": "0x00" - }, - { - "from": 766, - "to": 772, - "id": "0x00" - } - ], - "configuration.toClient.add_resource_pack": [ - { - "from": 765, - "to": 765, - "id": "0x07" - }, - { - "from": 766, - "to": 766, - "id": "0x09" - }, - { - "from": 767, - "to": 770, - "id": "0x09" - }, - { - "from": 771, - "to": 772, - "id": "0x09" - } - ], - "configuration.toClient.clear_dialog": [ - { - "from": 771, - "to": 772, - "id": "0x11" - } - ], - "configuration.toClient.cookie_request": [ - { - "from": 766, - "to": 766, - "id": "0x00" - }, - { - "from": 767, - "to": 770, - "id": "0x00" - }, - { - "from": 771, - "to": 772, - "id": "0x00" - } - ], - "configuration.toClient.custom_payload": [ - { - "from": 764, - "to": 764, - "id": "0x00" - }, - { - "from": 765, - "to": 765, - "id": "0x00" - }, - { - "from": 766, - "to": 766, - "id": "0x01" - }, - { - "from": 767, - "to": 770, - "id": "0x01" - }, - { - "from": 771, - "to": 772, - "id": "0x01" - } - ], - "configuration.toClient.custom_report_details": [ - { - "from": 767, - "to": 770, - "id": "0x0F" - }, - { - "from": 771, - "to": 772, - "id": "0x0F" - } - ], - "configuration.toClient.disconnect": [ - { - "from": 764, - "to": 764, - "id": "0x01" - }, - { - "from": 765, - "to": 765, - "id": "0x01" - }, - { - "from": 766, - "to": 766, - "id": "0x02" - }, - { - "from": 767, - "to": 770, - "id": "0x02" - }, - { - "from": 771, - "to": 772, - "id": "0x02" - } - ], - "configuration.toClient.feature_flags": [ - { - "from": 764, - "to": 764, - "id": "0x07" - }, - { - "from": 765, - "to": 765, - "id": "0x08" - }, - { - "from": 766, - "to": 766, - "id": "0x0C" - }, - { - "from": 767, - "to": 770, - "id": "0x0C" - }, - { - "from": 771, - "to": 772, - "id": "0x0C" - } - ], - "configuration.toClient.finish_configuration": [ - { - "from": 764, - "to": 764, - "id": "0x02" - }, - { - "from": 765, - "to": 765, - "id": "0x02" - }, - { - "from": 766, - "to": 766, - "id": "0x03" - }, - { - "from": 767, - "to": 770, - "id": "0x03" - }, - { - "from": 771, - "to": 772, - "id": "0x03" - } - ], - "configuration.toClient.keep_alive": [ - { - "from": 764, - "to": 764, - "id": "0x03" - }, - { - "from": 765, - "to": 765, - "id": "0x03" - }, - { - "from": 766, - "to": 766, - "id": "0x04" - }, - { - "from": 767, - "to": 770, - "id": "0x04" - }, - { - "from": 771, - "to": 772, - "id": "0x04" - } - ], - "configuration.toClient.ping": [ - { - "from": 764, - "to": 764, - "id": "0x04" - }, - { - "from": 765, - "to": 765, - "id": "0x04" - }, - { - "from": 766, - "to": 766, - "id": "0x05" - }, - { - "from": 767, - "to": 770, - "id": "0x05" - }, - { - "from": 771, - "to": 772, - "id": "0x05" - } - ], - "configuration.toClient.registry_data": [ - { - "from": 764, - "to": 764, - "id": "0x05" - }, - { - "from": 765, - "to": 765, - "id": "0x05" - }, - { - "from": 766, - "to": 766, - "id": "0x07" - }, - { - "from": 767, - "to": 770, - "id": "0x07" - }, - { - "from": 771, - "to": 772, - "id": "0x07" - } - ], - "configuration.toClient.remove_resource_pack": [ - { - "from": 765, - "to": 765, - "id": "0x06" - }, - { - "from": 766, - "to": 766, - "id": "0x08" - }, - { - "from": 767, - "to": 770, - "id": "0x08" - }, - { - "from": 771, - "to": 772, - "id": "0x08" - } - ], - "configuration.toClient.reset_chat": [ - { - "from": 766, - "to": 766, - "id": "0x06" - }, - { - "from": 767, - "to": 770, - "id": "0x06" - }, - { - "from": 771, - "to": 772, - "id": "0x06" - } - ], - "configuration.toClient.resource_pack_send": [ - { - "from": 764, - "to": 764, - "id": "0x06" - } - ], - "configuration.toClient.select_known_packs": [ - { - "from": 766, - "to": 766, - "id": "0x0E" - }, - { - "from": 767, - "to": 770, - "id": "0x0E" - }, - { - "from": 771, - "to": 772, - "id": "0x0E" - } - ], - "configuration.toClient.server_links": [ - { - "from": 767, - "to": 770, - "id": "0x10" - }, - { - "from": 771, - "to": 772, - "id": "0x10" - } - ], - "configuration.toClient.show_dialog": [ - { - "from": 771, - "to": 772, - "id": "0x12" - } - ], - "configuration.toClient.store_cookie": [ - { - "from": 766, - "to": 766, - "id": "0x0A" - }, - { - "from": 767, - "to": 770, - "id": "0x0A" - }, - { - "from": 771, - "to": 772, - "id": "0x0A" - } - ], - "configuration.toClient.tags": [ - { - "from": 764, - "to": 764, - "id": "0x08" - }, - { - "from": 765, - "to": 765, - "id": "0x09" - }, - { - "from": 766, - "to": 766, - "id": "0x0D" - }, - { - "from": 767, - "to": 770, - "id": "0x0D" - }, - { - "from": 771, - "to": 772, - "id": "0x0D" - } - ], - "configuration.toClient.transfer": [ - { - "from": 766, - "to": 766, - "id": "0x0B" - }, - { - "from": 767, - "to": 770, - "id": "0x0B" - }, - { - "from": 771, - "to": 772, - "id": "0x0B" - } - ], - "configuration.toServer.cookie_response": [ - { - "from": 766, - "to": 766, - "id": "0x01" - }, - { - "from": 767, - "to": 770, - "id": "0x01" - }, - { - "from": 771, - "to": 772, - "id": "0x01" - } - ], - "configuration.toServer.custom_click_action": [ - { - "from": 771, - "to": 772, - "id": "0x08" - } - ], - "configuration.toServer.custom_payload": [ - { - "from": 764, - "to": 765, - "id": "0x01" - }, - { - "from": 766, - "to": 766, - "id": "0x02" - }, - { - "from": 767, - "to": 770, - "id": "0x02" - }, - { - "from": 771, - "to": 772, - "id": "0x02" - } - ], - "configuration.toServer.custom_report_details": [ - { - "from": 767, - "to": 770, - "id": "0x08" - } - ], - "configuration.toServer.finish_configuration": [ - { - "from": 764, - "to": 765, - "id": "0x02" - }, - { - "from": 766, - "to": 766, - "id": "0x03" - }, - { - "from": 767, - "to": 770, - "id": "0x03" - }, - { - "from": 771, - "to": 772, - "id": "0x03" - } - ], - "configuration.toServer.keep_alive": [ - { - "from": 764, - "to": 765, - "id": "0x03" - }, - { - "from": 766, - "to": 766, - "id": "0x04" - }, - { - "from": 767, - "to": 770, - "id": "0x04" - }, - { - "from": 771, - "to": 772, - "id": "0x04" - } - ], - "configuration.toServer.pong": [ - { - "from": 764, - "to": 765, - "id": "0x04" - }, - { - "from": 766, - "to": 766, - "id": "0x05" - }, - { - "from": 767, - "to": 770, - "id": "0x05" - }, - { - "from": 771, - "to": 772, - "id": "0x05" - } - ], - "configuration.toServer.resource_pack_receive": [ - { - "from": 764, - "to": 765, - "id": "0x05" - }, - { - "from": 766, - "to": 766, - "id": "0x06" - }, - { - "from": 767, - "to": 770, - "id": "0x06" - }, - { - "from": 771, - "to": 772, - "id": "0x06" - } - ], - "configuration.toServer.select_known_packs": [ - { - "from": 766, - "to": 766, - "id": "0x07" - }, - { - "from": 767, - "to": 770, - "id": "0x07" - }, - { - "from": 771, - "to": 772, - "id": "0x07" - } - ], - "configuration.toServer.server_links": [ - { - "from": 767, - "to": 770, - "id": "0x09" - } - ], - "configuration.toServer.settings": [ - { - "from": 764, - "to": 765, - "id": "0x00" - }, - { - "from": 766, - "to": 766, - "id": "0x00" - }, - { - "from": 767, - "to": 770, - "id": "0x00" - }, - { - "from": 771, - "to": 772, - "id": "0x00" - } - ], - "play.toClient.abilities": [ - { - "from": 735, - "to": 736, - "id": "0x31" - }, - { - "from": 751, - "to": 754, - "id": "0x30" - }, - { - "from": 755, - "to": 755, - "id": "0x32" - }, - { - "from": 756, - "to": 756, - "id": "0x32" - }, - { - "from": 757, - "to": 758, - "id": "0x32" - }, - { - "from": 759, - "to": 759, - "id": "0x2F" - }, - { - "from": 760, - "to": 760, - "id": "0x31" - }, - { - "from": 761, - "to": 761, - "id": "0x30" - }, - { - "from": 762, - "to": 763, - "id": "0x34" - }, - { - "from": 764, - "to": 764, - "id": "0x36" - }, - { - "from": 765, - "to": 765, - "id": "0x36" - }, - { - "from": 766, - "to": 766, - "id": "0x38" - }, - { - "from": 767, - "to": 767, - "id": "0x38" - }, - { - "from": 768, - "to": 769, - "id": "0x3A" - }, - { - "from": 770, - "to": 770, - "id": "0x39" - }, - { - "from": 771, - "to": 772, - "id": "0x39" - } - ], - "play.toClient.acknowledge_player_digging": [ - { - "from": 735, - "to": 736, - "id": "0x07" - }, - { - "from": 751, - "to": 754, - "id": "0x07" - }, - { - "from": 755, - "to": 755, - "id": "0x08" - }, - { - "from": 756, - "to": 756, - "id": "0x08" - }, - { - "from": 757, - "to": 758, - "id": "0x08" - }, - { - "from": 759, - "to": 759, - "id": "0x05" - }, - { - "from": 760, - "to": 760, - "id": "0x05" - }, - { - "from": 761, - "to": 761, - "id": "0x05" - }, - { - "from": 762, - "to": 763, - "id": "0x06" - }, - { - "from": 764, - "to": 764, - "id": "0x05" - }, - { - "from": 765, - "to": 765, - "id": "0x05" - }, - { - "from": 766, - "to": 766, - "id": "0x05" - }, - { - "from": 767, - "to": 767, - "id": "0x05" - }, - { - "from": 768, - "to": 769, - "id": "0x05" - }, - { - "from": 770, - "to": 770, - "id": "0x04" - }, - { - "from": 771, - "to": 772, - "id": "0x04" - } - ], - "play.toClient.action_bar": [ - { - "from": 755, - "to": 755, - "id": "0x41" - }, - { - "from": 756, - "to": 756, - "id": "0x41" - }, - { - "from": 757, - "to": 758, - "id": "0x41" - }, - { - "from": 759, - "to": 759, - "id": "0x40" - }, - { - "from": 760, - "to": 760, - "id": "0x43" - }, - { - "from": 761, - "to": 761, - "id": "0x42" - }, - { - "from": 762, - "to": 763, - "id": "0x46" - }, - { - "from": 764, - "to": 764, - "id": "0x48" - }, - { - "from": 765, - "to": 765, - "id": "0x4A" - }, - { - "from": 766, - "to": 766, - "id": "0x4C" - }, - { - "from": 767, - "to": 767, - "id": "0x4C" - }, - { - "from": 768, - "to": 769, - "id": "0x51" - }, - { - "from": 770, - "to": 770, - "id": "0x50" - }, - { - "from": 771, - "to": 772, - "id": "0x50" - } - ], - "play.toClient.add_resource_pack": [ - { - "from": 765, - "to": 765, - "id": "0x44" - }, - { - "from": 766, - "to": 766, - "id": "0x46" - }, - { - "from": 767, - "to": 767, - "id": "0x46" - }, - { - "from": 768, - "to": 769, - "id": "0x4B" - }, - { - "from": 770, - "to": 770, - "id": "0x4A" - }, - { - "from": 771, - "to": 772, - "id": "0x4A" - } - ], - "play.toClient.advancements": [ - { - "from": 735, - "to": 736, - "id": "0x57" - }, - { - "from": 751, - "to": 754, - "id": "0x57" - }, - { - "from": 755, - "to": 755, - "id": "0x62" - }, - { - "from": 756, - "to": 756, - "id": "0x62" - }, - { - "from": 757, - "to": 758, - "id": "0x63" - }, - { - "from": 759, - "to": 759, - "id": "0x64" - }, - { - "from": 760, - "to": 760, - "id": "0x67" - }, - { - "from": 761, - "to": 761, - "id": "0x65" - }, - { - "from": 762, - "to": 763, - "id": "0x69" - }, - { - "from": 764, - "to": 764, - "id": "0x6C" - }, - { - "from": 765, - "to": 765, - "id": "0x70" - }, - { - "from": 766, - "to": 766, - "id": "0x74" - }, - { - "from": 767, - "to": 767, - "id": "0x74" - }, - { - "from": 768, - "to": 769, - "id": "0x7B" - }, - { - "from": 770, - "to": 770, - "id": "0x7B" - }, - { - "from": 771, - "to": 772, - "id": "0x7B" - } - ], - "play.toClient.animation": [ - { - "from": 735, - "to": 736, - "id": "0x05" - }, - { - "from": 751, - "to": 754, - "id": "0x05" - }, - { - "from": 755, - "to": 755, - "id": "0x06" - }, - { - "from": 756, - "to": 756, - "id": "0x06" - }, - { - "from": 757, - "to": 758, - "id": "0x06" - }, - { - "from": 759, - "to": 759, - "id": "0x03" - }, - { - "from": 760, - "to": 760, - "id": "0x03" - }, - { - "from": 761, - "to": 761, - "id": "0x03" - }, - { - "from": 762, - "to": 763, - "id": "0x04" - }, - { - "from": 764, - "to": 764, - "id": "0x03" - }, - { - "from": 765, - "to": 765, - "id": "0x03" - }, - { - "from": 766, - "to": 766, - "id": "0x03" - }, - { - "from": 767, - "to": 767, - "id": "0x03" - }, - { - "from": 768, - "to": 769, - "id": "0x03" - }, - { - "from": 770, - "to": 770, - "id": "0x02" - }, - { - "from": 771, - "to": 772, - "id": "0x02" - } - ], - "play.toClient.attach_entity": [ - { - "from": 735, - "to": 736, - "id": "0x45" - }, - { - "from": 751, - "to": 754, - "id": "0x45" - }, - { - "from": 755, - "to": 755, - "id": "0x4E" - }, - { - "from": 756, - "to": 756, - "id": "0x4E" - }, - { - "from": 757, - "to": 758, - "id": "0x4E" - }, - { - "from": 759, - "to": 759, - "id": "0x4E" - }, - { - "from": 760, - "to": 760, - "id": "0x51" - }, - { - "from": 761, - "to": 761, - "id": "0x4F" - }, - { - "from": 762, - "to": 763, - "id": "0x53" - }, - { - "from": 764, - "to": 764, - "id": "0x55" - }, - { - "from": 765, - "to": 765, - "id": "0x57" - }, - { - "from": 766, - "to": 766, - "id": "0x59" - }, - { - "from": 767, - "to": 767, - "id": "0x59" - }, - { - "from": 768, - "to": 769, - "id": "0x5E" - }, - { - "from": 770, - "to": 770, - "id": "0x5D" - }, - { - "from": 771, - "to": 772, - "id": "0x5D" - } - ], - "play.toClient.block_action": [ - { - "from": 735, - "to": 736, - "id": "0x0A" - }, - { - "from": 751, - "to": 754, - "id": "0x0A" - }, - { - "from": 755, - "to": 755, - "id": "0x0B" - }, - { - "from": 756, - "to": 756, - "id": "0x0B" - }, - { - "from": 757, - "to": 758, - "id": "0x0B" - }, - { - "from": 759, - "to": 759, - "id": "0x08" - }, - { - "from": 760, - "to": 760, - "id": "0x08" - }, - { - "from": 761, - "to": 761, - "id": "0x08" - }, - { - "from": 762, - "to": 763, - "id": "0x09" - }, - { - "from": 764, - "to": 764, - "id": "0x08" - }, - { - "from": 765, - "to": 765, - "id": "0x08" - }, - { - "from": 766, - "to": 766, - "id": "0x08" - }, - { - "from": 767, - "to": 767, - "id": "0x08" - }, - { - "from": 768, - "to": 769, - "id": "0x08" - }, - { - "from": 770, - "to": 770, - "id": "0x07" - }, - { - "from": 771, - "to": 772, - "id": "0x07" - } - ], - "play.toClient.block_break_animation": [ - { - "from": 735, - "to": 736, - "id": "0x08" - }, - { - "from": 751, - "to": 754, - "id": "0x08" - }, - { - "from": 755, - "to": 755, - "id": "0x09" - }, - { - "from": 756, - "to": 756, - "id": "0x09" - }, - { - "from": 757, - "to": 758, - "id": "0x09" - }, - { - "from": 759, - "to": 759, - "id": "0x06" - }, - { - "from": 760, - "to": 760, - "id": "0x06" - }, - { - "from": 761, - "to": 761, - "id": "0x06" - }, - { - "from": 762, - "to": 763, - "id": "0x07" - }, - { - "from": 764, - "to": 764, - "id": "0x06" - }, - { - "from": 765, - "to": 765, - "id": "0x06" - }, - { - "from": 766, - "to": 766, - "id": "0x06" - }, - { - "from": 767, - "to": 767, - "id": "0x06" - }, - { - "from": 768, - "to": 769, - "id": "0x06" - }, - { - "from": 770, - "to": 770, - "id": "0x05" - }, - { - "from": 771, - "to": 772, - "id": "0x05" - } - ], - "play.toClient.block_change": [ - { - "from": 735, - "to": 736, - "id": "0x0B" - }, - { - "from": 751, - "to": 754, - "id": "0x0B" - }, - { - "from": 755, - "to": 755, - "id": "0x0C" - }, - { - "from": 756, - "to": 756, - "id": "0x0C" - }, - { - "from": 757, - "to": 758, - "id": "0x0C" - }, - { - "from": 759, - "to": 759, - "id": "0x09" - }, - { - "from": 760, - "to": 760, - "id": "0x09" - }, - { - "from": 761, - "to": 761, - "id": "0x09" - }, - { - "from": 762, - "to": 763, - "id": "0x0A" - }, - { - "from": 764, - "to": 764, - "id": "0x09" - }, - { - "from": 765, - "to": 765, - "id": "0x09" - }, - { - "from": 766, - "to": 766, - "id": "0x09" - }, - { - "from": 767, - "to": 767, - "id": "0x09" - }, - { - "from": 768, - "to": 769, - "id": "0x09" - }, - { - "from": 770, - "to": 770, - "id": "0x08" - }, - { - "from": 771, - "to": 772, - "id": "0x08" - } - ], - "play.toClient.boss_bar": [ - { - "from": 735, - "to": 736, - "id": "0x0C" - }, - { - "from": 751, - "to": 754, - "id": "0x0C" - }, - { - "from": 755, - "to": 755, - "id": "0x0D" - }, - { - "from": 756, - "to": 756, - "id": "0x0D" - }, - { - "from": 757, - "to": 758, - "id": "0x0D" - }, - { - "from": 759, - "to": 759, - "id": "0x0A" - }, - { - "from": 760, - "to": 760, - "id": "0x0A" - }, - { - "from": 761, - "to": 761, - "id": "0x0A" - }, - { - "from": 762, - "to": 763, - "id": "0x0B" - }, - { - "from": 764, - "to": 764, - "id": "0x0A" - }, - { - "from": 765, - "to": 765, - "id": "0x0A" - }, - { - "from": 766, - "to": 766, - "id": "0x0A" - }, - { - "from": 767, - "to": 767, - "id": "0x0A" - }, - { - "from": 768, - "to": 769, - "id": "0x0A" - }, - { - "from": 770, - "to": 770, - "id": "0x09" - }, - { - "from": 771, - "to": 772, - "id": "0x09" - } - ], - "play.toClient.bundle_delimiter": [ - { - "from": 762, - "to": 763, - "id": "0x00" - }, - { - "from": 764, - "to": 764, - "id": "0x00" - }, - { - "from": 765, - "to": 765, - "id": "0x00" - }, - { - "from": 766, - "to": 766, - "id": "0x00" - }, - { - "from": 767, - "to": 767, - "id": "0x00" - }, - { - "from": 768, - "to": 769, - "id": "0x00" - }, - { - "from": 770, - "to": 770, - "id": "0x00" - }, - { - "from": 771, - "to": 772, - "id": "0x00" - } - ], - "play.toClient.camera": [ - { - "from": 735, - "to": 736, - "id": "0x3E" - }, - { - "from": 751, - "to": 754, - "id": "0x3E" - }, - { - "from": 755, - "to": 755, - "id": "0x47" - }, - { - "from": 756, - "to": 756, - "id": "0x47" - }, - { - "from": 757, - "to": 758, - "id": "0x47" - }, - { - "from": 759, - "to": 759, - "id": "0x46" - }, - { - "from": 760, - "to": 760, - "id": "0x49" - }, - { - "from": 761, - "to": 761, - "id": "0x48" - }, - { - "from": 762, - "to": 763, - "id": "0x4C" - }, - { - "from": 764, - "to": 764, - "id": "0x4E" - }, - { - "from": 765, - "to": 765, - "id": "0x50" - }, - { - "from": 766, - "to": 766, - "id": "0x52" - }, - { - "from": 767, - "to": 767, - "id": "0x52" - }, - { - "from": 768, - "to": 769, - "id": "0x57" - }, - { - "from": 770, - "to": 770, - "id": "0x56" - }, - { - "from": 771, - "to": 772, - "id": "0x56" - } - ], - "play.toClient.chat": [ - { - "from": 735, - "to": 736, - "id": "0x0E" - }, - { - "from": 751, - "to": 754, - "id": "0x0E" - }, - { - "from": 755, - "to": 755, - "id": "0x0F" - }, - { - "from": 756, - "to": 756, - "id": "0x0F" - }, - { - "from": 757, - "to": 758, - "id": "0x0F" - } - ], - "play.toClient.chat_preview": [ - { - "from": 759, - "to": 759, - "id": "0x0C" - }, - { - "from": 760, - "to": 760, - "id": "0x0C" - } - ], - "play.toClient.chat_suggestions": [ - { - "from": 760, - "to": 760, - "id": "0x15" - }, - { - "from": 761, - "to": 761, - "id": "0x14" - }, - { - "from": 762, - "to": 763, - "id": "0x16" - }, - { - "from": 764, - "to": 764, - "id": "0x17" - }, - { - "from": 765, - "to": 765, - "id": "0x17" - }, - { - "from": 766, - "to": 766, - "id": "0x18" - }, - { - "from": 767, - "to": 767, - "id": "0x18" - }, - { - "from": 768, - "to": 769, - "id": "0x18" - }, - { - "from": 770, - "to": 770, - "id": "0x17" - }, - { - "from": 771, - "to": 772, - "id": "0x17" - } - ], - "play.toClient.chunk_batch_finished": [ - { - "from": 764, - "to": 764, - "id": "0x0C" - }, - { - "from": 765, - "to": 765, - "id": "0x0C" - }, - { - "from": 766, - "to": 766, - "id": "0x0C" - }, - { - "from": 767, - "to": 767, - "id": "0x0C" - }, - { - "from": 768, - "to": 769, - "id": "0x0C" - }, - { - "from": 770, - "to": 770, - "id": "0x0B" - }, - { - "from": 771, - "to": 772, - "id": "0x0B" - } - ], - "play.toClient.chunk_batch_start": [ - { - "from": 764, - "to": 764, - "id": "0x0D" - }, - { - "from": 765, - "to": 765, - "id": "0x0D" - }, - { - "from": 766, - "to": 766, - "id": "0x0D" - }, - { - "from": 767, - "to": 767, - "id": "0x0D" - }, - { - "from": 768, - "to": 769, - "id": "0x0D" - }, - { - "from": 770, - "to": 770, - "id": "0x0C" - }, - { - "from": 771, - "to": 772, - "id": "0x0C" - } - ], - "play.toClient.chunk_biomes": [ - { - "from": 762, - "to": 763, - "id": "0x0D" - }, - { - "from": 764, - "to": 764, - "id": "0x0E" - }, - { - "from": 765, - "to": 765, - "id": "0x0E" - }, - { - "from": 766, - "to": 766, - "id": "0x0E" - }, - { - "from": 767, - "to": 767, - "id": "0x0E" - }, - { - "from": 768, - "to": 769, - "id": "0x0E" - }, - { - "from": 770, - "to": 770, - "id": "0x0D" - }, - { - "from": 771, - "to": 772, - "id": "0x0D" - } - ], - "play.toClient.clear_dialog": [ - { - "from": 771, - "to": 772, - "id": "0x84" - } - ], - "play.toClient.clear_titles": [ - { - "from": 755, - "to": 755, - "id": "0x10" - }, - { - "from": 756, - "to": 756, - "id": "0x10" - }, - { - "from": 757, - "to": 758, - "id": "0x10" - }, - { - "from": 759, - "to": 759, - "id": "0x0D" - }, - { - "from": 760, - "to": 760, - "id": "0x0D" - }, - { - "from": 761, - "to": 761, - "id": "0x0C" - }, - { - "from": 762, - "to": 763, - "id": "0x0E" - }, - { - "from": 764, - "to": 764, - "id": "0x0F" - }, - { - "from": 765, - "to": 765, - "id": "0x0F" - }, - { - "from": 766, - "to": 766, - "id": "0x0F" - }, - { - "from": 767, - "to": 767, - "id": "0x0F" - }, - { - "from": 768, - "to": 769, - "id": "0x0F" - }, - { - "from": 770, - "to": 770, - "id": "0x0E" - }, - { - "from": 771, - "to": 772, - "id": "0x0E" - } - ], - "play.toClient.close_window": [ - { - "from": 735, - "to": 736, - "id": "0x13" - }, - { - "from": 751, - "to": 754, - "id": "0x12" - }, - { - "from": 755, - "to": 755, - "id": "0x13" - }, - { - "from": 756, - "to": 756, - "id": "0x13" - }, - { - "from": 757, - "to": 758, - "id": "0x13" - }, - { - "from": 759, - "to": 759, - "id": "0x10" - }, - { - "from": 760, - "to": 760, - "id": "0x10" - }, - { - "from": 761, - "to": 761, - "id": "0x0F" - }, - { - "from": 762, - "to": 763, - "id": "0x11" - }, - { - "from": 764, - "to": 764, - "id": "0x12" - }, - { - "from": 765, - "to": 765, - "id": "0x12" - }, - { - "from": 766, - "to": 766, - "id": "0x12" - }, - { - "from": 767, - "to": 767, - "id": "0x12" - }, - { - "from": 768, - "to": 769, - "id": "0x12" - }, - { - "from": 770, - "to": 770, - "id": "0x11" - }, - { - "from": 771, - "to": 772, - "id": "0x11" - } - ], - "play.toClient.collect": [ - { - "from": 735, - "to": 736, - "id": "0x55" - }, - { - "from": 751, - "to": 754, - "id": "0x55" - }, - { - "from": 755, - "to": 755, - "id": "0x60" - }, - { - "from": 756, - "to": 756, - "id": "0x60" - }, - { - "from": 757, - "to": 758, - "id": "0x61" - }, - { - "from": 759, - "to": 759, - "id": "0x62" - }, - { - "from": 760, - "to": 760, - "id": "0x65" - }, - { - "from": 761, - "to": 761, - "id": "0x63" - }, - { - "from": 762, - "to": 763, - "id": "0x67" - }, - { - "from": 764, - "to": 764, - "id": "0x6A" - }, - { - "from": 765, - "to": 765, - "id": "0x6C" - }, - { - "from": 766, - "to": 766, - "id": "0x6F" - }, - { - "from": 767, - "to": 767, - "id": "0x6F" - }, - { - "from": 768, - "to": 769, - "id": "0x76" - }, - { - "from": 770, - "to": 770, - "id": "0x75" - }, - { - "from": 771, - "to": 772, - "id": "0x75" - } - ], - "play.toClient.combat_event": [ - { - "from": 735, - "to": 736, - "id": "0x32" - }, - { - "from": 751, - "to": 754, - "id": "0x31" - } - ], - "play.toClient.cookie_request": [ - { - "from": 766, - "to": 766, - "id": "0x16" - }, - { - "from": 767, - "to": 767, - "id": "0x16" - }, - { - "from": 768, - "to": 769, - "id": "0x16" - }, - { - "from": 770, - "to": 770, - "id": "0x15" - }, - { - "from": 771, - "to": 772, - "id": "0x15" - } - ], - "play.toClient.craft_progress_bar": [ - { - "from": 735, - "to": 736, - "id": "0x15" - }, - { - "from": 751, - "to": 754, - "id": "0x14" - }, - { - "from": 755, - "to": 755, - "id": "0x15" - }, - { - "from": 756, - "to": 756, - "id": "0x15" - }, - { - "from": 757, - "to": 758, - "id": "0x15" - }, - { - "from": 759, - "to": 759, - "id": "0x12" - }, - { - "from": 760, - "to": 760, - "id": "0x12" - }, - { - "from": 761, - "to": 761, - "id": "0x11" - }, - { - "from": 762, - "to": 763, - "id": "0x13" - }, - { - "from": 764, - "to": 764, - "id": "0x14" - }, - { - "from": 765, - "to": 765, - "id": "0x14" - }, - { - "from": 766, - "to": 766, - "id": "0x14" - }, - { - "from": 767, - "to": 767, - "id": "0x14" - }, - { - "from": 768, - "to": 769, - "id": "0x14" - }, - { - "from": 770, - "to": 770, - "id": "0x13" - }, - { - "from": 771, - "to": 772, - "id": "0x13" - } - ], - "play.toClient.craft_recipe_response": [ - { - "from": 735, - "to": 736, - "id": "0x30" - }, - { - "from": 751, - "to": 754, - "id": "0x2F" - }, - { - "from": 755, - "to": 755, - "id": "0x31" - }, - { - "from": 756, - "to": 756, - "id": "0x31" - }, - { - "from": 757, - "to": 758, - "id": "0x31" - }, - { - "from": 759, - "to": 759, - "id": "0x2E" - }, - { - "from": 760, - "to": 760, - "id": "0x30" - }, - { - "from": 761, - "to": 761, - "id": "0x2F" - }, - { - "from": 762, - "to": 763, - "id": "0x33" - }, - { - "from": 764, - "to": 764, - "id": "0x35" - }, - { - "from": 765, - "to": 765, - "id": "0x35" - }, - { - "from": 766, - "to": 766, - "id": "0x37" - }, - { - "from": 767, - "to": 767, - "id": "0x37" - }, - { - "from": 768, - "to": 769, - "id": "0x39" - }, - { - "from": 770, - "to": 770, - "id": "0x38" - }, - { - "from": 771, - "to": 772, - "id": "0x38" - } - ], - "play.toClient.custom_payload": [ - { - "from": 735, - "to": 736, - "id": "0x18" - }, - { - "from": 751, - "to": 754, - "id": "0x17" - }, - { - "from": 755, - "to": 755, - "id": "0x18" - }, - { - "from": 756, - "to": 756, - "id": "0x18" - }, - { - "from": 757, - "to": 758, - "id": "0x18" - }, - { - "from": 759, - "to": 759, - "id": "0x15" - }, - { - "from": 760, - "to": 760, - "id": "0x16" - }, - { - "from": 761, - "to": 761, - "id": "0x15" - }, - { - "from": 762, - "to": 763, - "id": "0x17" - }, - { - "from": 764, - "to": 764, - "id": "0x18" - }, - { - "from": 765, - "to": 765, - "id": "0x18" - }, - { - "from": 766, - "to": 766, - "id": "0x19" - }, - { - "from": 767, - "to": 767, - "id": "0x19" - }, - { - "from": 768, - "to": 769, - "id": "0x19" - }, - { - "from": 770, - "to": 770, - "id": "0x18" - }, - { - "from": 771, - "to": 772, - "id": "0x18" - } - ], - "play.toClient.custom_report_details": [ - { - "from": 767, - "to": 767, - "id": "0x7A" - }, - { - "from": 768, - "to": 769, - "id": "0x81" - }, - { - "from": 770, - "to": 770, - "id": "0x81" - }, - { - "from": 771, - "to": 772, - "id": "0x81" - } - ], - "play.toClient.damage_event": [ - { - "from": 762, - "to": 763, - "id": "0x18" - }, - { - "from": 764, - "to": 764, - "id": "0x19" - }, - { - "from": 765, - "to": 765, - "id": "0x19" - }, - { - "from": 766, - "to": 766, - "id": "0x1A" - }, - { - "from": 767, - "to": 767, - "id": "0x1A" - }, - { - "from": 768, - "to": 769, - "id": "0x1A" - }, - { - "from": 770, - "to": 770, - "id": "0x19" - }, - { - "from": 771, - "to": 772, - "id": "0x19" - } - ], - "play.toClient.death_combat_event": [ - { - "from": 755, - "to": 755, - "id": "0x35" - }, - { - "from": 756, - "to": 756, - "id": "0x35" - }, - { - "from": 757, - "to": 758, - "id": "0x35" - }, - { - "from": 759, - "to": 759, - "id": "0x33" - }, - { - "from": 760, - "to": 760, - "id": "0x36" - }, - { - "from": 761, - "to": 761, - "id": "0x34" - }, - { - "from": 762, - "to": 763, - "id": "0x38" - }, - { - "from": 764, - "to": 764, - "id": "0x3A" - }, - { - "from": 765, - "to": 765, - "id": "0x3A" - }, - { - "from": 766, - "to": 766, - "id": "0x3C" - }, - { - "from": 767, - "to": 767, - "id": "0x3C" - }, - { - "from": 768, - "to": 769, - "id": "0x3E" - }, - { - "from": 770, - "to": 770, - "id": "0x3D" - }, - { - "from": 771, - "to": 772, - "id": "0x3D" - } - ], - "play.toClient.debug_sample": [ - { - "from": 766, - "to": 766, - "id": "0x1B" - }, - { - "from": 767, - "to": 767, - "id": "0x1B" - }, - { - "from": 768, - "to": 769, - "id": "0x1B" - }, - { - "from": 770, - "to": 770, - "id": "0x1A" - }, - { - "from": 771, - "to": 772, - "id": "0x1A" - } - ], - "play.toClient.declare_commands": [ - { - "from": 735, - "to": 736, - "id": "0x11" - }, - { - "from": 751, - "to": 754, - "id": "0x10" - }, - { - "from": 755, - "to": 755, - "id": "0x12" - }, - { - "from": 756, - "to": 756, - "id": "0x12" - }, - { - "from": 757, - "to": 758, - "id": "0x12" - }, - { - "from": 759, - "to": 759, - "id": "0x0F" - }, - { - "from": 760, - "to": 760, - "id": "0x0F" - }, - { - "from": 761, - "to": 761, - "id": "0x0E" - }, - { - "from": 762, - "to": 763, - "id": "0x10" - }, - { - "from": 764, - "to": 764, - "id": "0x11" - }, - { - "from": 765, - "to": 765, - "id": "0x11" - }, - { - "from": 766, - "to": 766, - "id": "0x11" - }, - { - "from": 767, - "to": 767, - "id": "0x11" - }, - { - "from": 768, - "to": 769, - "id": "0x11" - }, - { - "from": 770, - "to": 770, - "id": "0x10" - }, - { - "from": 771, - "to": 772, - "id": "0x10" - } - ], - "play.toClient.declare_recipes": [ - { - "from": 735, - "to": 736, - "id": "0x5A" - }, - { - "from": 751, - "to": 754, - "id": "0x5A" - }, - { - "from": 755, - "to": 755, - "id": "0x65" - }, - { - "from": 756, - "to": 756, - "id": "0x65" - }, - { - "from": 757, - "to": 758, - "id": "0x66" - }, - { - "from": 759, - "to": 759, - "id": "0x67" - }, - { - "from": 760, - "to": 760, - "id": "0x6A" - }, - { - "from": 761, - "to": 761, - "id": "0x69" - }, - { - "from": 762, - "to": 763, - "id": "0x6D" - }, - { - "from": 764, - "to": 764, - "id": "0x6F" - }, - { - "from": 765, - "to": 765, - "id": "0x73" - }, - { - "from": 766, - "to": 766, - "id": "0x77" - }, - { - "from": 767, - "to": 767, - "id": "0x77" - }, - { - "from": 768, - "to": 769, - "id": "0x7E" - }, - { - "from": 770, - "to": 770, - "id": "0x7E" - }, - { - "from": 771, - "to": 772, - "id": "0x7E" - } - ], - "play.toClient.destroy_entity": [ - { - "from": 755, - "to": 755, - "id": "0x3A" - } - ], - "play.toClient.difficulty": [ - { - "from": 735, - "to": 736, - "id": "0x0D" - }, - { - "from": 751, - "to": 754, - "id": "0x0D" - }, - { - "from": 755, - "to": 755, - "id": "0x0E" - }, - { - "from": 756, - "to": 756, - "id": "0x0E" - }, - { - "from": 757, - "to": 758, - "id": "0x0E" - }, - { - "from": 759, - "to": 759, - "id": "0x0B" - }, - { - "from": 760, - "to": 760, - "id": "0x0B" - }, - { - "from": 761, - "to": 761, - "id": "0x0B" - }, - { - "from": 762, - "to": 763, - "id": "0x0C" - }, - { - "from": 764, - "to": 764, - "id": "0x0B" - }, - { - "from": 765, - "to": 765, - "id": "0x0B" - }, - { - "from": 766, - "to": 766, - "id": "0x0B" - }, - { - "from": 767, - "to": 767, - "id": "0x0B" - }, - { - "from": 768, - "to": 769, - "id": "0x0B" - }, - { - "from": 770, - "to": 770, - "id": "0x0A" - }, - { - "from": 771, - "to": 772, - "id": "0x0A" - } - ], - "play.toClient.end_combat_event": [ - { - "from": 755, - "to": 755, - "id": "0x33" - }, - { - "from": 756, - "to": 756, - "id": "0x33" - }, - { - "from": 757, - "to": 758, - "id": "0x33" - }, - { - "from": 759, - "to": 759, - "id": "0x31" - }, - { - "from": 760, - "to": 760, - "id": "0x34" - }, - { - "from": 761, - "to": 761, - "id": "0x32" - }, - { - "from": 762, - "to": 763, - "id": "0x36" - }, - { - "from": 764, - "to": 764, - "id": "0x38" - }, - { - "from": 765, - "to": 765, - "id": "0x38" - }, - { - "from": 766, - "to": 766, - "id": "0x3A" - }, - { - "from": 767, - "to": 767, - "id": "0x3A" - }, - { - "from": 768, - "to": 769, - "id": "0x3C" - }, - { - "from": 770, - "to": 770, - "id": "0x3B" - }, - { - "from": 771, - "to": 772, - "id": "0x3B" - } - ], - "play.toClient.enter_combat_event": [ - { - "from": 755, - "to": 755, - "id": "0x34" - }, - { - "from": 756, - "to": 756, - "id": "0x34" - }, - { - "from": 757, - "to": 758, - "id": "0x34" - }, - { - "from": 759, - "to": 759, - "id": "0x32" - }, - { - "from": 760, - "to": 760, - "id": "0x35" - }, - { - "from": 761, - "to": 761, - "id": "0x33" - }, - { - "from": 762, - "to": 763, - "id": "0x37" - }, - { - "from": 764, - "to": 764, - "id": "0x39" - }, - { - "from": 765, - "to": 765, - "id": "0x39" - }, - { - "from": 766, - "to": 766, - "id": "0x3B" - }, - { - "from": 767, - "to": 767, - "id": "0x3B" - }, - { - "from": 768, - "to": 769, - "id": "0x3D" - }, - { - "from": 770, - "to": 770, - "id": "0x3C" - }, - { - "from": 771, - "to": 772, - "id": "0x3C" - } - ], - "play.toClient.entity": [ - { - "from": 735, - "to": 736, - "id": "0x2B" - }, - { - "from": 751, - "to": 754, - "id": "0x2A" - } - ], - "play.toClient.entity_destroy": [ - { - "from": 735, - "to": 736, - "id": "0x37" - }, - { - "from": 751, - "to": 754, - "id": "0x36" - }, - { - "from": 756, - "to": 756, - "id": "0x3A" - }, - { - "from": 757, - "to": 758, - "id": "0x3A" - }, - { - "from": 759, - "to": 759, - "id": "0x38" - }, - { - "from": 760, - "to": 760, - "id": "0x3B" - }, - { - "from": 761, - "to": 761, - "id": "0x3A" - }, - { - "from": 762, - "to": 763, - "id": "0x3E" - }, - { - "from": 764, - "to": 764, - "id": "0x40" - }, - { - "from": 765, - "to": 765, - "id": "0x40" - }, - { - "from": 766, - "to": 766, - "id": "0x42" - }, - { - "from": 767, - "to": 767, - "id": "0x42" - }, - { - "from": 768, - "to": 769, - "id": "0x47" - }, - { - "from": 770, - "to": 770, - "id": "0x46" - }, - { - "from": 771, - "to": 772, - "id": "0x46" - } - ], - "play.toClient.entity_effect": [ - { - "from": 735, - "to": 736, - "id": "0x59" - }, - { - "from": 751, - "to": 754, - "id": "0x59" - }, - { - "from": 755, - "to": 755, - "id": "0x64" - }, - { - "from": 756, - "to": 756, - "id": "0x64" - }, - { - "from": 757, - "to": 758, - "id": "0x65" - }, - { - "from": 759, - "to": 759, - "id": "0x66" - }, - { - "from": 760, - "to": 760, - "id": "0x69" - }, - { - "from": 761, - "to": 761, - "id": "0x68" - }, - { - "from": 762, - "to": 763, - "id": "0x6C" - }, - { - "from": 764, - "to": 764, - "id": "0x6E" - }, - { - "from": 765, - "to": 765, - "id": "0x72" - }, - { - "from": 766, - "to": 766, - "id": "0x76" - }, - { - "from": 767, - "to": 767, - "id": "0x76" - }, - { - "from": 768, - "to": 769, - "id": "0x7D" - }, - { - "from": 770, - "to": 770, - "id": "0x7D" - }, - { - "from": 771, - "to": 772, - "id": "0x7D" - } - ], - "play.toClient.entity_equipment": [ - { - "from": 735, - "to": 736, - "id": "0x47" - }, - { - "from": 751, - "to": 754, - "id": "0x47" - }, - { - "from": 755, - "to": 755, - "id": "0x50" - }, - { - "from": 756, - "to": 756, - "id": "0x50" - }, - { - "from": 757, - "to": 758, - "id": "0x50" - }, - { - "from": 759, - "to": 759, - "id": "0x50" - }, - { - "from": 760, - "to": 760, - "id": "0x53" - }, - { - "from": 761, - "to": 761, - "id": "0x51" - }, - { - "from": 762, - "to": 763, - "id": "0x55" - }, - { - "from": 764, - "to": 764, - "id": "0x57" - }, - { - "from": 765, - "to": 765, - "id": "0x59" - }, - { - "from": 766, - "to": 766, - "id": "0x5B" - }, - { - "from": 767, - "to": 767, - "id": "0x5B" - }, - { - "from": 768, - "to": 769, - "id": "0x60" - }, - { - "from": 770, - "to": 770, - "id": "0x5F" - }, - { - "from": 771, - "to": 772, - "id": "0x5F" - } - ], - "play.toClient.entity_head_rotation": [ - { - "from": 735, - "to": 736, - "id": "0x3B" - }, - { - "from": 751, - "to": 754, - "id": "0x3A" - }, - { - "from": 755, - "to": 755, - "id": "0x3E" - }, - { - "from": 756, - "to": 756, - "id": "0x3E" - }, - { - "from": 757, - "to": 758, - "id": "0x3E" - }, - { - "from": 759, - "to": 759, - "id": "0x3C" - }, - { - "from": 760, - "to": 760, - "id": "0x3F" - }, - { - "from": 761, - "to": 761, - "id": "0x3E" - }, - { - "from": 762, - "to": 763, - "id": "0x42" - }, - { - "from": 764, - "to": 764, - "id": "0x44" - }, - { - "from": 765, - "to": 765, - "id": "0x46" - }, - { - "from": 766, - "to": 766, - "id": "0x48" - }, - { - "from": 767, - "to": 767, - "id": "0x48" - }, - { - "from": 768, - "to": 769, - "id": "0x4D" - }, - { - "from": 770, - "to": 770, - "id": "0x4C" - }, - { - "from": 771, - "to": 772, - "id": "0x4C" - } - ], - "play.toClient.entity_look": [ - { - "from": 735, - "to": 736, - "id": "0x2A" - }, - { - "from": 751, - "to": 754, - "id": "0x29" - }, - { - "from": 755, - "to": 755, - "id": "0x2B" - }, - { - "from": 756, - "to": 756, - "id": "0x2B" - }, - { - "from": 757, - "to": 758, - "id": "0x2B" - }, - { - "from": 759, - "to": 759, - "id": "0x28" - }, - { - "from": 760, - "to": 760, - "id": "0x2A" - }, - { - "from": 761, - "to": 761, - "id": "0x29" - }, - { - "from": 762, - "to": 763, - "id": "0x2D" - }, - { - "from": 764, - "to": 764, - "id": "0x2E" - }, - { - "from": 765, - "to": 765, - "id": "0x2E" - }, - { - "from": 766, - "to": 766, - "id": "0x30" - }, - { - "from": 767, - "to": 767, - "id": "0x30" - }, - { - "from": 768, - "to": 769, - "id": "0x32" - }, - { - "from": 770, - "to": 770, - "id": "0x31" - }, - { - "from": 771, - "to": 772, - "id": "0x31" - } - ], - "play.toClient.entity_metadata": [ - { - "from": 735, - "to": 736, - "id": "0x44" - }, - { - "from": 751, - "to": 754, - "id": "0x44" - }, - { - "from": 755, - "to": 755, - "id": "0x4D" - }, - { - "from": 756, - "to": 756, - "id": "0x4D" - }, - { - "from": 757, - "to": 758, - "id": "0x4D" - }, - { - "from": 759, - "to": 759, - "id": "0x4D" - }, - { - "from": 760, - "to": 760, - "id": "0x50" - }, - { - "from": 761, - "to": 761, - "id": "0x4E" - }, - { - "from": 762, - "to": 763, - "id": "0x52" - }, - { - "from": 764, - "to": 764, - "id": "0x54" - }, - { - "from": 765, - "to": 765, - "id": "0x56" - }, - { - "from": 766, - "to": 766, - "id": "0x58" - }, - { - "from": 767, - "to": 767, - "id": "0x58" - }, - { - "from": 768, - "to": 769, - "id": "0x5D" - }, - { - "from": 770, - "to": 770, - "id": "0x5C" - }, - { - "from": 771, - "to": 772, - "id": "0x5C" - } - ], - "play.toClient.entity_move_look": [ - { - "from": 735, - "to": 736, - "id": "0x29" - }, - { - "from": 751, - "to": 754, - "id": "0x28" - }, - { - "from": 755, - "to": 755, - "id": "0x2A" - }, - { - "from": 756, - "to": 756, - "id": "0x2A" - }, - { - "from": 757, - "to": 758, - "id": "0x2A" - }, - { - "from": 759, - "to": 759, - "id": "0x27" - }, - { - "from": 760, - "to": 760, - "id": "0x29" - }, - { - "from": 761, - "to": 761, - "id": "0x28" - }, - { - "from": 762, - "to": 763, - "id": "0x2C" - }, - { - "from": 764, - "to": 764, - "id": "0x2D" - }, - { - "from": 765, - "to": 765, - "id": "0x2D" - }, - { - "from": 766, - "to": 766, - "id": "0x2F" - }, - { - "from": 767, - "to": 767, - "id": "0x2F" - }, - { - "from": 768, - "to": 769, - "id": "0x30" - }, - { - "from": 770, - "to": 770, - "id": "0x2F" - }, - { - "from": 771, - "to": 772, - "id": "0x2F" - } - ], - "play.toClient.entity_sound_effect": [ - { - "from": 735, - "to": 736, - "id": "0x50" - }, - { - "from": 751, - "to": 754, - "id": "0x50" - }, - { - "from": 755, - "to": 755, - "id": "0x5B" - }, - { - "from": 756, - "to": 756, - "id": "0x5B" - }, - { - "from": 757, - "to": 758, - "id": "0x5C" - }, - { - "from": 759, - "to": 759, - "id": "0x5C" - }, - { - "from": 760, - "to": 760, - "id": "0x5F" - }, - { - "from": 761, - "to": 761, - "id": "0x5D" - }, - { - "from": 762, - "to": 763, - "id": "0x61" - }, - { - "from": 764, - "to": 764, - "id": "0x63" - }, - { - "from": 765, - "to": 765, - "id": "0x65" - }, - { - "from": 766, - "to": 766, - "id": "0x67" - }, - { - "from": 767, - "to": 767, - "id": "0x67" - }, - { - "from": 768, - "to": 769, - "id": "0x6E" - }, - { - "from": 770, - "to": 770, - "id": "0x6D" - }, - { - "from": 771, - "to": 772, - "id": "0x6D" - } - ], - "play.toClient.entity_status": [ - { - "from": 735, - "to": 736, - "id": "0x1B" - }, - { - "from": 751, - "to": 754, - "id": "0x1A" - }, - { - "from": 755, - "to": 755, - "id": "0x1B" - }, - { - "from": 756, - "to": 756, - "id": "0x1B" - }, - { - "from": 757, - "to": 758, - "id": "0x1B" - }, - { - "from": 759, - "to": 759, - "id": "0x18" - }, - { - "from": 760, - "to": 760, - "id": "0x1A" - }, - { - "from": 761, - "to": 761, - "id": "0x19" - }, - { - "from": 762, - "to": 763, - "id": "0x1C" - }, - { - "from": 764, - "to": 764, - "id": "0x1D" - }, - { - "from": 765, - "to": 765, - "id": "0x1D" - }, - { - "from": 766, - "to": 766, - "id": "0x1F" - }, - { - "from": 767, - "to": 767, - "id": "0x1F" - }, - { - "from": 768, - "to": 769, - "id": "0x1F" - }, - { - "from": 770, - "to": 770, - "id": "0x1E" - }, - { - "from": 771, - "to": 772, - "id": "0x1E" - } - ], - "play.toClient.entity_teleport": [ - { - "from": 735, - "to": 736, - "id": "0x56" - }, - { - "from": 751, - "to": 754, - "id": "0x56" - }, - { - "from": 755, - "to": 755, - "id": "0x61" - }, - { - "from": 756, - "to": 756, - "id": "0x61" - }, - { - "from": 757, - "to": 758, - "id": "0x62" - }, - { - "from": 759, - "to": 759, - "id": "0x63" - }, - { - "from": 760, - "to": 760, - "id": "0x66" - }, - { - "from": 761, - "to": 761, - "id": "0x64" - }, - { - "from": 762, - "to": 763, - "id": "0x68" - }, - { - "from": 764, - "to": 764, - "id": "0x6B" - }, - { - "from": 765, - "to": 765, - "id": "0x6D" - }, - { - "from": 766, - "to": 766, - "id": "0x70" - }, - { - "from": 767, - "to": 767, - "id": "0x70" - }, - { - "from": 768, - "to": 769, - "id": "0x77" - }, - { - "from": 770, - "to": 770, - "id": "0x76" - }, - { - "from": 771, - "to": 772, - "id": "0x76" - } - ], - "play.toClient.entity_update_attributes": [ - { - "from": 735, - "to": 736, - "id": "0x58" - }, - { - "from": 751, - "to": 754, - "id": "0x58" - }, - { - "from": 755, - "to": 755, - "id": "0x63" - }, - { - "from": 756, - "to": 756, - "id": "0x63" - }, - { - "from": 757, - "to": 758, - "id": "0x64" - }, - { - "from": 759, - "to": 759, - "id": "0x65" - }, - { - "from": 760, - "to": 760, - "id": "0x68" - }, - { - "from": 761, - "to": 761, - "id": "0x66" - }, - { - "from": 762, - "to": 763, - "id": "0x6A" - }, - { - "from": 764, - "to": 764, - "id": "0x6D" - }, - { - "from": 765, - "to": 765, - "id": "0x71" - }, - { - "from": 766, - "to": 766, - "id": "0x75" - }, - { - "from": 767, - "to": 767, - "id": "0x75" - }, - { - "from": 768, - "to": 769, - "id": "0x7C" - }, - { - "from": 770, - "to": 770, - "id": "0x7C" - }, - { - "from": 771, - "to": 772, - "id": "0x7C" - } - ], - "play.toClient.entity_velocity": [ - { - "from": 735, - "to": 736, - "id": "0x46" - }, - { - "from": 751, - "to": 754, - "id": "0x46" - }, - { - "from": 755, - "to": 755, - "id": "0x4F" - }, - { - "from": 756, - "to": 756, - "id": "0x4F" - }, - { - "from": 757, - "to": 758, - "id": "0x4F" - }, - { - "from": 759, - "to": 759, - "id": "0x4F" - }, - { - "from": 760, - "to": 760, - "id": "0x52" - }, - { - "from": 761, - "to": 761, - "id": "0x50" - }, - { - "from": 762, - "to": 763, - "id": "0x54" - }, - { - "from": 764, - "to": 764, - "id": "0x56" - }, - { - "from": 765, - "to": 765, - "id": "0x58" - }, - { - "from": 766, - "to": 766, - "id": "0x5A" - }, - { - "from": 767, - "to": 767, - "id": "0x5A" - }, - { - "from": 768, - "to": 769, - "id": "0x5F" - }, - { - "from": 770, - "to": 770, - "id": "0x5E" - }, - { - "from": 771, - "to": 772, - "id": "0x5E" - } - ], - "play.toClient.experience": [ - { - "from": 735, - "to": 736, - "id": "0x48" - }, - { - "from": 751, - "to": 754, - "id": "0x48" - }, - { - "from": 755, - "to": 755, - "id": "0x51" - }, - { - "from": 756, - "to": 756, - "id": "0x51" - }, - { - "from": 757, - "to": 758, - "id": "0x51" - }, - { - "from": 759, - "to": 759, - "id": "0x51" - }, - { - "from": 760, - "to": 760, - "id": "0x54" - }, - { - "from": 761, - "to": 761, - "id": "0x52" - }, - { - "from": 762, - "to": 763, - "id": "0x56" - }, - { - "from": 764, - "to": 764, - "id": "0x58" - }, - { - "from": 765, - "to": 765, - "id": "0x5A" - }, - { - "from": 766, - "to": 766, - "id": "0x5C" - }, - { - "from": 767, - "to": 767, - "id": "0x5C" - }, - { - "from": 768, - "to": 769, - "id": "0x61" - }, - { - "from": 770, - "to": 770, - "id": "0x60" - }, - { - "from": 771, - "to": 772, - "id": "0x60" - } - ], - "play.toClient.explosion": [ - { - "from": 735, - "to": 736, - "id": "0x1C" - }, - { - "from": 751, - "to": 754, - "id": "0x1B" - }, - { - "from": 755, - "to": 755, - "id": "0x1C" - }, - { - "from": 756, - "to": 756, - "id": "0x1C" - }, - { - "from": 757, - "to": 758, - "id": "0x1C" - }, - { - "from": 759, - "to": 759, - "id": "0x19" - }, - { - "from": 760, - "to": 760, - "id": "0x1B" - }, - { - "from": 761, - "to": 761, - "id": "0x1A" - }, - { - "from": 762, - "to": 763, - "id": "0x1D" - }, - { - "from": 764, - "to": 764, - "id": "0x1E" - }, - { - "from": 765, - "to": 765, - "id": "0x1E" - }, - { - "from": 766, - "to": 766, - "id": "0x20" - }, - { - "from": 767, - "to": 767, - "id": "0x20" - }, - { - "from": 768, - "to": 769, - "id": "0x21" - }, - { - "from": 770, - "to": 770, - "id": "0x20" - }, - { - "from": 771, - "to": 772, - "id": "0x20" - } - ], - "play.toClient.face_player": [ - { - "from": 735, - "to": 736, - "id": "0x34" - }, - { - "from": 751, - "to": 754, - "id": "0x33" - }, - { - "from": 755, - "to": 755, - "id": "0x37" - }, - { - "from": 756, - "to": 756, - "id": "0x37" - }, - { - "from": 757, - "to": 758, - "id": "0x37" - }, - { - "from": 759, - "to": 759, - "id": "0x35" - }, - { - "from": 760, - "to": 760, - "id": "0x38" - }, - { - "from": 761, - "to": 761, - "id": "0x37" - }, - { - "from": 762, - "to": 763, - "id": "0x3B" - }, - { - "from": 764, - "to": 764, - "id": "0x3D" - }, - { - "from": 765, - "to": 765, - "id": "0x3D" - }, - { - "from": 766, - "to": 766, - "id": "0x3F" - }, - { - "from": 767, - "to": 767, - "id": "0x3F" - }, - { - "from": 768, - "to": 769, - "id": "0x41" - }, - { - "from": 770, - "to": 770, - "id": "0x40" - }, - { - "from": 771, - "to": 772, - "id": "0x40" - } - ], - "play.toClient.feature_flags": [ - { - "from": 761, - "to": 761, - "id": "0x67" - }, - { - "from": 762, - "to": 763, - "id": "0x6B" - } - ], - "play.toClient.game_state_change": [ - { - "from": 735, - "to": 736, - "id": "0x1E" - }, - { - "from": 751, - "to": 754, - "id": "0x1D" - }, - { - "from": 755, - "to": 755, - "id": "0x1E" - }, - { - "from": 756, - "to": 756, - "id": "0x1E" - }, - { - "from": 757, - "to": 758, - "id": "0x1E" - }, - { - "from": 759, - "to": 759, - "id": "0x1B" - }, - { - "from": 760, - "to": 760, - "id": "0x1D" - }, - { - "from": 761, - "to": 761, - "id": "0x1C" - }, - { - "from": 762, - "to": 763, - "id": "0x1F" - }, - { - "from": 764, - "to": 764, - "id": "0x20" - }, - { - "from": 765, - "to": 765, - "id": "0x20" - }, - { - "from": 766, - "to": 766, - "id": "0x22" - }, - { - "from": 767, - "to": 767, - "id": "0x22" - }, - { - "from": 768, - "to": 769, - "id": "0x23" - }, - { - "from": 770, - "to": 770, - "id": "0x22" - }, - { - "from": 771, - "to": 772, - "id": "0x22" - } - ], - "play.toClient.held_item_slot": [ - { - "from": 735, - "to": 736, - "id": "0x3F" - }, - { - "from": 751, - "to": 754, - "id": "0x3F" - }, - { - "from": 755, - "to": 755, - "id": "0x48" - }, - { - "from": 756, - "to": 756, - "id": "0x48" - }, - { - "from": 757, - "to": 758, - "id": "0x48" - }, - { - "from": 759, - "to": 759, - "id": "0x47" - }, - { - "from": 760, - "to": 760, - "id": "0x4A" - }, - { - "from": 761, - "to": 761, - "id": "0x49" - }, - { - "from": 762, - "to": 763, - "id": "0x4D" - }, - { - "from": 764, - "to": 764, - "id": "0x4F" - }, - { - "from": 765, - "to": 765, - "id": "0x51" - }, - { - "from": 766, - "to": 766, - "id": "0x53" - }, - { - "from": 767, - "to": 767, - "id": "0x53" - }, - { - "from": 768, - "to": 769, - "id": "0x63" - }, - { - "from": 770, - "to": 770, - "id": "0x62" - }, - { - "from": 771, - "to": 772, - "id": "0x62" - } - ], - "play.toClient.hide_message": [ - { - "from": 760, - "to": 760, - "id": "0x18" - }, - { - "from": 761, - "to": 761, - "id": "0x16" - }, - { - "from": 762, - "to": 763, - "id": "0x19" - }, - { - "from": 764, - "to": 764, - "id": "0x1A" - }, - { - "from": 765, - "to": 765, - "id": "0x1A" - }, - { - "from": 766, - "to": 766, - "id": "0x1C" - }, - { - "from": 767, - "to": 767, - "id": "0x1C" - }, - { - "from": 768, - "to": 769, - "id": "0x1C" - }, - { - "from": 770, - "to": 770, - "id": "0x1B" - }, - { - "from": 771, - "to": 772, - "id": "0x1B" - } - ], - "play.toClient.hurt_animation": [ - { - "from": 762, - "to": 763, - "id": "0x21" - }, - { - "from": 764, - "to": 764, - "id": "0x22" - }, - { - "from": 765, - "to": 765, - "id": "0x22" - }, - { - "from": 766, - "to": 766, - "id": "0x24" - }, - { - "from": 767, - "to": 767, - "id": "0x24" - }, - { - "from": 768, - "to": 769, - "id": "0x25" - }, - { - "from": 770, - "to": 770, - "id": "0x24" - }, - { - "from": 771, - "to": 772, - "id": "0x24" - } - ], - "play.toClient.initialize_world_border": [ - { - "from": 755, - "to": 755, - "id": "0x20" - }, - { - "from": 756, - "to": 756, - "id": "0x20" - }, - { - "from": 757, - "to": 758, - "id": "0x20" - }, - { - "from": 759, - "to": 759, - "id": "0x1D" - }, - { - "from": 760, - "to": 760, - "id": "0x1F" - }, - { - "from": 761, - "to": 761, - "id": "0x1E" - }, - { - "from": 762, - "to": 763, - "id": "0x22" - }, - { - "from": 764, - "to": 764, - "id": "0x23" - }, - { - "from": 765, - "to": 765, - "id": "0x23" - }, - { - "from": 766, - "to": 766, - "id": "0x25" - }, - { - "from": 767, - "to": 767, - "id": "0x25" - }, - { - "from": 768, - "to": 769, - "id": "0x26" - }, - { - "from": 770, - "to": 770, - "id": "0x25" - }, - { - "from": 771, - "to": 772, - "id": "0x25" - } - ], - "play.toClient.keep_alive": [ - { - "from": 735, - "to": 736, - "id": "0x20" - }, - { - "from": 751, - "to": 754, - "id": "0x1F" - }, - { - "from": 755, - "to": 755, - "id": "0x21" - }, - { - "from": 756, - "to": 756, - "id": "0x21" - }, - { - "from": 757, - "to": 758, - "id": "0x21" - }, - { - "from": 759, - "to": 759, - "id": "0x1E" - }, - { - "from": 760, - "to": 760, - "id": "0x20" - }, - { - "from": 761, - "to": 761, - "id": "0x1F" - }, - { - "from": 762, - "to": 763, - "id": "0x23" - }, - { - "from": 764, - "to": 764, - "id": "0x24" - }, - { - "from": 765, - "to": 765, - "id": "0x24" - }, - { - "from": 766, - "to": 766, - "id": "0x26" - }, - { - "from": 767, - "to": 767, - "id": "0x26" - }, - { - "from": 768, - "to": 769, - "id": "0x27" - }, - { - "from": 770, - "to": 770, - "id": "0x26" - }, - { - "from": 771, - "to": 772, - "id": "0x26" - } - ], - "play.toClient.kick_disconnect": [ - { - "from": 735, - "to": 736, - "id": "0x1A" - }, - { - "from": 751, - "to": 754, - "id": "0x19" - }, - { - "from": 755, - "to": 755, - "id": "0x1A" - }, - { - "from": 756, - "to": 756, - "id": "0x1A" - }, - { - "from": 757, - "to": 758, - "id": "0x1A" - }, - { - "from": 759, - "to": 759, - "id": "0x17" - }, - { - "from": 760, - "to": 760, - "id": "0x19" - }, - { - "from": 761, - "to": 761, - "id": "0x17" - }, - { - "from": 762, - "to": 763, - "id": "0x1A" - }, - { - "from": 764, - "to": 764, - "id": "0x1B" - }, - { - "from": 765, - "to": 765, - "id": "0x1B" - }, - { - "from": 766, - "to": 766, - "id": "0x1D" - }, - { - "from": 767, - "to": 767, - "id": "0x1D" - }, - { - "from": 768, - "to": 769, - "id": "0x1D" - }, - { - "from": 770, - "to": 770, - "id": "0x1C" - }, - { - "from": 771, - "to": 772, - "id": "0x1C" - } - ], - "play.toClient.login": [ - { - "from": 735, - "to": 736, - "id": "0x25" - }, - { - "from": 751, - "to": 754, - "id": "0x24" - }, - { - "from": 755, - "to": 755, - "id": "0x26" - }, - { - "from": 756, - "to": 756, - "id": "0x26" - }, - { - "from": 757, - "to": 758, - "id": "0x26" - }, - { - "from": 759, - "to": 759, - "id": "0x23" - }, - { - "from": 760, - "to": 760, - "id": "0x25" - }, - { - "from": 761, - "to": 761, - "id": "0x24" - }, - { - "from": 762, - "to": 763, - "id": "0x28" - }, - { - "from": 764, - "to": 764, - "id": "0x29" - }, - { - "from": 765, - "to": 765, - "id": "0x29" - }, - { - "from": 766, - "to": 766, - "id": "0x2B" - }, - { - "from": 767, - "to": 767, - "id": "0x2B" - }, - { - "from": 768, - "to": 769, - "id": "0x2C" - }, - { - "from": 770, - "to": 770, - "id": "0x2B" - }, - { - "from": 771, - "to": 772, - "id": "0x2B" - } - ], - "play.toClient.map": [ - { - "from": 735, - "to": 736, - "id": "0x26" - }, - { - "from": 751, - "to": 754, - "id": "0x25" - }, - { - "from": 755, - "to": 755, - "id": "0x27" - }, - { - "from": 756, - "to": 756, - "id": "0x27" - }, - { - "from": 757, - "to": 758, - "id": "0x27" - }, - { - "from": 759, - "to": 759, - "id": "0x24" - }, - { - "from": 760, - "to": 760, - "id": "0x26" - }, - { - "from": 761, - "to": 761, - "id": "0x25" - }, - { - "from": 762, - "to": 763, - "id": "0x29" - }, - { - "from": 764, - "to": 764, - "id": "0x2A" - }, - { - "from": 765, - "to": 765, - "id": "0x2A" - }, - { - "from": 766, - "to": 766, - "id": "0x2C" - }, - { - "from": 767, - "to": 767, - "id": "0x2C" - }, - { - "from": 768, - "to": 769, - "id": "0x2D" - }, - { - "from": 770, - "to": 770, - "id": "0x2C" - }, - { - "from": 771, - "to": 772, - "id": "0x2C" - } - ], - "play.toClient.map_chunk": [ - { - "from": 735, - "to": 736, - "id": "0x21" - }, - { - "from": 751, - "to": 754, - "id": "0x20" - }, - { - "from": 755, - "to": 755, - "id": "0x22" - }, - { - "from": 756, - "to": 756, - "id": "0x22" - }, - { - "from": 757, - "to": 758, - "id": "0x22" - }, - { - "from": 759, - "to": 759, - "id": "0x1F" - }, - { - "from": 760, - "to": 760, - "id": "0x21" - }, - { - "from": 761, - "to": 761, - "id": "0x20" - }, - { - "from": 762, - "to": 763, - "id": "0x24" - }, - { - "from": 764, - "to": 764, - "id": "0x25" - }, - { - "from": 765, - "to": 765, - "id": "0x25" - }, - { - "from": 766, - "to": 766, - "id": "0x27" - }, - { - "from": 767, - "to": 767, - "id": "0x27" - }, - { - "from": 768, - "to": 769, - "id": "0x28" - }, - { - "from": 770, - "to": 770, - "id": "0x27" - }, - { - "from": 771, - "to": 772, - "id": "0x27" - } - ], - "play.toClient.message_header": [ - { - "from": 760, - "to": 760, - "id": "0x32" - } - ], - "play.toClient.move_minecart": [ - { - "from": 768, - "to": 769, - "id": "0x31" - }, - { - "from": 770, - "to": 770, - "id": "0x30" - }, - { - "from": 771, - "to": 772, - "id": "0x30" - } - ], - "play.toClient.multi_block_change": [ - { - "from": 735, - "to": 736, - "id": "0x0F" - }, - { - "from": 751, - "to": 754, - "id": "0x3B" - }, - { - "from": 755, - "to": 755, - "id": "0x3F" - }, - { - "from": 756, - "to": 756, - "id": "0x3F" - }, - { - "from": 757, - "to": 758, - "id": "0x3F" - }, - { - "from": 759, - "to": 759, - "id": "0x3D" - }, - { - "from": 760, - "to": 760, - "id": "0x40" - }, - { - "from": 761, - "to": 761, - "id": "0x3F" - }, - { - "from": 762, - "to": 763, - "id": "0x43" - }, - { - "from": 764, - "to": 764, - "id": "0x45" - }, - { - "from": 765, - "to": 765, - "id": "0x47" - }, - { - "from": 766, - "to": 766, - "id": "0x49" - }, - { - "from": 767, - "to": 767, - "id": "0x49" - }, - { - "from": 768, - "to": 769, - "id": "0x4E" - }, - { - "from": 770, - "to": 770, - "id": "0x4D" - }, - { - "from": 771, - "to": 772, - "id": "0x4D" - } - ], - "play.toClient.named_entity_spawn": [ - { - "from": 735, - "to": 736, - "id": "0x04" - }, - { - "from": 751, - "to": 754, - "id": "0x04" - }, - { - "from": 755, - "to": 755, - "id": "0x04" - }, - { - "from": 756, - "to": 756, - "id": "0x04" - }, - { - "from": 757, - "to": 758, - "id": "0x04" - }, - { - "from": 759, - "to": 759, - "id": "0x02" - }, - { - "from": 760, - "to": 760, - "id": "0x02" - }, - { - "from": 761, - "to": 761, - "id": "0x02" - }, - { - "from": 762, - "to": 763, - "id": "0x03" - } - ], - "play.toClient.named_sound_effect": [ - { - "from": 735, - "to": 736, - "id": "0x19" - }, - { - "from": 751, - "to": 754, - "id": "0x18" - }, - { - "from": 755, - "to": 755, - "id": "0x19" - }, - { - "from": 756, - "to": 756, - "id": "0x19" - }, - { - "from": 757, - "to": 758, - "id": "0x19" - }, - { - "from": 759, - "to": 759, - "id": "0x16" - }, - { - "from": 760, - "to": 760, - "id": "0x17" - } - ], - "play.toClient.nbt_query_response": [ - { - "from": 735, - "to": 736, - "id": "0x54" - }, - { - "from": 751, - "to": 754, - "id": "0x54" - }, - { - "from": 755, - "to": 755, - "id": "0x5F" - }, - { - "from": 756, - "to": 756, - "id": "0x5F" - }, - { - "from": 757, - "to": 758, - "id": "0x60" - }, - { - "from": 759, - "to": 759, - "id": "0x61" - }, - { - "from": 760, - "to": 760, - "id": "0x64" - }, - { - "from": 761, - "to": 761, - "id": "0x62" - }, - { - "from": 762, - "to": 763, - "id": "0x66" - }, - { - "from": 764, - "to": 764, - "id": "0x69" - }, - { - "from": 765, - "to": 765, - "id": "0x6B" - }, - { - "from": 766, - "to": 766, - "id": "0x6E" - }, - { - "from": 767, - "to": 767, - "id": "0x6E" - }, - { - "from": 768, - "to": 769, - "id": "0x75" - }, - { - "from": 770, - "to": 770, - "id": "0x74" - }, - { - "from": 771, - "to": 772, - "id": "0x74" - } - ], - "play.toClient.open_book": [ - { - "from": 735, - "to": 736, - "id": "0x2D" - }, - { - "from": 751, - "to": 754, - "id": "0x2C" - }, - { - "from": 755, - "to": 755, - "id": "0x2D" - }, - { - "from": 756, - "to": 756, - "id": "0x2D" - }, - { - "from": 757, - "to": 758, - "id": "0x2D" - }, - { - "from": 759, - "to": 759, - "id": "0x2A" - }, - { - "from": 760, - "to": 760, - "id": "0x2C" - }, - { - "from": 761, - "to": 761, - "id": "0x2B" - }, - { - "from": 762, - "to": 763, - "id": "0x2F" - }, - { - "from": 764, - "to": 764, - "id": "0x30" - }, - { - "from": 765, - "to": 765, - "id": "0x30" - }, - { - "from": 766, - "to": 766, - "id": "0x32" - }, - { - "from": 767, - "to": 767, - "id": "0x32" - }, - { - "from": 768, - "to": 769, - "id": "0x34" - }, - { - "from": 770, - "to": 770, - "id": "0x33" - }, - { - "from": 771, - "to": 772, - "id": "0x33" - } - ], - "play.toClient.open_horse_window": [ - { - "from": 735, - "to": 736, - "id": "0x1F" - }, - { - "from": 751, - "to": 754, - "id": "0x1E" - }, - { - "from": 755, - "to": 755, - "id": "0x1F" - }, - { - "from": 756, - "to": 756, - "id": "0x1F" - }, - { - "from": 757, - "to": 758, - "id": "0x1F" - }, - { - "from": 759, - "to": 759, - "id": "0x1C" - }, - { - "from": 760, - "to": 760, - "id": "0x1E" - }, - { - "from": 761, - "to": 761, - "id": "0x1D" - }, - { - "from": 762, - "to": 763, - "id": "0x20" - }, - { - "from": 764, - "to": 764, - "id": "0x21" - }, - { - "from": 765, - "to": 765, - "id": "0x21" - }, - { - "from": 766, - "to": 766, - "id": "0x23" - }, - { - "from": 767, - "to": 767, - "id": "0x23" - }, - { - "from": 768, - "to": 769, - "id": "0x24" - }, - { - "from": 770, - "to": 770, - "id": "0x23" - }, - { - "from": 771, - "to": 772, - "id": "0x23" - } - ], - "play.toClient.open_sign_entity": [ - { - "from": 735, - "to": 736, - "id": "0x2F" - }, - { - "from": 751, - "to": 754, - "id": "0x2E" - }, - { - "from": 755, - "to": 755, - "id": "0x2F" - }, - { - "from": 756, - "to": 756, - "id": "0x2F" - }, - { - "from": 757, - "to": 758, - "id": "0x2F" - }, - { - "from": 759, - "to": 759, - "id": "0x2C" - }, - { - "from": 760, - "to": 760, - "id": "0x2E" - }, - { - "from": 761, - "to": 761, - "id": "0x2D" - }, - { - "from": 762, - "to": 763, - "id": "0x31" - }, - { - "from": 764, - "to": 764, - "id": "0x32" - }, - { - "from": 765, - "to": 765, - "id": "0x32" - }, - { - "from": 766, - "to": 766, - "id": "0x34" - }, - { - "from": 767, - "to": 767, - "id": "0x34" - }, - { - "from": 768, - "to": 769, - "id": "0x36" - }, - { - "from": 770, - "to": 770, - "id": "0x35" - }, - { - "from": 771, - "to": 772, - "id": "0x35" - } - ], - "play.toClient.open_window": [ - { - "from": 735, - "to": 736, - "id": "0x2E" - }, - { - "from": 751, - "to": 754, - "id": "0x2D" - }, - { - "from": 755, - "to": 755, - "id": "0x2E" - }, - { - "from": 756, - "to": 756, - "id": "0x2E" - }, - { - "from": 757, - "to": 758, - "id": "0x2E" - }, - { - "from": 759, - "to": 759, - "id": "0x2B" - }, - { - "from": 760, - "to": 760, - "id": "0x2D" - }, - { - "from": 761, - "to": 761, - "id": "0x2C" - }, - { - "from": 762, - "to": 763, - "id": "0x30" - }, - { - "from": 764, - "to": 764, - "id": "0x31" - }, - { - "from": 765, - "to": 765, - "id": "0x31" - }, - { - "from": 766, - "to": 766, - "id": "0x33" - }, - { - "from": 767, - "to": 767, - "id": "0x33" - }, - { - "from": 768, - "to": 769, - "id": "0x35" - }, - { - "from": 770, - "to": 770, - "id": "0x34" - }, - { - "from": 771, - "to": 772, - "id": "0x34" - } - ], - "play.toClient.ping": [ - { - "from": 755, - "to": 755, - "id": "0x30" - }, - { - "from": 756, - "to": 756, - "id": "0x30" - }, - { - "from": 757, - "to": 758, - "id": "0x30" - }, - { - "from": 759, - "to": 759, - "id": "0x2D" - }, - { - "from": 760, - "to": 760, - "id": "0x2F" - }, - { - "from": 761, - "to": 761, - "id": "0x2E" - }, - { - "from": 762, - "to": 763, - "id": "0x32" - }, - { - "from": 764, - "to": 764, - "id": "0x33" - }, - { - "from": 765, - "to": 765, - "id": "0x33" - }, - { - "from": 766, - "to": 766, - "id": "0x35" - }, - { - "from": 767, - "to": 767, - "id": "0x35" - }, - { - "from": 768, - "to": 769, - "id": "0x37" - }, - { - "from": 770, - "to": 770, - "id": "0x36" - }, - { - "from": 771, - "to": 772, - "id": "0x36" - } - ], - "play.toClient.ping_response": [ - { - "from": 764, - "to": 764, - "id": "0x34" - }, - { - "from": 765, - "to": 765, - "id": "0x34" - }, - { - "from": 766, - "to": 766, - "id": "0x36" - }, - { - "from": 767, - "to": 767, - "id": "0x36" - }, - { - "from": 768, - "to": 769, - "id": "0x38" - }, - { - "from": 770, - "to": 770, - "id": "0x37" - }, - { - "from": 771, - "to": 772, - "id": "0x37" - } - ], - "play.toClient.player_chat": [ - { - "from": 759, - "to": 759, - "id": "0x30" - }, - { - "from": 760, - "to": 760, - "id": "0x33" - }, - { - "from": 761, - "to": 761, - "id": "0x31" - }, - { - "from": 762, - "to": 763, - "id": "0x35" - }, - { - "from": 764, - "to": 764, - "id": "0x37" - }, - { - "from": 765, - "to": 765, - "id": "0x37" - }, - { - "from": 766, - "to": 766, - "id": "0x39" - }, - { - "from": 767, - "to": 767, - "id": "0x39" - }, - { - "from": 768, - "to": 769, - "id": "0x3B" - }, - { - "from": 770, - "to": 770, - "id": "0x3A" - }, - { - "from": 771, - "to": 772, - "id": "0x3A" - } - ], - "play.toClient.player_info": [ - { - "from": 735, - "to": 736, - "id": "0x33" - }, - { - "from": 751, - "to": 754, - "id": "0x32" - }, - { - "from": 755, - "to": 755, - "id": "0x36" - }, - { - "from": 756, - "to": 756, - "id": "0x36" - }, - { - "from": 757, - "to": 758, - "id": "0x36" - }, - { - "from": 759, - "to": 759, - "id": "0x34" - }, - { - "from": 760, - "to": 760, - "id": "0x37" - }, - { - "from": 761, - "to": 761, - "id": "0x36" - }, - { - "from": 762, - "to": 763, - "id": "0x3A" - }, - { - "from": 764, - "to": 764, - "id": "0x3C" - }, - { - "from": 765, - "to": 765, - "id": "0x3C" - }, - { - "from": 766, - "to": 766, - "id": "0x3E" - }, - { - "from": 767, - "to": 767, - "id": "0x3E" - }, - { - "from": 768, - "to": 769, - "id": "0x40" - }, - { - "from": 770, - "to": 770, - "id": "0x3F" - }, - { - "from": 771, - "to": 772, - "id": "0x3F" - } - ], - "play.toClient.player_remove": [ - { - "from": 761, - "to": 761, - "id": "0x35" - }, - { - "from": 762, - "to": 763, - "id": "0x39" - }, - { - "from": 764, - "to": 764, - "id": "0x3B" - }, - { - "from": 765, - "to": 765, - "id": "0x3B" - }, - { - "from": 766, - "to": 766, - "id": "0x3D" - }, - { - "from": 767, - "to": 767, - "id": "0x3D" - }, - { - "from": 768, - "to": 769, - "id": "0x3F" - }, - { - "from": 770, - "to": 770, - "id": "0x3E" - }, - { - "from": 771, - "to": 772, - "id": "0x3E" - } - ], - "play.toClient.player_rotation": [ - { - "from": 768, - "to": 769, - "id": "0x43" - }, - { - "from": 770, - "to": 770, - "id": "0x42" - }, - { - "from": 771, - "to": 772, - "id": "0x42" - } - ], - "play.toClient.playerlist_header": [ - { - "from": 735, - "to": 736, - "id": "0x53" - }, - { - "from": 751, - "to": 754, - "id": "0x53" - }, - { - "from": 755, - "to": 755, - "id": "0x5E" - }, - { - "from": 756, - "to": 756, - "id": "0x5E" - }, - { - "from": 757, - "to": 758, - "id": "0x5F" - }, - { - "from": 759, - "to": 759, - "id": "0x60" - }, - { - "from": 760, - "to": 760, - "id": "0x63" - }, - { - "from": 761, - "to": 761, - "id": "0x61" - }, - { - "from": 762, - "to": 763, - "id": "0x65" - }, - { - "from": 764, - "to": 764, - "id": "0x68" - }, - { - "from": 765, - "to": 765, - "id": "0x6A" - }, - { - "from": 766, - "to": 766, - "id": "0x6D" - }, - { - "from": 767, - "to": 767, - "id": "0x6D" - }, - { - "from": 768, - "to": 769, - "id": "0x74" - }, - { - "from": 770, - "to": 770, - "id": "0x73" - }, - { - "from": 771, - "to": 772, - "id": "0x73" - } - ], - "play.toClient.position": [ - { - "from": 735, - "to": 736, - "id": "0x35" - }, - { - "from": 751, - "to": 754, - "id": "0x34" - }, - { - "from": 755, - "to": 755, - "id": "0x38" - }, - { - "from": 756, - "to": 756, - "id": "0x38" - }, - { - "from": 757, - "to": 758, - "id": "0x38" - }, - { - "from": 759, - "to": 759, - "id": "0x36" - }, - { - "from": 760, - "to": 760, - "id": "0x39" - }, - { - "from": 761, - "to": 761, - "id": "0x38" - }, - { - "from": 762, - "to": 763, - "id": "0x3C" - }, - { - "from": 764, - "to": 764, - "id": "0x3E" - }, - { - "from": 765, - "to": 765, - "id": "0x3E" - }, - { - "from": 766, - "to": 766, - "id": "0x40" - }, - { - "from": 767, - "to": 767, - "id": "0x40" - }, - { - "from": 768, - "to": 769, - "id": "0x42" - }, - { - "from": 770, - "to": 770, - "id": "0x41" - }, - { - "from": 771, - "to": 772, - "id": "0x41" - } - ], - "play.toClient.profileless_chat": [ - { - "from": 761, - "to": 761, - "id": "0x18" - }, - { - "from": 762, - "to": 763, - "id": "0x1B" - }, - { - "from": 764, - "to": 764, - "id": "0x1C" - }, - { - "from": 765, - "to": 765, - "id": "0x1C" - }, - { - "from": 766, - "to": 766, - "id": "0x1E" - }, - { - "from": 767, - "to": 767, - "id": "0x1E" - }, - { - "from": 768, - "to": 769, - "id": "0x1E" - }, - { - "from": 770, - "to": 770, - "id": "0x1D" - }, - { - "from": 771, - "to": 772, - "id": "0x1D" - } - ], - "play.toClient.recipe_book_add": [ - { - "from": 768, - "to": 769, - "id": "0x44" - }, - { - "from": 770, - "to": 770, - "id": "0x43" - }, - { - "from": 771, - "to": 772, - "id": "0x43" - } - ], - "play.toClient.recipe_book_remove": [ - { - "from": 768, - "to": 769, - "id": "0x45" - }, - { - "from": 770, - "to": 770, - "id": "0x44" - }, - { - "from": 771, - "to": 772, - "id": "0x44" - } - ], - "play.toClient.recipe_book_settings": [ - { - "from": 768, - "to": 769, - "id": "0x46" - }, - { - "from": 770, - "to": 770, - "id": "0x45" - }, - { - "from": 771, - "to": 772, - "id": "0x45" - } - ], - "play.toClient.rel_entity_move": [ - { - "from": 735, - "to": 736, - "id": "0x28" - }, - { - "from": 751, - "to": 754, - "id": "0x27" - }, - { - "from": 755, - "to": 755, - "id": "0x29" - }, - { - "from": 756, - "to": 756, - "id": "0x29" - }, - { - "from": 757, - "to": 758, - "id": "0x29" - }, - { - "from": 759, - "to": 759, - "id": "0x26" - }, - { - "from": 760, - "to": 760, - "id": "0x28" - }, - { - "from": 761, - "to": 761, - "id": "0x27" - }, - { - "from": 762, - "to": 763, - "id": "0x2B" - }, - { - "from": 764, - "to": 764, - "id": "0x2C" - }, - { - "from": 765, - "to": 765, - "id": "0x2C" - }, - { - "from": 766, - "to": 766, - "id": "0x2E" - }, - { - "from": 767, - "to": 767, - "id": "0x2E" - }, - { - "from": 768, - "to": 769, - "id": "0x2F" - }, - { - "from": 770, - "to": 770, - "id": "0x2E" - }, - { - "from": 771, - "to": 772, - "id": "0x2E" - } - ], - "play.toClient.remove_entity_effect": [ - { - "from": 735, - "to": 736, - "id": "0x38" - }, - { - "from": 751, - "to": 754, - "id": "0x37" - }, - { - "from": 755, - "to": 755, - "id": "0x3B" - }, - { - "from": 756, - "to": 756, - "id": "0x3B" - }, - { - "from": 757, - "to": 758, - "id": "0x3B" - }, - { - "from": 759, - "to": 759, - "id": "0x39" - }, - { - "from": 760, - "to": 760, - "id": "0x3C" - }, - { - "from": 761, - "to": 761, - "id": "0x3B" - }, - { - "from": 762, - "to": 763, - "id": "0x3F" - }, - { - "from": 764, - "to": 764, - "id": "0x41" - }, - { - "from": 765, - "to": 765, - "id": "0x41" - }, - { - "from": 766, - "to": 766, - "id": "0x43" - }, - { - "from": 767, - "to": 767, - "id": "0x43" - }, - { - "from": 768, - "to": 769, - "id": "0x48" - }, - { - "from": 770, - "to": 770, - "id": "0x47" - }, - { - "from": 771, - "to": 772, - "id": "0x47" - } - ], - "play.toClient.remove_resource_pack": [ - { - "from": 765, - "to": 765, - "id": "0x43" - }, - { - "from": 766, - "to": 766, - "id": "0x45" - }, - { - "from": 767, - "to": 767, - "id": "0x45" - }, - { - "from": 768, - "to": 769, - "id": "0x4A" - }, - { - "from": 770, - "to": 770, - "id": "0x49" - }, - { - "from": 771, - "to": 772, - "id": "0x49" - } - ], - "play.toClient.reset_score": [ - { - "from": 765, - "to": 765, - "id": "0x42" - }, - { - "from": 766, - "to": 766, - "id": "0x44" - }, - { - "from": 767, - "to": 767, - "id": "0x44" - }, - { - "from": 768, - "to": 769, - "id": "0x49" - }, - { - "from": 770, - "to": 770, - "id": "0x48" - }, - { - "from": 771, - "to": 772, - "id": "0x48" - } - ], - "play.toClient.resource_pack_send": [ - { - "from": 735, - "to": 736, - "id": "0x39" - }, - { - "from": 751, - "to": 754, - "id": "0x38" - }, - { - "from": 755, - "to": 755, - "id": "0x3C" - }, - { - "from": 756, - "to": 756, - "id": "0x3C" - }, - { - "from": 757, - "to": 758, - "id": "0x3C" - }, - { - "from": 759, - "to": 759, - "id": "0x3A" - }, - { - "from": 760, - "to": 760, - "id": "0x3D" - }, - { - "from": 761, - "to": 761, - "id": "0x3C" - }, - { - "from": 762, - "to": 763, - "id": "0x40" - }, - { - "from": 764, - "to": 764, - "id": "0x42" - } - ], - "play.toClient.respawn": [ - { - "from": 735, - "to": 736, - "id": "0x3A" - }, - { - "from": 751, - "to": 754, - "id": "0x39" - }, - { - "from": 755, - "to": 755, - "id": "0x3D" - }, - { - "from": 756, - "to": 756, - "id": "0x3D" - }, - { - "from": 757, - "to": 758, - "id": "0x3D" - }, - { - "from": 759, - "to": 759, - "id": "0x3B" - }, - { - "from": 760, - "to": 760, - "id": "0x3E" - }, - { - "from": 761, - "to": 761, - "id": "0x3D" - }, - { - "from": 762, - "to": 763, - "id": "0x41" - }, - { - "from": 764, - "to": 764, - "id": "0x43" - }, - { - "from": 765, - "to": 765, - "id": "0x45" - }, - { - "from": 766, - "to": 766, - "id": "0x47" - }, - { - "from": 767, - "to": 767, - "id": "0x47" - }, - { - "from": 768, - "to": 769, - "id": "0x4C" - }, - { - "from": 770, - "to": 770, - "id": "0x4B" - }, - { - "from": 771, - "to": 772, - "id": "0x4B" - } - ], - "play.toClient.scoreboard_display_objective": [ - { - "from": 735, - "to": 736, - "id": "0x43" - }, - { - "from": 751, - "to": 754, - "id": "0x43" - }, - { - "from": 755, - "to": 755, - "id": "0x4C" - }, - { - "from": 756, - "to": 756, - "id": "0x4C" - }, - { - "from": 757, - "to": 758, - "id": "0x4C" - }, - { - "from": 759, - "to": 759, - "id": "0x4C" - }, - { - "from": 760, - "to": 760, - "id": "0x4F" - }, - { - "from": 761, - "to": 761, - "id": "0x4D" - }, - { - "from": 762, - "to": 763, - "id": "0x51" - }, - { - "from": 764, - "to": 764, - "id": "0x53" - }, - { - "from": 765, - "to": 765, - "id": "0x55" - }, - { - "from": 766, - "to": 766, - "id": "0x57" - }, - { - "from": 767, - "to": 767, - "id": "0x57" - }, - { - "from": 768, - "to": 769, - "id": "0x5C" - }, - { - "from": 770, - "to": 770, - "id": "0x5B" - }, - { - "from": 771, - "to": 772, - "id": "0x5B" - } - ], - "play.toClient.scoreboard_objective": [ - { - "from": 735, - "to": 736, - "id": "0x4A" - }, - { - "from": 751, - "to": 754, - "id": "0x4A" - }, - { - "from": 755, - "to": 755, - "id": "0x53" - }, - { - "from": 756, - "to": 756, - "id": "0x53" - }, - { - "from": 757, - "to": 758, - "id": "0x53" - }, - { - "from": 759, - "to": 759, - "id": "0x53" - }, - { - "from": 760, - "to": 760, - "id": "0x56" - }, - { - "from": 761, - "to": 761, - "id": "0x54" - }, - { - "from": 762, - "to": 763, - "id": "0x58" - }, - { - "from": 764, - "to": 764, - "id": "0x5A" - }, - { - "from": 765, - "to": 765, - "id": "0x5C" - }, - { - "from": 766, - "to": 766, - "id": "0x5E" - }, - { - "from": 767, - "to": 767, - "id": "0x5E" - }, - { - "from": 768, - "to": 769, - "id": "0x64" - }, - { - "from": 770, - "to": 770, - "id": "0x63" - }, - { - "from": 771, - "to": 772, - "id": "0x63" - } - ], - "play.toClient.scoreboard_score": [ - { - "from": 735, - "to": 736, - "id": "0x4D" - }, - { - "from": 751, - "to": 754, - "id": "0x4D" - }, - { - "from": 755, - "to": 755, - "id": "0x56" - }, - { - "from": 756, - "to": 756, - "id": "0x56" - }, - { - "from": 757, - "to": 758, - "id": "0x56" - }, - { - "from": 759, - "to": 759, - "id": "0x56" - }, - { - "from": 760, - "to": 760, - "id": "0x59" - }, - { - "from": 761, - "to": 761, - "id": "0x57" - }, - { - "from": 762, - "to": 763, - "id": "0x5B" - }, - { - "from": 764, - "to": 764, - "id": "0x5D" - }, - { - "from": 765, - "to": 765, - "id": "0x5F" - }, - { - "from": 766, - "to": 766, - "id": "0x61" - }, - { - "from": 767, - "to": 767, - "id": "0x61" - }, - { - "from": 768, - "to": 769, - "id": "0x68" - }, - { - "from": 770, - "to": 770, - "id": "0x67" - }, - { - "from": 771, - "to": 772, - "id": "0x67" - } - ], - "play.toClient.sculk_vibration_signal": [ - { - "from": 755, - "to": 755, - "id": "0x05" - }, - { - "from": 756, - "to": 756, - "id": "0x05" - }, - { - "from": 757, - "to": 758, - "id": "0x05" - } - ], - "play.toClient.select_advancement_tab": [ - { - "from": 735, - "to": 736, - "id": "0x3C" - }, - { - "from": 751, - "to": 754, - "id": "0x3C" - }, - { - "from": 755, - "to": 755, - "id": "0x40" - }, - { - "from": 756, - "to": 756, - "id": "0x40" - }, - { - "from": 757, - "to": 758, - "id": "0x40" - }, - { - "from": 759, - "to": 759, - "id": "0x3E" - }, - { - "from": 760, - "to": 760, - "id": "0x41" - }, - { - "from": 761, - "to": 761, - "id": "0x40" - }, - { - "from": 762, - "to": 763, - "id": "0x44" - }, - { - "from": 764, - "to": 764, - "id": "0x46" - }, - { - "from": 765, - "to": 765, - "id": "0x48" - }, - { - "from": 766, - "to": 766, - "id": "0x4A" - }, - { - "from": 767, - "to": 767, - "id": "0x4A" - }, - { - "from": 768, - "to": 769, - "id": "0x4F" - }, - { - "from": 770, - "to": 770, - "id": "0x4E" - }, - { - "from": 771, - "to": 772, - "id": "0x4E" - } - ], - "play.toClient.server_data": [ - { - "from": 759, - "to": 759, - "id": "0x3F" - }, - { - "from": 760, - "to": 760, - "id": "0x42" - }, - { - "from": 761, - "to": 761, - "id": "0x41" - }, - { - "from": 762, - "to": 763, - "id": "0x45" - }, - { - "from": 764, - "to": 764, - "id": "0x47" - }, - { - "from": 765, - "to": 765, - "id": "0x49" - }, - { - "from": 766, - "to": 766, - "id": "0x4B" - }, - { - "from": 767, - "to": 767, - "id": "0x4B" - }, - { - "from": 768, - "to": 769, - "id": "0x50" - }, - { - "from": 770, - "to": 770, - "id": "0x4F" - }, - { - "from": 771, - "to": 772, - "id": "0x4F" - } - ], - "play.toClient.server_links": [ - { - "from": 767, - "to": 767, - "id": "0x7B" - }, - { - "from": 768, - "to": 769, - "id": "0x82" - }, - { - "from": 770, - "to": 770, - "id": "0x82" - }, - { - "from": 771, - "to": 772, - "id": "0x82" - } - ], - "play.toClient.set_cooldown": [ - { - "from": 735, - "to": 736, - "id": "0x17" - }, - { - "from": 751, - "to": 754, - "id": "0x16" - }, - { - "from": 755, - "to": 755, - "id": "0x17" - }, - { - "from": 756, - "to": 756, - "id": "0x17" - }, - { - "from": 757, - "to": 758, - "id": "0x17" - }, - { - "from": 759, - "to": 759, - "id": "0x14" - }, - { - "from": 760, - "to": 760, - "id": "0x14" - }, - { - "from": 761, - "to": 761, - "id": "0x13" - }, - { - "from": 762, - "to": 763, - "id": "0x15" - }, - { - "from": 764, - "to": 764, - "id": "0x16" - }, - { - "from": 765, - "to": 765, - "id": "0x16" - }, - { - "from": 766, - "to": 766, - "id": "0x17" - }, - { - "from": 767, - "to": 767, - "id": "0x17" - }, - { - "from": 768, - "to": 769, - "id": "0x17" - }, - { - "from": 770, - "to": 770, - "id": "0x16" - }, - { - "from": 771, - "to": 772, - "id": "0x16" - } - ], - "play.toClient.set_cursor_item": [ - { - "from": 768, - "to": 769, - "id": "0x5A" - }, - { - "from": 770, - "to": 770, - "id": "0x59" - }, - { - "from": 771, - "to": 772, - "id": "0x59" - } - ], - "play.toClient.set_passengers": [ - { - "from": 735, - "to": 736, - "id": "0x4B" - }, - { - "from": 751, - "to": 754, - "id": "0x4B" - }, - { - "from": 755, - "to": 755, - "id": "0x54" - }, - { - "from": 756, - "to": 756, - "id": "0x54" - }, - { - "from": 757, - "to": 758, - "id": "0x54" - }, - { - "from": 759, - "to": 759, - "id": "0x54" - }, - { - "from": 760, - "to": 760, - "id": "0x57" - }, - { - "from": 761, - "to": 761, - "id": "0x55" - }, - { - "from": 762, - "to": 763, - "id": "0x59" - }, - { - "from": 764, - "to": 764, - "id": "0x5B" - }, - { - "from": 765, - "to": 765, - "id": "0x5D" - }, - { - "from": 766, - "to": 766, - "id": "0x5F" - }, - { - "from": 767, - "to": 767, - "id": "0x5F" - }, - { - "from": 768, - "to": 769, - "id": "0x65" - }, - { - "from": 770, - "to": 770, - "id": "0x64" - }, - { - "from": 771, - "to": 772, - "id": "0x64" - } - ], - "play.toClient.set_player_inventory": [ - { - "from": 768, - "to": 769, - "id": "0x66" - }, - { - "from": 770, - "to": 770, - "id": "0x65" - }, - { - "from": 771, - "to": 772, - "id": "0x65" - } - ], - "play.toClient.set_projectile_power": [ - { - "from": 766, - "to": 766, - "id": "0x79" - }, - { - "from": 767, - "to": 767, - "id": "0x79" - }, - { - "from": 768, - "to": 769, - "id": "0x80" - }, - { - "from": 770, - "to": 770, - "id": "0x80" - }, - { - "from": 771, - "to": 772, - "id": "0x80" - } - ], - "play.toClient.set_slot": [ - { - "from": 735, - "to": 736, - "id": "0x16" - }, - { - "from": 751, - "to": 754, - "id": "0x15" - }, - { - "from": 755, - "to": 755, - "id": "0x16" - }, - { - "from": 756, - "to": 756, - "id": "0x16" - }, - { - "from": 757, - "to": 758, - "id": "0x16" - }, - { - "from": 759, - "to": 759, - "id": "0x13" - }, - { - "from": 760, - "to": 760, - "id": "0x13" - }, - { - "from": 761, - "to": 761, - "id": "0x12" - }, - { - "from": 762, - "to": 763, - "id": "0x14" - }, - { - "from": 764, - "to": 764, - "id": "0x15" - }, - { - "from": 765, - "to": 765, - "id": "0x15" - }, - { - "from": 766, - "to": 766, - "id": "0x15" - }, - { - "from": 767, - "to": 767, - "id": "0x15" - }, - { - "from": 768, - "to": 769, - "id": "0x15" - }, - { - "from": 770, - "to": 770, - "id": "0x14" - }, - { - "from": 771, - "to": 772, - "id": "0x14" - } - ], - "play.toClient.set_ticking_state": [ - { - "from": 765, - "to": 765, - "id": "0x6E" - }, - { - "from": 766, - "to": 766, - "id": "0x71" - }, - { - "from": 767, - "to": 767, - "id": "0x71" - }, - { - "from": 768, - "to": 769, - "id": "0x78" - }, - { - "from": 770, - "to": 770, - "id": "0x78" - }, - { - "from": 771, - "to": 772, - "id": "0x78" - } - ], - "play.toClient.set_title_subtitle": [ - { - "from": 755, - "to": 755, - "id": "0x57" - }, - { - "from": 756, - "to": 756, - "id": "0x57" - }, - { - "from": 757, - "to": 758, - "id": "0x58" - }, - { - "from": 759, - "to": 759, - "id": "0x58" - }, - { - "from": 760, - "to": 760, - "id": "0x5B" - }, - { - "from": 761, - "to": 761, - "id": "0x59" - }, - { - "from": 762, - "to": 763, - "id": "0x5D" - }, - { - "from": 764, - "to": 764, - "id": "0x5F" - }, - { - "from": 765, - "to": 765, - "id": "0x61" - }, - { - "from": 766, - "to": 766, - "id": "0x63" - }, - { - "from": 767, - "to": 767, - "id": "0x63" - }, - { - "from": 768, - "to": 769, - "id": "0x6A" - }, - { - "from": 770, - "to": 770, - "id": "0x69" - }, - { - "from": 771, - "to": 772, - "id": "0x69" - } - ], - "play.toClient.set_title_text": [ - { - "from": 755, - "to": 755, - "id": "0x59" - }, - { - "from": 756, - "to": 756, - "id": "0x59" - }, - { - "from": 757, - "to": 758, - "id": "0x5A" - }, - { - "from": 759, - "to": 759, - "id": "0x5A" - }, - { - "from": 760, - "to": 760, - "id": "0x5D" - }, - { - "from": 761, - "to": 761, - "id": "0x5B" - }, - { - "from": 762, - "to": 763, - "id": "0x5F" - }, - { - "from": 764, - "to": 764, - "id": "0x61" - }, - { - "from": 765, - "to": 765, - "id": "0x63" - }, - { - "from": 766, - "to": 766, - "id": "0x65" - }, - { - "from": 767, - "to": 767, - "id": "0x65" - }, - { - "from": 768, - "to": 769, - "id": "0x6C" - }, - { - "from": 770, - "to": 770, - "id": "0x6B" - }, - { - "from": 771, - "to": 772, - "id": "0x6B" - } - ], - "play.toClient.set_title_time": [ - { - "from": 755, - "to": 755, - "id": "0x5A" - }, - { - "from": 756, - "to": 756, - "id": "0x5A" - }, - { - "from": 757, - "to": 758, - "id": "0x5B" - }, - { - "from": 759, - "to": 759, - "id": "0x5B" - }, - { - "from": 760, - "to": 760, - "id": "0x5E" - }, - { - "from": 761, - "to": 761, - "id": "0x5C" - }, - { - "from": 762, - "to": 763, - "id": "0x60" - }, - { - "from": 764, - "to": 764, - "id": "0x62" - }, - { - "from": 765, - "to": 765, - "id": "0x64" - }, - { - "from": 766, - "to": 766, - "id": "0x66" - }, - { - "from": 767, - "to": 767, - "id": "0x66" - }, - { - "from": 768, - "to": 769, - "id": "0x6D" - }, - { - "from": 770, - "to": 770, - "id": "0x6C" - }, - { - "from": 771, - "to": 772, - "id": "0x6C" - } - ], - "play.toClient.should_display_chat_preview": [ - { - "from": 759, - "to": 759, - "id": "0x4B" - }, - { - "from": 760, - "to": 760, - "id": "0x4E" - } - ], - "play.toClient.show_dialog": [ - { - "from": 771, - "to": 772, - "id": "0x85" - } - ], - "play.toClient.simulation_distance": [ - { - "from": 757, - "to": 758, - "id": "0x57" - }, - { - "from": 759, - "to": 759, - "id": "0x57" - }, - { - "from": 760, - "to": 760, - "id": "0x5A" - }, - { - "from": 761, - "to": 761, - "id": "0x58" - }, - { - "from": 762, - "to": 763, - "id": "0x5C" - }, - { - "from": 764, - "to": 764, - "id": "0x5E" - }, - { - "from": 765, - "to": 765, - "id": "0x60" - }, - { - "from": 766, - "to": 766, - "id": "0x62" - }, - { - "from": 767, - "to": 767, - "id": "0x62" - }, - { - "from": 768, - "to": 769, - "id": "0x69" - }, - { - "from": 770, - "to": 770, - "id": "0x68" - }, - { - "from": 771, - "to": 772, - "id": "0x68" - } - ], - "play.toClient.sound_effect": [ - { - "from": 735, - "to": 736, - "id": "0x51" - }, - { - "from": 751, - "to": 754, - "id": "0x51" - }, - { - "from": 755, - "to": 755, - "id": "0x5C" - }, - { - "from": 756, - "to": 756, - "id": "0x5C" - }, - { - "from": 757, - "to": 758, - "id": "0x5D" - }, - { - "from": 759, - "to": 759, - "id": "0x5D" - }, - { - "from": 760, - "to": 760, - "id": "0x60" - }, - { - "from": 761, - "to": 761, - "id": "0x5E" - }, - { - "from": 762, - "to": 763, - "id": "0x62" - }, - { - "from": 764, - "to": 764, - "id": "0x64" - }, - { - "from": 765, - "to": 765, - "id": "0x66" - }, - { - "from": 766, - "to": 766, - "id": "0x68" - }, - { - "from": 767, - "to": 767, - "id": "0x68" - }, - { - "from": 768, - "to": 769, - "id": "0x6F" - }, - { - "from": 770, - "to": 770, - "id": "0x6E" - }, - { - "from": 771, - "to": 772, - "id": "0x6E" - } - ], - "play.toClient.spawn_entity": [ - { - "from": 735, - "to": 736, - "id": "0x00" - }, - { - "from": 751, - "to": 754, - "id": "0x00" - }, - { - "from": 755, - "to": 755, - "id": "0x00" - }, - { - "from": 756, - "to": 756, - "id": "0x00" - }, - { - "from": 757, - "to": 758, - "id": "0x00" - }, - { - "from": 759, - "to": 759, - "id": "0x00" - }, - { - "from": 760, - "to": 760, - "id": "0x00" - }, - { - "from": 761, - "to": 761, - "id": "0x00" - }, - { - "from": 762, - "to": 763, - "id": "0x01" - }, - { - "from": 764, - "to": 764, - "id": "0x01" - }, - { - "from": 765, - "to": 765, - "id": "0x01" - }, - { - "from": 766, - "to": 766, - "id": "0x01" - }, - { - "from": 767, - "to": 767, - "id": "0x01" - }, - { - "from": 768, - "to": 769, - "id": "0x01" - }, - { - "from": 770, - "to": 770, - "id": "0x01" - }, - { - "from": 771, - "to": 772, - "id": "0x01" - } - ], - "play.toClient.spawn_entity_experience_orb": [ - { - "from": 735, - "to": 736, - "id": "0x01" - }, - { - "from": 751, - "to": 754, - "id": "0x01" - }, - { - "from": 755, - "to": 755, - "id": "0x01" - }, - { - "from": 756, - "to": 756, - "id": "0x01" - }, - { - "from": 757, - "to": 758, - "id": "0x01" - }, - { - "from": 759, - "to": 759, - "id": "0x01" - }, - { - "from": 760, - "to": 760, - "id": "0x01" - }, - { - "from": 761, - "to": 761, - "id": "0x01" - }, - { - "from": 762, - "to": 763, - "id": "0x02" - }, - { - "from": 764, - "to": 764, - "id": "0x02" - }, - { - "from": 765, - "to": 765, - "id": "0x02" - }, - { - "from": 766, - "to": 766, - "id": "0x02" - }, - { - "from": 767, - "to": 767, - "id": "0x02" - }, - { - "from": 768, - "to": 769, - "id": "0x02" - } - ], - "play.toClient.spawn_entity_living": [ - { - "from": 735, - "to": 736, - "id": "0x02" - }, - { - "from": 751, - "to": 754, - "id": "0x02" - }, - { - "from": 755, - "to": 755, - "id": "0x02" - }, - { - "from": 756, - "to": 756, - "id": "0x02" - }, - { - "from": 757, - "to": 758, - "id": "0x02" - } - ], - "play.toClient.spawn_entity_painting": [ - { - "from": 735, - "to": 736, - "id": "0x03" - }, - { - "from": 751, - "to": 754, - "id": "0x03" - }, - { - "from": 755, - "to": 755, - "id": "0x03" - }, - { - "from": 756, - "to": 756, - "id": "0x03" - }, - { - "from": 757, - "to": 758, - "id": "0x03" - } - ], - "play.toClient.spawn_position": [ - { - "from": 735, - "to": 736, - "id": "0x42" - }, - { - "from": 751, - "to": 754, - "id": "0x42" - }, - { - "from": 755, - "to": 755, - "id": "0x4B" - }, - { - "from": 756, - "to": 756, - "id": "0x4B" - }, - { - "from": 757, - "to": 758, - "id": "0x4B" - }, - { - "from": 759, - "to": 759, - "id": "0x4A" - }, - { - "from": 760, - "to": 760, - "id": "0x4D" - }, - { - "from": 761, - "to": 761, - "id": "0x4C" - }, - { - "from": 762, - "to": 763, - "id": "0x50" - }, - { - "from": 764, - "to": 764, - "id": "0x52" - }, - { - "from": 765, - "to": 765, - "id": "0x54" - }, - { - "from": 766, - "to": 766, - "id": "0x56" - }, - { - "from": 767, - "to": 767, - "id": "0x56" - }, - { - "from": 768, - "to": 769, - "id": "0x5B" - }, - { - "from": 770, - "to": 770, - "id": "0x5A" - }, - { - "from": 771, - "to": 772, - "id": "0x5A" - } - ], - "play.toClient.start_configuration": [ - { - "from": 764, - "to": 764, - "id": "0x65" - }, - { - "from": 765, - "to": 765, - "id": "0x67" - }, - { - "from": 766, - "to": 766, - "id": "0x69" - }, - { - "from": 767, - "to": 767, - "id": "0x69" - }, - { - "from": 768, - "to": 769, - "id": "0x70" - }, - { - "from": 770, - "to": 770, - "id": "0x6F" - }, - { - "from": 771, - "to": 772, - "id": "0x6F" - } - ], - "play.toClient.statistics": [ - { - "from": 735, - "to": 736, - "id": "0x06" - }, - { - "from": 751, - "to": 754, - "id": "0x06" - }, - { - "from": 755, - "to": 755, - "id": "0x07" - }, - { - "from": 756, - "to": 756, - "id": "0x07" - }, - { - "from": 757, - "to": 758, - "id": "0x07" - }, - { - "from": 759, - "to": 759, - "id": "0x04" - }, - { - "from": 760, - "to": 760, - "id": "0x04" - }, - { - "from": 761, - "to": 761, - "id": "0x04" - }, - { - "from": 762, - "to": 763, - "id": "0x05" - }, - { - "from": 764, - "to": 764, - "id": "0x04" - }, - { - "from": 765, - "to": 765, - "id": "0x04" - }, - { - "from": 766, - "to": 766, - "id": "0x04" - }, - { - "from": 767, - "to": 767, - "id": "0x04" - }, - { - "from": 768, - "to": 769, - "id": "0x04" - }, - { - "from": 770, - "to": 770, - "id": "0x03" - }, - { - "from": 771, - "to": 772, - "id": "0x03" - } - ], - "play.toClient.step_tick": [ - { - "from": 765, - "to": 765, - "id": "0x6F" - }, - { - "from": 766, - "to": 766, - "id": "0x72" - }, - { - "from": 767, - "to": 767, - "id": "0x72" - }, - { - "from": 768, - "to": 769, - "id": "0x79" - }, - { - "from": 770, - "to": 770, - "id": "0x79" - }, - { - "from": 771, - "to": 772, - "id": "0x79" - } - ], - "play.toClient.stop_sound": [ - { - "from": 735, - "to": 736, - "id": "0x52" - }, - { - "from": 751, - "to": 754, - "id": "0x52" - }, - { - "from": 755, - "to": 755, - "id": "0x5D" - }, - { - "from": 756, - "to": 756, - "id": "0x5D" - }, - { - "from": 757, - "to": 758, - "id": "0x5E" - }, - { - "from": 759, - "to": 759, - "id": "0x5E" - }, - { - "from": 760, - "to": 760, - "id": "0x61" - }, - { - "from": 761, - "to": 761, - "id": "0x5F" - }, - { - "from": 762, - "to": 763, - "id": "0x63" - }, - { - "from": 764, - "to": 764, - "id": "0x66" - }, - { - "from": 765, - "to": 765, - "id": "0x68" - }, - { - "from": 766, - "to": 766, - "id": "0x6A" - }, - { - "from": 767, - "to": 767, - "id": "0x6A" - }, - { - "from": 768, - "to": 769, - "id": "0x71" - }, - { - "from": 770, - "to": 770, - "id": "0x70" - }, - { - "from": 771, - "to": 772, - "id": "0x70" - } - ], - "play.toClient.store_cookie": [ - { - "from": 766, - "to": 766, - "id": "0x6B" - }, - { - "from": 767, - "to": 767, - "id": "0x6B" - }, - { - "from": 768, - "to": 769, - "id": "0x72" - }, - { - "from": 770, - "to": 770, - "id": "0x71" - }, - { - "from": 771, - "to": 772, - "id": "0x71" - } - ], - "play.toClient.sync_entity_position": [ - { - "from": 768, - "to": 769, - "id": "0x20" - }, - { - "from": 770, - "to": 770, - "id": "0x1F" - }, - { - "from": 771, - "to": 772, - "id": "0x1F" - } - ], - "play.toClient.system_chat": [ - { - "from": 759, - "to": 759, - "id": "0x5F" - }, - { - "from": 760, - "to": 760, - "id": "0x62" - }, - { - "from": 761, - "to": 761, - "id": "0x60" - }, - { - "from": 762, - "to": 763, - "id": "0x64" - }, - { - "from": 764, - "to": 764, - "id": "0x67" - }, - { - "from": 765, - "to": 765, - "id": "0x69" - }, - { - "from": 766, - "to": 766, - "id": "0x6C" - }, - { - "from": 767, - "to": 767, - "id": "0x6C" - }, - { - "from": 768, - "to": 769, - "id": "0x73" - }, - { - "from": 770, - "to": 770, - "id": "0x72" - }, - { - "from": 771, - "to": 772, - "id": "0x72" - } - ], - "play.toClient.tab_complete": [ - { - "from": 735, - "to": 736, - "id": "0x10" - }, - { - "from": 751, - "to": 754, - "id": "0x0F" - }, - { - "from": 755, - "to": 755, - "id": "0x11" - }, - { - "from": 756, - "to": 756, - "id": "0x11" - }, - { - "from": 757, - "to": 758, - "id": "0x11" - }, - { - "from": 759, - "to": 759, - "id": "0x0E" - }, - { - "from": 760, - "to": 760, - "id": "0x0E" - }, - { - "from": 761, - "to": 761, - "id": "0x0D" - }, - { - "from": 762, - "to": 763, - "id": "0x0F" - }, - { - "from": 764, - "to": 764, - "id": "0x10" - }, - { - "from": 765, - "to": 765, - "id": "0x10" - }, - { - "from": 766, - "to": 766, - "id": "0x10" - }, - { - "from": 767, - "to": 767, - "id": "0x10" - }, - { - "from": 768, - "to": 769, - "id": "0x10" - }, - { - "from": 770, - "to": 770, - "id": "0x0F" - }, - { - "from": 771, - "to": 772, - "id": "0x0F" - } - ], - "play.toClient.tags": [ - { - "from": 735, - "to": 736, - "id": "0x5B" - }, - { - "from": 751, - "to": 754, - "id": "0x5B" - }, - { - "from": 755, - "to": 755, - "id": "0x66" - }, - { - "from": 756, - "to": 756, - "id": "0x66" - }, - { - "from": 757, - "to": 758, - "id": "0x67" - }, - { - "from": 759, - "to": 759, - "id": "0x68" - }, - { - "from": 760, - "to": 760, - "id": "0x6B" - }, - { - "from": 761, - "to": 761, - "id": "0x6A" - }, - { - "from": 762, - "to": 763, - "id": "0x6E" - }, - { - "from": 764, - "to": 764, - "id": "0x70" - }, - { - "from": 765, - "to": 765, - "id": "0x74" - }, - { - "from": 766, - "to": 766, - "id": "0x78" - }, - { - "from": 767, - "to": 767, - "id": "0x78" - }, - { - "from": 768, - "to": 769, - "id": "0x7F" - }, - { - "from": 770, - "to": 770, - "id": "0x7F" - }, - { - "from": 771, - "to": 772, - "id": "0x7F" - } - ], - "play.toClient.teams": [ - { - "from": 735, - "to": 736, - "id": "0x4C" - }, - { - "from": 751, - "to": 754, - "id": "0x4C" - }, - { - "from": 755, - "to": 755, - "id": "0x55" - }, - { - "from": 756, - "to": 756, - "id": "0x55" - }, - { - "from": 757, - "to": 758, - "id": "0x55" - }, - { - "from": 759, - "to": 759, - "id": "0x55" - }, - { - "from": 760, - "to": 760, - "id": "0x58" - }, - { - "from": 761, - "to": 761, - "id": "0x56" - }, - { - "from": 762, - "to": 763, - "id": "0x5A" - }, - { - "from": 764, - "to": 764, - "id": "0x5C" - }, - { - "from": 765, - "to": 765, - "id": "0x5E" - }, - { - "from": 766, - "to": 766, - "id": "0x60" - }, - { - "from": 767, - "to": 767, - "id": "0x60" - }, - { - "from": 768, - "to": 769, - "id": "0x67" - }, - { - "from": 770, - "to": 770, - "id": "0x66" - }, - { - "from": 771, - "to": 772, - "id": "0x66" - } - ], - "play.toClient.test_instance_block_status": [ - { - "from": 770, - "to": 770, - "id": "0x77" - }, - { - "from": 771, - "to": 772, - "id": "0x77" - } - ], - "play.toClient.tile_entity_data": [ - { - "from": 735, - "to": 736, - "id": "0x09" - }, - { - "from": 751, - "to": 754, - "id": "0x09" - }, - { - "from": 755, - "to": 755, - "id": "0x0A" - }, - { - "from": 756, - "to": 756, - "id": "0x0A" - }, - { - "from": 757, - "to": 758, - "id": "0x0A" - }, - { - "from": 759, - "to": 759, - "id": "0x07" - }, - { - "from": 760, - "to": 760, - "id": "0x07" - }, - { - "from": 761, - "to": 761, - "id": "0x07" - }, - { - "from": 762, - "to": 763, - "id": "0x08" - }, - { - "from": 764, - "to": 764, - "id": "0x07" - }, - { - "from": 765, - "to": 765, - "id": "0x07" - }, - { - "from": 766, - "to": 766, - "id": "0x07" - }, - { - "from": 767, - "to": 767, - "id": "0x07" - }, - { - "from": 768, - "to": 769, - "id": "0x07" - }, - { - "from": 770, - "to": 770, - "id": "0x06" - }, - { - "from": 771, - "to": 772, - "id": "0x06" - } - ], - "play.toClient.title": [ - { - "from": 735, - "to": 736, - "id": "0x4F" - }, - { - "from": 751, - "to": 754, - "id": "0x4F" - } - ], - "play.toClient.tracked_waypoint": [ - { - "from": 771, - "to": 772, - "id": "0x83" - } - ], - "play.toClient.trade_list": [ - { - "from": 735, - "to": 736, - "id": "0x27" - }, - { - "from": 751, - "to": 754, - "id": "0x26" - }, - { - "from": 755, - "to": 755, - "id": "0x28" - }, - { - "from": 756, - "to": 756, - "id": "0x28" - }, - { - "from": 757, - "to": 758, - "id": "0x28" - }, - { - "from": 759, - "to": 759, - "id": "0x25" - }, - { - "from": 760, - "to": 760, - "id": "0x27" - }, - { - "from": 761, - "to": 761, - "id": "0x26" - }, - { - "from": 762, - "to": 763, - "id": "0x2A" - }, - { - "from": 764, - "to": 764, - "id": "0x2B" - }, - { - "from": 765, - "to": 765, - "id": "0x2B" - }, - { - "from": 766, - "to": 766, - "id": "0x2D" - }, - { - "from": 767, - "to": 767, - "id": "0x2D" - }, - { - "from": 768, - "to": 769, - "id": "0x2E" - }, - { - "from": 770, - "to": 770, - "id": "0x2D" - }, - { - "from": 771, - "to": 772, - "id": "0x2D" - } - ], - "play.toClient.transaction": [ - { - "from": 735, - "to": 736, - "id": "0x12" - }, - { - "from": 751, - "to": 754, - "id": "0x11" - } - ], - "play.toClient.transfer": [ - { - "from": 766, - "to": 766, - "id": "0x73" - }, - { - "from": 767, - "to": 767, - "id": "0x73" - }, - { - "from": 768, - "to": 769, - "id": "0x7A" - }, - { - "from": 770, - "to": 770, - "id": "0x7A" - }, - { - "from": 771, - "to": 772, - "id": "0x7A" - } - ], - "play.toClient.unload_chunk": [ - { - "from": 735, - "to": 736, - "id": "0x1D" - }, - { - "from": 751, - "to": 754, - "id": "0x1C" - }, - { - "from": 755, - "to": 755, - "id": "0x1D" - }, - { - "from": 756, - "to": 756, - "id": "0x1D" - }, - { - "from": 757, - "to": 758, - "id": "0x1D" - }, - { - "from": 759, - "to": 759, - "id": "0x1A" - }, - { - "from": 760, - "to": 760, - "id": "0x1C" - }, - { - "from": 761, - "to": 761, - "id": "0x1B" - }, - { - "from": 762, - "to": 763, - "id": "0x1E" - }, - { - "from": 764, - "to": 764, - "id": "0x1F" - }, - { - "from": 765, - "to": 765, - "id": "0x1F" - }, - { - "from": 766, - "to": 766, - "id": "0x21" - }, - { - "from": 767, - "to": 767, - "id": "0x21" - }, - { - "from": 768, - "to": 769, - "id": "0x22" - }, - { - "from": 770, - "to": 770, - "id": "0x21" - }, - { - "from": 771, - "to": 772, - "id": "0x21" - } - ], - "play.toClient.unlock_recipes": [ - { - "from": 735, - "to": 736, - "id": "0x36" - }, - { - "from": 751, - "to": 754, - "id": "0x35" - }, - { - "from": 755, - "to": 755, - "id": "0x39" - }, - { - "from": 756, - "to": 756, - "id": "0x39" - }, - { - "from": 757, - "to": 758, - "id": "0x39" - }, - { - "from": 759, - "to": 759, - "id": "0x37" - }, - { - "from": 760, - "to": 760, - "id": "0x3A" - }, - { - "from": 761, - "to": 761, - "id": "0x39" - }, - { - "from": 762, - "to": 763, - "id": "0x3D" - }, - { - "from": 764, - "to": 764, - "id": "0x3F" - }, - { - "from": 765, - "to": 765, - "id": "0x3F" - }, - { - "from": 766, - "to": 766, - "id": "0x41" - }, - { - "from": 767, - "to": 767, - "id": "0x41" - } - ], - "play.toClient.update_health": [ - { - "from": 735, - "to": 736, - "id": "0x49" - }, - { - "from": 751, - "to": 754, - "id": "0x49" - }, - { - "from": 755, - "to": 755, - "id": "0x52" - }, - { - "from": 756, - "to": 756, - "id": "0x52" - }, - { - "from": 757, - "to": 758, - "id": "0x52" - }, - { - "from": 759, - "to": 759, - "id": "0x52" - }, - { - "from": 760, - "to": 760, - "id": "0x55" - }, - { - "from": 761, - "to": 761, - "id": "0x53" - }, - { - "from": 762, - "to": 763, - "id": "0x57" - }, - { - "from": 764, - "to": 764, - "id": "0x59" - }, - { - "from": 765, - "to": 765, - "id": "0x5B" - }, - { - "from": 766, - "to": 766, - "id": "0x5D" - }, - { - "from": 767, - "to": 767, - "id": "0x5D" - }, - { - "from": 768, - "to": 769, - "id": "0x62" - }, - { - "from": 770, - "to": 770, - "id": "0x61" - }, - { - "from": 771, - "to": 772, - "id": "0x61" - } - ], - "play.toClient.update_light": [ - { - "from": 735, - "to": 736, - "id": "0x24" - }, - { - "from": 751, - "to": 754, - "id": "0x23" - }, - { - "from": 755, - "to": 755, - "id": "0x25" - }, - { - "from": 756, - "to": 756, - "id": "0x25" - }, - { - "from": 757, - "to": 758, - "id": "0x25" - }, - { - "from": 759, - "to": 759, - "id": "0x22" - }, - { - "from": 760, - "to": 760, - "id": "0x24" - }, - { - "from": 761, - "to": 761, - "id": "0x23" - }, - { - "from": 762, - "to": 763, - "id": "0x27" - }, - { - "from": 764, - "to": 764, - "id": "0x28" - }, - { - "from": 765, - "to": 765, - "id": "0x28" - }, - { - "from": 766, - "to": 766, - "id": "0x2A" - }, - { - "from": 767, - "to": 767, - "id": "0x2A" - }, - { - "from": 768, - "to": 769, - "id": "0x2B" - }, - { - "from": 770, - "to": 770, - "id": "0x2A" - }, - { - "from": 771, - "to": 772, - "id": "0x2A" - } - ], - "play.toClient.update_time": [ - { - "from": 735, - "to": 736, - "id": "0x4E" - }, - { - "from": 751, - "to": 754, - "id": "0x4E" - }, - { - "from": 755, - "to": 755, - "id": "0x58" - }, - { - "from": 756, - "to": 756, - "id": "0x58" - }, - { - "from": 757, - "to": 758, - "id": "0x59" - }, - { - "from": 759, - "to": 759, - "id": "0x59" - }, - { - "from": 760, - "to": 760, - "id": "0x5C" - }, - { - "from": 761, - "to": 761, - "id": "0x5A" - }, - { - "from": 762, - "to": 763, - "id": "0x5E" - }, - { - "from": 764, - "to": 764, - "id": "0x60" - }, - { - "from": 765, - "to": 765, - "id": "0x62" - }, - { - "from": 766, - "to": 766, - "id": "0x64" - }, - { - "from": 767, - "to": 767, - "id": "0x64" - }, - { - "from": 768, - "to": 769, - "id": "0x6B" - }, - { - "from": 770, - "to": 770, - "id": "0x6A" - }, - { - "from": 771, - "to": 772, - "id": "0x6A" - } - ], - "play.toClient.update_view_distance": [ - { - "from": 735, - "to": 736, - "id": "0x41" - }, - { - "from": 751, - "to": 754, - "id": "0x41" - }, - { - "from": 755, - "to": 755, - "id": "0x4A" - }, - { - "from": 756, - "to": 756, - "id": "0x4A" - }, - { - "from": 757, - "to": 758, - "id": "0x4A" - }, - { - "from": 759, - "to": 759, - "id": "0x49" - }, - { - "from": 760, - "to": 760, - "id": "0x4C" - }, - { - "from": 761, - "to": 761, - "id": "0x4B" - }, - { - "from": 762, - "to": 763, - "id": "0x4F" - }, - { - "from": 764, - "to": 764, - "id": "0x51" - }, - { - "from": 765, - "to": 765, - "id": "0x53" - }, - { - "from": 766, - "to": 766, - "id": "0x55" - }, - { - "from": 767, - "to": 767, - "id": "0x55" - }, - { - "from": 768, - "to": 769, - "id": "0x59" - }, - { - "from": 770, - "to": 770, - "id": "0x58" - }, - { - "from": 771, - "to": 772, - "id": "0x58" - } - ], - "play.toClient.update_view_position": [ - { - "from": 735, - "to": 736, - "id": "0x40" - }, - { - "from": 751, - "to": 754, - "id": "0x40" - }, - { - "from": 755, - "to": 755, - "id": "0x49" - }, - { - "from": 756, - "to": 756, - "id": "0x49" - }, - { - "from": 757, - "to": 758, - "id": "0x49" - }, - { - "from": 759, - "to": 759, - "id": "0x48" - }, - { - "from": 760, - "to": 760, - "id": "0x4B" - }, - { - "from": 761, - "to": 761, - "id": "0x4A" - }, - { - "from": 762, - "to": 763, - "id": "0x4E" - }, - { - "from": 764, - "to": 764, - "id": "0x50" - }, - { - "from": 765, - "to": 765, - "id": "0x52" - }, - { - "from": 766, - "to": 766, - "id": "0x54" - }, - { - "from": 767, - "to": 767, - "id": "0x54" - }, - { - "from": 768, - "to": 769, - "id": "0x58" - }, - { - "from": 770, - "to": 770, - "id": "0x57" - }, - { - "from": 771, - "to": 772, - "id": "0x57" - } - ], - "play.toClient.vehicle_move": [ - { - "from": 735, - "to": 736, - "id": "0x2C" - }, - { - "from": 751, - "to": 754, - "id": "0x2B" - }, - { - "from": 755, - "to": 755, - "id": "0x2C" - }, - { - "from": 756, - "to": 756, - "id": "0x2C" - }, - { - "from": 757, - "to": 758, - "id": "0x2C" - }, - { - "from": 759, - "to": 759, - "id": "0x29" - }, - { - "from": 760, - "to": 760, - "id": "0x2B" - }, - { - "from": 761, - "to": 761, - "id": "0x2A" - }, - { - "from": 762, - "to": 763, - "id": "0x2E" - }, - { - "from": 764, - "to": 764, - "id": "0x2F" - }, - { - "from": 765, - "to": 765, - "id": "0x2F" - }, - { - "from": 766, - "to": 766, - "id": "0x31" - }, - { - "from": 767, - "to": 767, - "id": "0x31" - }, - { - "from": 768, - "to": 769, - "id": "0x33" - }, - { - "from": 770, - "to": 770, - "id": "0x32" - }, - { - "from": 771, - "to": 772, - "id": "0x32" - } - ], - "play.toClient.window_items": [ - { - "from": 735, - "to": 736, - "id": "0x14" - }, - { - "from": 751, - "to": 754, - "id": "0x13" - }, - { - "from": 755, - "to": 755, - "id": "0x14" - }, - { - "from": 756, - "to": 756, - "id": "0x14" - }, - { - "from": 757, - "to": 758, - "id": "0x14" - }, - { - "from": 759, - "to": 759, - "id": "0x11" - }, - { - "from": 760, - "to": 760, - "id": "0x11" - }, - { - "from": 761, - "to": 761, - "id": "0x10" - }, - { - "from": 762, - "to": 763, - "id": "0x12" - }, - { - "from": 764, - "to": 764, - "id": "0x13" - }, - { - "from": 765, - "to": 765, - "id": "0x13" - }, - { - "from": 766, - "to": 766, - "id": "0x13" - }, - { - "from": 767, - "to": 767, - "id": "0x13" - }, - { - "from": 768, - "to": 769, - "id": "0x13" - }, - { - "from": 770, - "to": 770, - "id": "0x12" - }, - { - "from": 771, - "to": 772, - "id": "0x12" - } - ], - "play.toClient.world_border": [ - { - "from": 735, - "to": 736, - "id": "0x3D" - }, - { - "from": 751, - "to": 754, - "id": "0x3D" - } - ], - "play.toClient.world_border_center": [ - { - "from": 755, - "to": 755, - "id": "0x42" - }, - { - "from": 756, - "to": 756, - "id": "0x42" - }, - { - "from": 757, - "to": 758, - "id": "0x42" - }, - { - "from": 759, - "to": 759, - "id": "0x41" - }, - { - "from": 760, - "to": 760, - "id": "0x44" - }, - { - "from": 761, - "to": 761, - "id": "0x43" - }, - { - "from": 762, - "to": 763, - "id": "0x47" - }, - { - "from": 764, - "to": 764, - "id": "0x49" - }, - { - "from": 765, - "to": 765, - "id": "0x4B" - }, - { - "from": 766, - "to": 766, - "id": "0x4D" - }, - { - "from": 767, - "to": 767, - "id": "0x4D" - }, - { - "from": 768, - "to": 769, - "id": "0x52" - }, - { - "from": 770, - "to": 770, - "id": "0x51" - }, - { - "from": 771, - "to": 772, - "id": "0x51" - } - ], - "play.toClient.world_border_lerp_size": [ - { - "from": 755, - "to": 755, - "id": "0x43" - }, - { - "from": 756, - "to": 756, - "id": "0x43" - }, - { - "from": 757, - "to": 758, - "id": "0x43" - }, - { - "from": 759, - "to": 759, - "id": "0x42" - }, - { - "from": 760, - "to": 760, - "id": "0x45" - }, - { - "from": 761, - "to": 761, - "id": "0x44" - }, - { - "from": 762, - "to": 763, - "id": "0x48" - }, - { - "from": 764, - "to": 764, - "id": "0x4A" - }, - { - "from": 765, - "to": 765, - "id": "0x4C" - }, - { - "from": 766, - "to": 766, - "id": "0x4E" - }, - { - "from": 767, - "to": 767, - "id": "0x4E" - }, - { - "from": 768, - "to": 769, - "id": "0x53" - }, - { - "from": 770, - "to": 770, - "id": "0x52" - }, - { - "from": 771, - "to": 772, - "id": "0x52" - } - ], - "play.toClient.world_border_size": [ - { - "from": 755, - "to": 755, - "id": "0x44" - }, - { - "from": 756, - "to": 756, - "id": "0x44" - }, - { - "from": 757, - "to": 758, - "id": "0x44" - }, - { - "from": 759, - "to": 759, - "id": "0x43" - }, - { - "from": 760, - "to": 760, - "id": "0x46" - }, - { - "from": 761, - "to": 761, - "id": "0x45" - }, - { - "from": 762, - "to": 763, - "id": "0x49" - }, - { - "from": 764, - "to": 764, - "id": "0x4B" - }, - { - "from": 765, - "to": 765, - "id": "0x4D" - }, - { - "from": 766, - "to": 766, - "id": "0x4F" - }, - { - "from": 767, - "to": 767, - "id": "0x4F" - }, - { - "from": 768, - "to": 769, - "id": "0x54" - }, - { - "from": 770, - "to": 770, - "id": "0x53" - }, - { - "from": 771, - "to": 772, - "id": "0x53" - } - ], - "play.toClient.world_border_warning_delay": [ - { - "from": 755, - "to": 755, - "id": "0x45" - }, - { - "from": 756, - "to": 756, - "id": "0x45" - }, - { - "from": 757, - "to": 758, - "id": "0x45" - }, - { - "from": 759, - "to": 759, - "id": "0x44" - }, - { - "from": 760, - "to": 760, - "id": "0x47" - }, - { - "from": 761, - "to": 761, - "id": "0x46" - }, - { - "from": 762, - "to": 763, - "id": "0x4A" - }, - { - "from": 764, - "to": 764, - "id": "0x4C" - }, - { - "from": 765, - "to": 765, - "id": "0x4E" - }, - { - "from": 766, - "to": 766, - "id": "0x50" - }, - { - "from": 767, - "to": 767, - "id": "0x50" - }, - { - "from": 768, - "to": 769, - "id": "0x55" - }, - { - "from": 770, - "to": 770, - "id": "0x54" - }, - { - "from": 771, - "to": 772, - "id": "0x54" - } - ], - "play.toClient.world_border_warning_reach": [ - { - "from": 755, - "to": 755, - "id": "0x46" - }, - { - "from": 756, - "to": 756, - "id": "0x46" - }, - { - "from": 757, - "to": 758, - "id": "0x46" - }, - { - "from": 759, - "to": 759, - "id": "0x45" - }, - { - "from": 760, - "to": 760, - "id": "0x48" - }, - { - "from": 761, - "to": 761, - "id": "0x47" - }, - { - "from": 762, - "to": 763, - "id": "0x4B" - }, - { - "from": 764, - "to": 764, - "id": "0x4D" - }, - { - "from": 765, - "to": 765, - "id": "0x4F" - }, - { - "from": 766, - "to": 766, - "id": "0x51" - }, - { - "from": 767, - "to": 767, - "id": "0x51" - }, - { - "from": 768, - "to": 769, - "id": "0x56" - }, - { - "from": 770, - "to": 770, - "id": "0x55" - }, - { - "from": 771, - "to": 772, - "id": "0x55" - } - ], - "play.toClient.world_event": [ - { - "from": 735, - "to": 736, - "id": "0x22" - }, - { - "from": 751, - "to": 754, - "id": "0x21" - }, - { - "from": 755, - "to": 755, - "id": "0x23" - }, - { - "from": 756, - "to": 756, - "id": "0x23" - }, - { - "from": 757, - "to": 758, - "id": "0x23" - }, - { - "from": 759, - "to": 759, - "id": "0x20" - }, - { - "from": 760, - "to": 760, - "id": "0x22" - }, - { - "from": 761, - "to": 761, - "id": "0x21" - }, - { - "from": 762, - "to": 763, - "id": "0x25" - }, - { - "from": 764, - "to": 764, - "id": "0x26" - }, - { - "from": 765, - "to": 765, - "id": "0x26" - }, - { - "from": 766, - "to": 766, - "id": "0x28" - }, - { - "from": 767, - "to": 767, - "id": "0x28" - }, - { - "from": 768, - "to": 769, - "id": "0x29" - }, - { - "from": 770, - "to": 770, - "id": "0x28" - }, - { - "from": 771, - "to": 772, - "id": "0x28" - } - ], - "play.toClient.world_particles": [ - { - "from": 735, - "to": 736, - "id": "0x23" - }, - { - "from": 751, - "to": 754, - "id": "0x22" - }, - { - "from": 755, - "to": 755, - "id": "0x24" - }, - { - "from": 756, - "to": 756, - "id": "0x24" - }, - { - "from": 757, - "to": 758, - "id": "0x24" - }, - { - "from": 759, - "to": 759, - "id": "0x21" - }, - { - "from": 760, - "to": 760, - "id": "0x23" - }, - { - "from": 761, - "to": 761, - "id": "0x22" - }, - { - "from": 762, - "to": 763, - "id": "0x26" - }, - { - "from": 764, - "to": 764, - "id": "0x27" - }, - { - "from": 765, - "to": 765, - "id": "0x27" - }, - { - "from": 766, - "to": 766, - "id": "0x29" - }, - { - "from": 767, - "to": 767, - "id": "0x29" - }, - { - "from": 768, - "to": 769, - "id": "0x2A" - }, - { - "from": 770, - "to": 770, - "id": "0x29" - }, - { - "from": 771, - "to": 772, - "id": "0x29" - } - ], - "play.toServer.abilities": [ - { - "from": 735, - "to": 736, - "id": "0x1A" - }, - { - "from": 751, - "to": 754, - "id": "0x1A" - }, - { - "from": 755, - "to": 758, - "id": "0x19" - }, - { - "from": 759, - "to": 759, - "id": "0x1B" - }, - { - "from": 760, - "to": 760, - "id": "0x1C" - }, - { - "from": 761, - "to": 761, - "id": "0x1B" - }, - { - "from": 762, - "to": 763, - "id": "0x1C" - }, - { - "from": 764, - "to": 764, - "id": "0x1F" - }, - { - "from": 765, - "to": 765, - "id": "0x20" - }, - { - "from": 766, - "to": 767, - "id": "0x23" - }, - { - "from": 768, - "to": 768, - "id": "0x25" - }, - { - "from": 769, - "to": 769, - "id": "0x26" - }, - { - "from": 770, - "to": 770, - "id": "0x26" - }, - { - "from": 771, - "to": 772, - "id": "0x27" - } - ], - "play.toServer.advancement_tab": [ - { - "from": 735, - "to": 736, - "id": "0x21" - }, - { - "from": 751, - "to": 754, - "id": "0x22" - }, - { - "from": 755, - "to": 758, - "id": "0x22" - }, - { - "from": 759, - "to": 759, - "id": "0x24" - }, - { - "from": 760, - "to": 760, - "id": "0x25" - }, - { - "from": 761, - "to": 761, - "id": "0x25" - }, - { - "from": 762, - "to": 763, - "id": "0x25" - }, - { - "from": 764, - "to": 764, - "id": "0x28" - }, - { - "from": 765, - "to": 765, - "id": "0x29" - }, - { - "from": 766, - "to": 767, - "id": "0x2C" - }, - { - "from": 768, - "to": 768, - "id": "0x2E" - }, - { - "from": 769, - "to": 769, - "id": "0x30" - }, - { - "from": 770, - "to": 770, - "id": "0x30" - }, - { - "from": 771, - "to": 772, - "id": "0x31" - } - ], - "play.toServer.arm_animation": [ - { - "from": 735, - "to": 736, - "id": "0x2B" - }, - { - "from": 751, - "to": 754, - "id": "0x2C" - }, - { - "from": 755, - "to": 758, - "id": "0x2C" - }, - { - "from": 759, - "to": 759, - "id": "0x2E" - }, - { - "from": 760, - "to": 760, - "id": "0x2F" - }, - { - "from": 761, - "to": 761, - "id": "0x2F" - }, - { - "from": 762, - "to": 763, - "id": "0x2F" - }, - { - "from": 764, - "to": 764, - "id": "0x32" - }, - { - "from": 765, - "to": 765, - "id": "0x33" - }, - { - "from": 766, - "to": 767, - "id": "0x36" - }, - { - "from": 768, - "to": 768, - "id": "0x38" - }, - { - "from": 769, - "to": 769, - "id": "0x3A" - }, - { - "from": 770, - "to": 770, - "id": "0x3B" - }, - { - "from": 771, - "to": 772, - "id": "0x3C" - } - ], - "play.toServer.block_dig": [ - { - "from": 735, - "to": 736, - "id": "0x1B" - }, - { - "from": 751, - "to": 754, - "id": "0x1B" - }, - { - "from": 755, - "to": 758, - "id": "0x1A" - }, - { - "from": 759, - "to": 759, - "id": "0x1C" - }, - { - "from": 760, - "to": 760, - "id": "0x1D" - }, - { - "from": 761, - "to": 761, - "id": "0x1C" - }, - { - "from": 762, - "to": 763, - "id": "0x1D" - }, - { - "from": 764, - "to": 764, - "id": "0x20" - }, - { - "from": 765, - "to": 765, - "id": "0x21" - }, - { - "from": 766, - "to": 767, - "id": "0x24" - }, - { - "from": 768, - "to": 768, - "id": "0x26" - }, - { - "from": 769, - "to": 769, - "id": "0x27" - }, - { - "from": 770, - "to": 770, - "id": "0x27" - }, - { - "from": 771, - "to": 772, - "id": "0x28" - } - ], - "play.toServer.block_place": [ - { - "from": 735, - "to": 736, - "id": "0x2D" - }, - { - "from": 751, - "to": 754, - "id": "0x2E" - }, - { - "from": 755, - "to": 758, - "id": "0x2E" - }, - { - "from": 759, - "to": 759, - "id": "0x30" - }, - { - "from": 760, - "to": 760, - "id": "0x31" - }, - { - "from": 761, - "to": 761, - "id": "0x31" - }, - { - "from": 762, - "to": 763, - "id": "0x31" - }, - { - "from": 764, - "to": 764, - "id": "0x34" - }, - { - "from": 765, - "to": 765, - "id": "0x35" - }, - { - "from": 766, - "to": 767, - "id": "0x38" - }, - { - "from": 768, - "to": 768, - "id": "0x3A" - }, - { - "from": 769, - "to": 769, - "id": "0x3C" - }, - { - "from": 770, - "to": 770, - "id": "0x3E" - }, - { - "from": 771, - "to": 772, - "id": "0x3F" - } - ], - "play.toServer.change_gamemode": [ - { - "from": 771, - "to": 772, - "id": "0x04" - } - ], - "play.toServer.chat": [ - { - "from": 735, - "to": 736, - "id": "0x03" - }, - { - "from": 751, - "to": 754, - "id": "0x03" - }, - { - "from": 755, - "to": 758, - "id": "0x03" - } - ], - "play.toServer.chat_command": [ - { - "from": 759, - "to": 759, - "id": "0x03" - }, - { - "from": 760, - "to": 760, - "id": "0x04" - }, - { - "from": 761, - "to": 761, - "id": "0x04" - }, - { - "from": 762, - "to": 763, - "id": "0x04" - }, - { - "from": 764, - "to": 764, - "id": "0x04" - }, - { - "from": 765, - "to": 765, - "id": "0x04" - }, - { - "from": 766, - "to": 767, - "id": "0x04" - }, - { - "from": 768, - "to": 768, - "id": "0x05" - }, - { - "from": 769, - "to": 769, - "id": "0x05" - }, - { - "from": 770, - "to": 770, - "id": "0x05" - }, - { - "from": 771, - "to": 772, - "id": "0x06" - } - ], - "play.toServer.chat_command_signed": [ - { - "from": 766, - "to": 767, - "id": "0x05" - }, - { - "from": 768, - "to": 768, - "id": "0x06" - }, - { - "from": 769, - "to": 769, - "id": "0x06" - }, - { - "from": 770, - "to": 770, - "id": "0x06" - }, - { - "from": 771, - "to": 772, - "id": "0x07" - } - ], - "play.toServer.chat_message": [ - { - "from": 759, - "to": 759, - "id": "0x04" - }, - { - "from": 760, - "to": 760, - "id": "0x05" - }, - { - "from": 761, - "to": 761, - "id": "0x05" - }, - { - "from": 762, - "to": 763, - "id": "0x05" - }, - { - "from": 764, - "to": 764, - "id": "0x05" - }, - { - "from": 765, - "to": 765, - "id": "0x05" - }, - { - "from": 766, - "to": 767, - "id": "0x06" - }, - { - "from": 768, - "to": 768, - "id": "0x07" - }, - { - "from": 769, - "to": 769, - "id": "0x07" - }, - { - "from": 770, - "to": 770, - "id": "0x07" - }, - { - "from": 771, - "to": 772, - "id": "0x08" - } - ], - "play.toServer.chat_preview": [ - { - "from": 759, - "to": 759, - "id": "0x05" - }, - { - "from": 760, - "to": 760, - "id": "0x06" - } - ], - "play.toServer.chat_session_update": [ - { - "from": 761, - "to": 761, - "id": "0x20" - }, - { - "from": 762, - "to": 763, - "id": "0x06" - }, - { - "from": 764, - "to": 764, - "id": "0x06" - }, - { - "from": 765, - "to": 765, - "id": "0x06" - }, - { - "from": 766, - "to": 767, - "id": "0x07" - }, - { - "from": 768, - "to": 768, - "id": "0x08" - }, - { - "from": 769, - "to": 769, - "id": "0x08" - }, - { - "from": 770, - "to": 770, - "id": "0x08" - }, - { - "from": 771, - "to": 772, - "id": "0x09" - } - ], - "play.toServer.chunk_batch_received": [ - { - "from": 764, - "to": 764, - "id": "0x07" - }, - { - "from": 765, - "to": 765, - "id": "0x07" - }, - { - "from": 766, - "to": 767, - "id": "0x08" - }, - { - "from": 768, - "to": 768, - "id": "0x09" - }, - { - "from": 769, - "to": 769, - "id": "0x09" - }, - { - "from": 770, - "to": 770, - "id": "0x09" - }, - { - "from": 771, - "to": 772, - "id": "0x0A" - } - ], - "play.toServer.client_command": [ - { - "from": 735, - "to": 736, - "id": "0x04" - }, - { - "from": 751, - "to": 754, - "id": "0x04" - }, - { - "from": 755, - "to": 758, - "id": "0x04" - }, - { - "from": 759, - "to": 759, - "id": "0x06" - }, - { - "from": 760, - "to": 760, - "id": "0x07" - }, - { - "from": 761, - "to": 761, - "id": "0x06" - }, - { - "from": 762, - "to": 763, - "id": "0x07" - }, - { - "from": 764, - "to": 764, - "id": "0x08" - }, - { - "from": 765, - "to": 765, - "id": "0x08" - }, - { - "from": 766, - "to": 767, - "id": "0x09" - }, - { - "from": 768, - "to": 768, - "id": "0x0A" - }, - { - "from": 769, - "to": 769, - "id": "0x0A" - }, - { - "from": 770, - "to": 770, - "id": "0x0A" - }, - { - "from": 771, - "to": 772, - "id": "0x0B" - } - ], - "play.toServer.close_window": [ - { - "from": 735, - "to": 736, - "id": "0x0A" - }, - { - "from": 751, - "to": 754, - "id": "0x0A" - }, - { - "from": 755, - "to": 758, - "id": "0x09" - }, - { - "from": 759, - "to": 759, - "id": "0x0B" - }, - { - "from": 760, - "to": 760, - "id": "0x0C" - }, - { - "from": 761, - "to": 761, - "id": "0x0B" - }, - { - "from": 762, - "to": 763, - "id": "0x0C" - }, - { - "from": 764, - "to": 764, - "id": "0x0E" - }, - { - "from": 765, - "to": 765, - "id": "0x0E" - }, - { - "from": 766, - "to": 767, - "id": "0x0F" - }, - { - "from": 768, - "to": 768, - "id": "0x11" - }, - { - "from": 769, - "to": 769, - "id": "0x11" - }, - { - "from": 770, - "to": 770, - "id": "0x11" - }, - { - "from": 771, - "to": 772, - "id": "0x12" - } - ], - "play.toServer.configuration_acknowledged": [ - { - "from": 764, - "to": 764, - "id": "0x0B" - }, - { - "from": 765, - "to": 765, - "id": "0x0B" - }, - { - "from": 766, - "to": 767, - "id": "0x0C" - }, - { - "from": 768, - "to": 768, - "id": "0x0E" - }, - { - "from": 769, - "to": 769, - "id": "0x0E" - }, - { - "from": 770, - "to": 770, - "id": "0x0E" - }, - { - "from": 771, - "to": 772, - "id": "0x0F" - } - ], - "play.toServer.cookie_response": [ - { - "from": 766, - "to": 767, - "id": "0x11" - }, - { - "from": 768, - "to": 768, - "id": "0x13" - }, - { - "from": 769, - "to": 769, - "id": "0x13" - }, - { - "from": 770, - "to": 770, - "id": "0x13" - }, - { - "from": 771, - "to": 772, - "id": "0x14" - } - ], - "play.toServer.craft_recipe_request": [ - { - "from": 735, - "to": 736, - "id": "0x19" - }, - { - "from": 751, - "to": 754, - "id": "0x19" - }, - { - "from": 755, - "to": 758, - "id": "0x18" - }, - { - "from": 759, - "to": 759, - "id": "0x1A" - }, - { - "from": 760, - "to": 760, - "id": "0x1B" - }, - { - "from": 761, - "to": 761, - "id": "0x1A" - }, - { - "from": 762, - "to": 763, - "id": "0x1B" - }, - { - "from": 764, - "to": 764, - "id": "0x1E" - }, - { - "from": 765, - "to": 765, - "id": "0x1F" - }, - { - "from": 766, - "to": 767, - "id": "0x22" - }, - { - "from": 768, - "to": 768, - "id": "0x24" - }, - { - "from": 769, - "to": 769, - "id": "0x25" - }, - { - "from": 770, - "to": 770, - "id": "0x25" - }, - { - "from": 771, - "to": 772, - "id": "0x26" - } - ], - "play.toServer.crafting_book_data": [ - { - "from": 735, - "to": 736, - "id": "0x1E" - } - ], - "play.toServer.custom_click_action": [ - { - "from": 771, - "to": 772, - "id": "0x41" - } - ], - "play.toServer.custom_payload": [ - { - "from": 735, - "to": 736, - "id": "0x0B" - }, - { - "from": 751, - "to": 754, - "id": "0x0B" - }, - { - "from": 755, - "to": 758, - "id": "0x0A" - }, - { - "from": 759, - "to": 759, - "id": "0x0C" - }, - { - "from": 760, - "to": 760, - "id": "0x0D" - }, - { - "from": 761, - "to": 761, - "id": "0x0C" - }, - { - "from": 762, - "to": 763, - "id": "0x0D" - }, - { - "from": 764, - "to": 764, - "id": "0x0F" - }, - { - "from": 765, - "to": 765, - "id": "0x10" - }, - { - "from": 766, - "to": 767, - "id": "0x12" - }, - { - "from": 768, - "to": 768, - "id": "0x14" - }, - { - "from": 769, - "to": 769, - "id": "0x14" - }, - { - "from": 770, - "to": 770, - "id": "0x14" - }, - { - "from": 771, - "to": 772, - "id": "0x15" - } - ], - "play.toServer.debug_sample_subscription": [ - { - "from": 766, - "to": 767, - "id": "0x13" - }, - { - "from": 768, - "to": 768, - "id": "0x15" - }, - { - "from": 769, - "to": 769, - "id": "0x15" - }, - { - "from": 770, - "to": 770, - "id": "0x15" - }, - { - "from": 771, - "to": 772, - "id": "0x16" - } - ], - "play.toServer.displayed_recipe": [ - { - "from": 751, - "to": 754, - "id": "0x1F" - }, - { - "from": 755, - "to": 758, - "id": "0x1F" - }, - { - "from": 759, - "to": 759, - "id": "0x21" - }, - { - "from": 760, - "to": 760, - "id": "0x22" - }, - { - "from": 761, - "to": 761, - "id": "0x22" - }, - { - "from": 762, - "to": 763, - "id": "0x22" - }, - { - "from": 764, - "to": 764, - "id": "0x25" - }, - { - "from": 765, - "to": 765, - "id": "0x26" - }, - { - "from": 766, - "to": 767, - "id": "0x29" - }, - { - "from": 768, - "to": 768, - "id": "0x2B" - }, - { - "from": 769, - "to": 769, - "id": "0x2D" - }, - { - "from": 770, - "to": 770, - "id": "0x2D" - }, - { - "from": 771, - "to": 772, - "id": "0x2E" - } - ], - "play.toServer.edit_book": [ - { - "from": 735, - "to": 736, - "id": "0x0C" - }, - { - "from": 751, - "to": 754, - "id": "0x0C" - }, - { - "from": 755, - "to": 758, - "id": "0x0B" - }, - { - "from": 759, - "to": 759, - "id": "0x0D" - }, - { - "from": 760, - "to": 760, - "id": "0x0E" - }, - { - "from": 761, - "to": 761, - "id": "0x0D" - }, - { - "from": 762, - "to": 763, - "id": "0x0E" - }, - { - "from": 764, - "to": 764, - "id": "0x10" - }, - { - "from": 765, - "to": 765, - "id": "0x11" - }, - { - "from": 766, - "to": 767, - "id": "0x14" - }, - { - "from": 768, - "to": 768, - "id": "0x16" - }, - { - "from": 769, - "to": 769, - "id": "0x16" - }, - { - "from": 770, - "to": 770, - "id": "0x16" - }, - { - "from": 771, - "to": 772, - "id": "0x17" - } - ], - "play.toServer.enchant_item": [ - { - "from": 735, - "to": 736, - "id": "0x08" - }, - { - "from": 751, - "to": 754, - "id": "0x08" - }, - { - "from": 755, - "to": 758, - "id": "0x07" - }, - { - "from": 759, - "to": 759, - "id": "0x09" - }, - { - "from": 760, - "to": 760, - "id": "0x0A" - }, - { - "from": 761, - "to": 761, - "id": "0x09" - }, - { - "from": 762, - "to": 763, - "id": "0x0A" - }, - { - "from": 764, - "to": 764, - "id": "0x0C" - }, - { - "from": 765, - "to": 765, - "id": "0x0C" - }, - { - "from": 766, - "to": 767, - "id": "0x0D" - }, - { - "from": 768, - "to": 768, - "id": "0x0F" - }, - { - "from": 769, - "to": 769, - "id": "0x0F" - }, - { - "from": 770, - "to": 770, - "id": "0x0F" - }, - { - "from": 771, - "to": 772, - "id": "0x10" - } - ], - "play.toServer.entity_action": [ - { - "from": 735, - "to": 736, - "id": "0x1C" - }, - { - "from": 751, - "to": 754, - "id": "0x1C" - }, - { - "from": 755, - "to": 758, - "id": "0x1B" - }, - { - "from": 759, - "to": 759, - "id": "0x1D" - }, - { - "from": 760, - "to": 760, - "id": "0x1E" - }, - { - "from": 761, - "to": 761, - "id": "0x1D" - }, - { - "from": 762, - "to": 763, - "id": "0x1E" - }, - { - "from": 764, - "to": 764, - "id": "0x21" - }, - { - "from": 765, - "to": 765, - "id": "0x22" - }, - { - "from": 766, - "to": 767, - "id": "0x25" - }, - { - "from": 768, - "to": 768, - "id": "0x27" - }, - { - "from": 769, - "to": 769, - "id": "0x28" - }, - { - "from": 770, - "to": 770, - "id": "0x28" - }, - { - "from": 771, - "to": 772, - "id": "0x29" - } - ], - "play.toServer.flying": [ - { - "from": 735, - "to": 736, - "id": "0x15" - }, - { - "from": 751, - "to": 754, - "id": "0x15" - }, - { - "from": 755, - "to": 758, - "id": "0x14" - }, - { - "from": 759, - "to": 759, - "id": "0x16" - }, - { - "from": 760, - "to": 760, - "id": "0x17" - }, - { - "from": 761, - "to": 761, - "id": "0x16" - }, - { - "from": 762, - "to": 763, - "id": "0x17" - }, - { - "from": 764, - "to": 764, - "id": "0x19" - }, - { - "from": 765, - "to": 765, - "id": "0x1A" - }, - { - "from": 766, - "to": 767, - "id": "0x1D" - }, - { - "from": 768, - "to": 768, - "id": "0x1F" - }, - { - "from": 769, - "to": 769, - "id": "0x1F" - }, - { - "from": 770, - "to": 770, - "id": "0x1F" - }, - { - "from": 771, - "to": 772, - "id": "0x20" - } - ], - "play.toServer.generate_structure": [ - { - "from": 735, - "to": 736, - "id": "0x0F" - }, - { - "from": 751, - "to": 754, - "id": "0x0F" - }, - { - "from": 755, - "to": 758, - "id": "0x0E" - }, - { - "from": 759, - "to": 759, - "id": "0x10" - }, - { - "from": 760, - "to": 760, - "id": "0x11" - }, - { - "from": 761, - "to": 761, - "id": "0x10" - }, - { - "from": 762, - "to": 763, - "id": "0x11" - }, - { - "from": 764, - "to": 764, - "id": "0x13" - }, - { - "from": 765, - "to": 765, - "id": "0x14" - }, - { - "from": 766, - "to": 767, - "id": "0x17" - }, - { - "from": 768, - "to": 768, - "id": "0x19" - }, - { - "from": 769, - "to": 769, - "id": "0x19" - }, - { - "from": 770, - "to": 770, - "id": "0x19" - }, - { - "from": 771, - "to": 772, - "id": "0x1A" - } - ], - "play.toServer.held_item_slot": [ - { - "from": 735, - "to": 736, - "id": "0x24" - }, - { - "from": 751, - "to": 754, - "id": "0x25" - }, - { - "from": 755, - "to": 758, - "id": "0x25" - }, - { - "from": 759, - "to": 759, - "id": "0x27" - }, - { - "from": 760, - "to": 760, - "id": "0x28" - }, - { - "from": 761, - "to": 761, - "id": "0x28" - }, - { - "from": 762, - "to": 763, - "id": "0x28" - }, - { - "from": 764, - "to": 764, - "id": "0x2B" - }, - { - "from": 765, - "to": 765, - "id": "0x2C" - }, - { - "from": 766, - "to": 767, - "id": "0x2F" - }, - { - "from": 768, - "to": 768, - "id": "0x31" - }, - { - "from": 769, - "to": 769, - "id": "0x33" - }, - { - "from": 770, - "to": 770, - "id": "0x33" - }, - { - "from": 771, - "to": 772, - "id": "0x34" - } - ], - "play.toServer.keep_alive": [ - { - "from": 735, - "to": 736, - "id": "0x10" - }, - { - "from": 751, - "to": 754, - "id": "0x10" - }, - { - "from": 755, - "to": 758, - "id": "0x0F" - }, - { - "from": 759, - "to": 759, - "id": "0x11" - }, - { - "from": 760, - "to": 760, - "id": "0x12" - }, - { - "from": 761, - "to": 761, - "id": "0x11" - }, - { - "from": 762, - "to": 763, - "id": "0x12" - }, - { - "from": 764, - "to": 764, - "id": "0x14" - }, - { - "from": 765, - "to": 765, - "id": "0x15" - }, - { - "from": 766, - "to": 767, - "id": "0x18" - }, - { - "from": 768, - "to": 768, - "id": "0x1A" - }, - { - "from": 769, - "to": 769, - "id": "0x1A" - }, - { - "from": 770, - "to": 770, - "id": "0x1A" - }, - { - "from": 771, - "to": 772, - "id": "0x1B" - } - ], - "play.toServer.lock_difficulty": [ - { - "from": 735, - "to": 736, - "id": "0x11" - }, - { - "from": 751, - "to": 754, - "id": "0x11" - }, - { - "from": 755, - "to": 758, - "id": "0x10" - }, - { - "from": 759, - "to": 759, - "id": "0x12" - }, - { - "from": 760, - "to": 760, - "id": "0x13" - }, - { - "from": 761, - "to": 761, - "id": "0x12" - }, - { - "from": 762, - "to": 763, - "id": "0x13" - }, - { - "from": 764, - "to": 764, - "id": "0x15" - }, - { - "from": 765, - "to": 765, - "id": "0x16" - }, - { - "from": 766, - "to": 767, - "id": "0x19" - }, - { - "from": 768, - "to": 768, - "id": "0x1B" - }, - { - "from": 769, - "to": 769, - "id": "0x1B" - }, - { - "from": 770, - "to": 770, - "id": "0x1B" - }, - { - "from": 771, - "to": 772, - "id": "0x1C" - } - ], - "play.toServer.look": [ - { - "from": 735, - "to": 736, - "id": "0x14" - }, - { - "from": 751, - "to": 754, - "id": "0x14" - }, - { - "from": 755, - "to": 758, - "id": "0x13" - }, - { - "from": 759, - "to": 759, - "id": "0x15" - }, - { - "from": 760, - "to": 760, - "id": "0x16" - }, - { - "from": 761, - "to": 761, - "id": "0x15" - }, - { - "from": 762, - "to": 763, - "id": "0x16" - }, - { - "from": 764, - "to": 764, - "id": "0x18" - }, - { - "from": 765, - "to": 765, - "id": "0x19" - }, - { - "from": 766, - "to": 767, - "id": "0x1C" - }, - { - "from": 768, - "to": 768, - "id": "0x1E" - }, - { - "from": 769, - "to": 769, - "id": "0x1E" - }, - { - "from": 770, - "to": 770, - "id": "0x1E" - }, - { - "from": 771, - "to": 772, - "id": "0x1F" - } - ], - "play.toServer.message_acknowledgement": [ - { - "from": 760, - "to": 760, - "id": "0x03" - }, - { - "from": 761, - "to": 761, - "id": "0x03" - }, - { - "from": 762, - "to": 763, - "id": "0x03" - }, - { - "from": 764, - "to": 764, - "id": "0x03" - }, - { - "from": 765, - "to": 765, - "id": "0x03" - }, - { - "from": 766, - "to": 767, - "id": "0x03" - }, - { - "from": 768, - "to": 768, - "id": "0x04" - }, - { - "from": 769, - "to": 769, - "id": "0x04" - }, - { - "from": 770, - "to": 770, - "id": "0x04" - }, - { - "from": 771, - "to": 772, - "id": "0x05" - } - ], - "play.toServer.name_item": [ - { - "from": 735, - "to": 736, - "id": "0x1F" - }, - { - "from": 751, - "to": 754, - "id": "0x20" - }, - { - "from": 755, - "to": 758, - "id": "0x20" - }, - { - "from": 759, - "to": 759, - "id": "0x22" - }, - { - "from": 760, - "to": 760, - "id": "0x23" - }, - { - "from": 761, - "to": 761, - "id": "0x23" - }, - { - "from": 762, - "to": 763, - "id": "0x23" - }, - { - "from": 764, - "to": 764, - "id": "0x26" - }, - { - "from": 765, - "to": 765, - "id": "0x27" - }, - { - "from": 766, - "to": 767, - "id": "0x2A" - }, - { - "from": 768, - "to": 768, - "id": "0x2C" - }, - { - "from": 769, - "to": 769, - "id": "0x2E" - }, - { - "from": 770, - "to": 770, - "id": "0x2E" - }, - { - "from": 771, - "to": 772, - "id": "0x2F" - } - ], - "play.toServer.pick_item": [ - { - "from": 735, - "to": 736, - "id": "0x18" - }, - { - "from": 751, - "to": 754, - "id": "0x18" - }, - { - "from": 755, - "to": 758, - "id": "0x17" - }, - { - "from": 759, - "to": 759, - "id": "0x19" - }, - { - "from": 760, - "to": 760, - "id": "0x1A" - }, - { - "from": 761, - "to": 761, - "id": "0x19" - }, - { - "from": 762, - "to": 763, - "id": "0x1A" - }, - { - "from": 764, - "to": 764, - "id": "0x1C" - }, - { - "from": 765, - "to": 765, - "id": "0x1D" - }, - { - "from": 766, - "to": 767, - "id": "0x20" - }, - { - "from": 768, - "to": 768, - "id": "0x22" - } - ], - "play.toServer.pick_item_from_block": [ - { - "from": 769, - "to": 769, - "id": "0x22" - }, - { - "from": 770, - "to": 770, - "id": "0x22" - }, - { - "from": 771, - "to": 772, - "id": "0x23" - } - ], - "play.toServer.pick_item_from_entity": [ - { - "from": 769, - "to": 769, - "id": "0x23" - }, - { - "from": 770, - "to": 770, - "id": "0x23" - }, - { - "from": 771, - "to": 772, - "id": "0x24" - } - ], - "play.toServer.ping_request": [ - { - "from": 764, - "to": 764, - "id": "0x1D" - }, - { - "from": 765, - "to": 765, - "id": "0x1E" - }, - { - "from": 766, - "to": 767, - "id": "0x21" - }, - { - "from": 768, - "to": 768, - "id": "0x23" - }, - { - "from": 769, - "to": 769, - "id": "0x24" - }, - { - "from": 770, - "to": 770, - "id": "0x24" - }, - { - "from": 771, - "to": 772, - "id": "0x25" - } - ], - "play.toServer.player_input": [ - { - "from": 768, - "to": 768, - "id": "0x28" - }, - { - "from": 769, - "to": 769, - "id": "0x29" - }, - { - "from": 770, - "to": 770, - "id": "0x29" - }, - { - "from": 771, - "to": 772, - "id": "0x2A" - } - ], - "play.toServer.player_loaded": [ - { - "from": 769, - "to": 769, - "id": "0x2A" - }, - { - "from": 770, - "to": 770, - "id": "0x2A" - }, - { - "from": 771, - "to": 772, - "id": "0x2B" - } - ], - "play.toServer.pong": [ - { - "from": 755, - "to": 758, - "id": "0x1D" - }, - { - "from": 759, - "to": 759, - "id": "0x1F" - }, - { - "from": 760, - "to": 760, - "id": "0x20" - }, - { - "from": 761, - "to": 761, - "id": "0x1F" - }, - { - "from": 762, - "to": 763, - "id": "0x20" - }, - { - "from": 764, - "to": 764, - "id": "0x23" - }, - { - "from": 765, - "to": 765, - "id": "0x24" - }, - { - "from": 766, - "to": 767, - "id": "0x27" - }, - { - "from": 768, - "to": 768, - "id": "0x29" - }, - { - "from": 769, - "to": 769, - "id": "0x2B" - }, - { - "from": 770, - "to": 770, - "id": "0x2B" - }, - { - "from": 771, - "to": 772, - "id": "0x2C" - } - ], - "play.toServer.position": [ - { - "from": 735, - "to": 736, - "id": "0x12" - }, - { - "from": 751, - "to": 754, - "id": "0x12" - }, - { - "from": 755, - "to": 758, - "id": "0x11" - }, - { - "from": 759, - "to": 759, - "id": "0x13" - }, - { - "from": 760, - "to": 760, - "id": "0x14" - }, - { - "from": 761, - "to": 761, - "id": "0x13" - }, - { - "from": 762, - "to": 763, - "id": "0x14" - }, - { - "from": 764, - "to": 764, - "id": "0x16" - }, - { - "from": 765, - "to": 765, - "id": "0x17" - }, - { - "from": 766, - "to": 767, - "id": "0x1A" - }, - { - "from": 768, - "to": 768, - "id": "0x1C" - }, - { - "from": 769, - "to": 769, - "id": "0x1C" - }, - { - "from": 770, - "to": 770, - "id": "0x1C" - }, - { - "from": 771, - "to": 772, - "id": "0x1D" - } - ], - "play.toServer.position_look": [ - { - "from": 735, - "to": 736, - "id": "0x13" - }, - { - "from": 751, - "to": 754, - "id": "0x13" - }, - { - "from": 755, - "to": 758, - "id": "0x12" - }, - { - "from": 759, - "to": 759, - "id": "0x14" - }, - { - "from": 760, - "to": 760, - "id": "0x15" - }, - { - "from": 761, - "to": 761, - "id": "0x14" - }, - { - "from": 762, - "to": 763, - "id": "0x15" - }, - { - "from": 764, - "to": 764, - "id": "0x17" - }, - { - "from": 765, - "to": 765, - "id": "0x18" - }, - { - "from": 766, - "to": 767, - "id": "0x1B" - }, - { - "from": 768, - "to": 768, - "id": "0x1D" - }, - { - "from": 769, - "to": 769, - "id": "0x1D" - }, - { - "from": 770, - "to": 770, - "id": "0x1D" - }, - { - "from": 771, - "to": 772, - "id": "0x1E" - } - ], - "play.toServer.query_block_nbt": [ - { - "from": 735, - "to": 736, - "id": "0x01" - }, - { - "from": 751, - "to": 754, - "id": "0x01" - }, - { - "from": 755, - "to": 758, - "id": "0x01" - }, - { - "from": 759, - "to": 759, - "id": "0x01" - }, - { - "from": 760, - "to": 760, - "id": "0x01" - }, - { - "from": 761, - "to": 761, - "id": "0x01" - }, - { - "from": 762, - "to": 763, - "id": "0x01" - }, - { - "from": 764, - "to": 764, - "id": "0x01" - }, - { - "from": 765, - "to": 765, - "id": "0x01" - }, - { - "from": 766, - "to": 767, - "id": "0x01" - }, - { - "from": 768, - "to": 768, - "id": "0x01" - }, - { - "from": 769, - "to": 769, - "id": "0x01" - }, - { - "from": 770, - "to": 770, - "id": "0x01" - }, - { - "from": 771, - "to": 772, - "id": "0x01" - } - ], - "play.toServer.query_entity_nbt": [ - { - "from": 735, - "to": 736, - "id": "0x0D" - }, - { - "from": 751, - "to": 754, - "id": "0x0D" - }, - { - "from": 755, - "to": 758, - "id": "0x0C" - }, - { - "from": 759, - "to": 759, - "id": "0x0E" - }, - { - "from": 760, - "to": 760, - "id": "0x0F" - }, - { - "from": 761, - "to": 761, - "id": "0x0E" - }, - { - "from": 762, - "to": 763, - "id": "0x0F" - }, - { - "from": 764, - "to": 764, - "id": "0x11" - }, - { - "from": 765, - "to": 765, - "id": "0x12" - }, - { - "from": 766, - "to": 767, - "id": "0x15" - }, - { - "from": 768, - "to": 768, - "id": "0x17" - }, - { - "from": 769, - "to": 769, - "id": "0x17" - }, - { - "from": 770, - "to": 770, - "id": "0x17" - }, - { - "from": 771, - "to": 772, - "id": "0x18" - } - ], - "play.toServer.recipe_book": [ - { - "from": 751, - "to": 754, - "id": "0x1E" - }, - { - "from": 755, - "to": 758, - "id": "0x1E" - }, - { - "from": 759, - "to": 759, - "id": "0x20" - }, - { - "from": 760, - "to": 760, - "id": "0x21" - }, - { - "from": 761, - "to": 761, - "id": "0x21" - }, - { - "from": 762, - "to": 763, - "id": "0x21" - }, - { - "from": 764, - "to": 764, - "id": "0x24" - }, - { - "from": 765, - "to": 765, - "id": "0x25" - }, - { - "from": 766, - "to": 767, - "id": "0x28" - }, - { - "from": 768, - "to": 768, - "id": "0x2A" - }, - { - "from": 769, - "to": 769, - "id": "0x2C" - }, - { - "from": 770, - "to": 770, - "id": "0x2C" - }, - { - "from": 771, - "to": 772, - "id": "0x2D" - } - ], - "play.toServer.resource_pack_receive": [ - { - "from": 735, - "to": 736, - "id": "0x20" - }, - { - "from": 751, - "to": 754, - "id": "0x21" - }, - { - "from": 755, - "to": 758, - "id": "0x21" - }, - { - "from": 759, - "to": 759, - "id": "0x23" - }, - { - "from": 760, - "to": 760, - "id": "0x24" - }, - { - "from": 761, - "to": 761, - "id": "0x24" - }, - { - "from": 762, - "to": 763, - "id": "0x24" - }, - { - "from": 764, - "to": 764, - "id": "0x27" - }, - { - "from": 765, - "to": 765, - "id": "0x28" - }, - { - "from": 766, - "to": 767, - "id": "0x2B" - }, - { - "from": 768, - "to": 768, - "id": "0x2D" - }, - { - "from": 769, - "to": 769, - "id": "0x2F" - }, - { - "from": 770, - "to": 770, - "id": "0x2F" - }, - { - "from": 771, - "to": 772, - "id": "0x30" - } - ], - "play.toServer.select_bundle_item": [ - { - "from": 768, - "to": 768, - "id": "0x02" - }, - { - "from": 769, - "to": 769, - "id": "0x02" - }, - { - "from": 770, - "to": 770, - "id": "0x02" - }, - { - "from": 771, - "to": 772, - "id": "0x02" - } - ], - "play.toServer.select_trade": [ - { - "from": 735, - "to": 736, - "id": "0x22" - }, - { - "from": 751, - "to": 754, - "id": "0x23" - }, - { - "from": 755, - "to": 758, - "id": "0x23" - }, - { - "from": 759, - "to": 759, - "id": "0x25" - }, - { - "from": 760, - "to": 760, - "id": "0x26" - }, - { - "from": 761, - "to": 761, - "id": "0x26" - }, - { - "from": 762, - "to": 763, - "id": "0x26" - }, - { - "from": 764, - "to": 764, - "id": "0x29" - }, - { - "from": 765, - "to": 765, - "id": "0x2A" - }, - { - "from": 766, - "to": 767, - "id": "0x2D" - }, - { - "from": 768, - "to": 768, - "id": "0x2F" - }, - { - "from": 769, - "to": 769, - "id": "0x31" - }, - { - "from": 770, - "to": 770, - "id": "0x31" - }, - { - "from": 771, - "to": 772, - "id": "0x32" - } - ], - "play.toServer.set_beacon_effect": [ - { - "from": 735, - "to": 736, - "id": "0x23" - }, - { - "from": 751, - "to": 754, - "id": "0x24" - }, - { - "from": 755, - "to": 758, - "id": "0x24" - }, - { - "from": 759, - "to": 759, - "id": "0x26" - }, - { - "from": 760, - "to": 760, - "id": "0x27" - }, - { - "from": 761, - "to": 761, - "id": "0x27" - }, - { - "from": 762, - "to": 763, - "id": "0x27" - }, - { - "from": 764, - "to": 764, - "id": "0x2A" - }, - { - "from": 765, - "to": 765, - "id": "0x2B" - }, - { - "from": 766, - "to": 767, - "id": "0x2E" - }, - { - "from": 768, - "to": 768, - "id": "0x30" - }, - { - "from": 769, - "to": 769, - "id": "0x32" - }, - { - "from": 770, - "to": 770, - "id": "0x32" - }, - { - "from": 771, - "to": 772, - "id": "0x33" - } - ], - "play.toServer.set_creative_slot": [ - { - "from": 735, - "to": 736, - "id": "0x27" - }, - { - "from": 751, - "to": 754, - "id": "0x28" - }, - { - "from": 755, - "to": 758, - "id": "0x28" - }, - { - "from": 759, - "to": 759, - "id": "0x2A" - }, - { - "from": 760, - "to": 760, - "id": "0x2B" - }, - { - "from": 761, - "to": 761, - "id": "0x2B" - }, - { - "from": 762, - "to": 763, - "id": "0x2B" - }, - { - "from": 764, - "to": 764, - "id": "0x2E" - }, - { - "from": 765, - "to": 765, - "id": "0x2F" - }, - { - "from": 766, - "to": 767, - "id": "0x32" - }, - { - "from": 768, - "to": 768, - "id": "0x34" - }, - { - "from": 769, - "to": 769, - "id": "0x36" - }, - { - "from": 770, - "to": 770, - "id": "0x36" - }, - { - "from": 771, - "to": 772, - "id": "0x37" - } - ], - "play.toServer.set_difficulty": [ - { - "from": 735, - "to": 736, - "id": "0x02" - }, - { - "from": 751, - "to": 754, - "id": "0x02" - }, - { - "from": 755, - "to": 758, - "id": "0x02" - }, - { - "from": 759, - "to": 759, - "id": "0x02" - }, - { - "from": 760, - "to": 760, - "id": "0x02" - }, - { - "from": 761, - "to": 761, - "id": "0x02" - }, - { - "from": 762, - "to": 763, - "id": "0x02" - }, - { - "from": 764, - "to": 764, - "id": "0x02" - }, - { - "from": 765, - "to": 765, - "id": "0x02" - }, - { - "from": 766, - "to": 767, - "id": "0x02" - }, - { - "from": 768, - "to": 768, - "id": "0x03" - }, - { - "from": 769, - "to": 769, - "id": "0x03" - }, - { - "from": 770, - "to": 770, - "id": "0x03" - }, - { - "from": 771, - "to": 772, - "id": "0x03" - } - ], - "play.toServer.set_slot_state": [ - { - "from": 765, - "to": 765, - "id": "0x0F" - }, - { - "from": 766, - "to": 767, - "id": "0x10" - }, - { - "from": 768, - "to": 768, - "id": "0x12" - }, - { - "from": 769, - "to": 769, - "id": "0x12" - }, - { - "from": 770, - "to": 770, - "id": "0x12" - }, - { - "from": 771, - "to": 772, - "id": "0x13" - } - ], - "play.toServer.set_test_block": [ - { - "from": 770, - "to": 770, - "id": "0x39" - }, - { - "from": 771, - "to": 772, - "id": "0x3A" - } - ], - "play.toServer.settings": [ - { - "from": 735, - "to": 736, - "id": "0x05" - }, - { - "from": 751, - "to": 754, - "id": "0x05" - }, - { - "from": 755, - "to": 758, - "id": "0x05" - }, - { - "from": 759, - "to": 759, - "id": "0x07" - }, - { - "from": 760, - "to": 760, - "id": "0x08" - }, - { - "from": 761, - "to": 761, - "id": "0x07" - }, - { - "from": 762, - "to": 763, - "id": "0x08" - }, - { - "from": 764, - "to": 764, - "id": "0x09" - }, - { - "from": 765, - "to": 765, - "id": "0x09" - }, - { - "from": 766, - "to": 767, - "id": "0x0A" - }, - { - "from": 768, - "to": 768, - "id": "0x0C" - }, - { - "from": 769, - "to": 769, - "id": "0x0C" - }, - { - "from": 770, - "to": 770, - "id": "0x0C" - }, - { - "from": 771, - "to": 772, - "id": "0x0D" - } - ], - "play.toServer.spectate": [ - { - "from": 735, - "to": 736, - "id": "0x2C" - }, - { - "from": 751, - "to": 754, - "id": "0x2D" - }, - { - "from": 755, - "to": 758, - "id": "0x2D" - }, - { - "from": 759, - "to": 759, - "id": "0x2F" - }, - { - "from": 760, - "to": 760, - "id": "0x30" - }, - { - "from": 761, - "to": 761, - "id": "0x30" - }, - { - "from": 762, - "to": 763, - "id": "0x30" - }, - { - "from": 764, - "to": 764, - "id": "0x33" - }, - { - "from": 765, - "to": 765, - "id": "0x34" - }, - { - "from": 766, - "to": 767, - "id": "0x37" - }, - { - "from": 768, - "to": 768, - "id": "0x39" - }, - { - "from": 769, - "to": 769, - "id": "0x3B" - }, - { - "from": 770, - "to": 770, - "id": "0x3D" - }, - { - "from": 771, - "to": 772, - "id": "0x3D" - } - ], - "play.toServer.steer_boat": [ - { - "from": 735, - "to": 736, - "id": "0x17" - }, - { - "from": 751, - "to": 754, - "id": "0x17" - }, - { - "from": 755, - "to": 758, - "id": "0x16" - }, - { - "from": 759, - "to": 759, - "id": "0x18" - }, - { - "from": 760, - "to": 760, - "id": "0x19" - }, - { - "from": 761, - "to": 761, - "id": "0x18" - }, - { - "from": 762, - "to": 763, - "id": "0x19" - }, - { - "from": 764, - "to": 764, - "id": "0x1B" - }, - { - "from": 765, - "to": 765, - "id": "0x1C" - }, - { - "from": 766, - "to": 767, - "id": "0x1F" - }, - { - "from": 768, - "to": 768, - "id": "0x21" - }, - { - "from": 769, - "to": 769, - "id": "0x21" - }, - { - "from": 770, - "to": 770, - "id": "0x21" - }, - { - "from": 771, - "to": 772, - "id": "0x22" - } - ], - "play.toServer.steer_vehicle": [ - { - "from": 735, - "to": 736, - "id": "0x1D" - }, - { - "from": 751, - "to": 754, - "id": "0x1D" - }, - { - "from": 755, - "to": 758, - "id": "0x1C" - }, - { - "from": 759, - "to": 759, - "id": "0x1E" - }, - { - "from": 760, - "to": 760, - "id": "0x1F" - }, - { - "from": 761, - "to": 761, - "id": "0x1E" - }, - { - "from": 762, - "to": 763, - "id": "0x1F" - }, - { - "from": 764, - "to": 764, - "id": "0x22" - }, - { - "from": 765, - "to": 765, - "id": "0x23" - }, - { - "from": 766, - "to": 767, - "id": "0x26" - } - ], - "play.toServer.tab_complete": [ - { - "from": 735, - "to": 736, - "id": "0x06" - }, - { - "from": 751, - "to": 754, - "id": "0x06" - }, - { - "from": 755, - "to": 758, - "id": "0x06" - }, - { - "from": 759, - "to": 759, - "id": "0x08" - }, - { - "from": 760, - "to": 760, - "id": "0x09" - }, - { - "from": 761, - "to": 761, - "id": "0x08" - }, - { - "from": 762, - "to": 763, - "id": "0x09" - }, - { - "from": 764, - "to": 764, - "id": "0x0A" - }, - { - "from": 765, - "to": 765, - "id": "0x0A" - }, - { - "from": 766, - "to": 767, - "id": "0x0B" - }, - { - "from": 768, - "to": 768, - "id": "0x0D" - }, - { - "from": 769, - "to": 769, - "id": "0x0D" - }, - { - "from": 770, - "to": 770, - "id": "0x0D" - }, - { - "from": 771, - "to": 772, - "id": "0x0E" - } - ], - "play.toServer.teleport_confirm": [ - { - "from": 735, - "to": 736, - "id": "0x00" - }, - { - "from": 751, - "to": 754, - "id": "0x00" - }, - { - "from": 755, - "to": 758, - "id": "0x00" - }, - { - "from": 759, - "to": 759, - "id": "0x00" - }, - { - "from": 760, - "to": 760, - "id": "0x00" - }, - { - "from": 761, - "to": 761, - "id": "0x00" - }, - { - "from": 762, - "to": 763, - "id": "0x00" - }, - { - "from": 764, - "to": 764, - "id": "0x00" - }, - { - "from": 765, - "to": 765, - "id": "0x00" - }, - { - "from": 766, - "to": 767, - "id": "0x00" - }, - { - "from": 768, - "to": 768, - "id": "0x00" - }, - { - "from": 769, - "to": 769, - "id": "0x00" - }, - { - "from": 770, - "to": 770, - "id": "0x00" - }, - { - "from": 771, - "to": 772, - "id": "0x00" - } - ], - "play.toServer.test_instance_block_action": [ - { - "from": 770, - "to": 770, - "id": "0x3C" - }, - { - "from": 771, - "to": 772, - "id": "0x3E" - } - ], - "play.toServer.tick_end": [ - { - "from": 768, - "to": 768, - "id": "0x0B" - }, - { - "from": 769, - "to": 769, - "id": "0x0B" - }, - { - "from": 770, - "to": 770, - "id": "0x0B" - }, - { - "from": 771, - "to": 772, - "id": "0x0C" - } - ], - "play.toServer.transaction": [ - { - "from": 735, - "to": 736, - "id": "0x07" - }, - { - "from": 751, - "to": 754, - "id": "0x07" - } - ], - "play.toServer.update_command_block": [ - { - "from": 735, - "to": 736, - "id": "0x25" - }, - { - "from": 751, - "to": 754, - "id": "0x26" - }, - { - "from": 755, - "to": 758, - "id": "0x26" - }, - { - "from": 759, - "to": 759, - "id": "0x28" - }, - { - "from": 760, - "to": 760, - "id": "0x29" - }, - { - "from": 761, - "to": 761, - "id": "0x29" - }, - { - "from": 762, - "to": 763, - "id": "0x29" - }, - { - "from": 764, - "to": 764, - "id": "0x2C" - }, - { - "from": 765, - "to": 765, - "id": "0x2D" - }, - { - "from": 766, - "to": 767, - "id": "0x30" - }, - { - "from": 768, - "to": 768, - "id": "0x32" - }, - { - "from": 769, - "to": 769, - "id": "0x34" - }, - { - "from": 770, - "to": 770, - "id": "0x34" - }, - { - "from": 771, - "to": 772, - "id": "0x35" - } - ], - "play.toServer.update_command_block_minecart": [ - { - "from": 735, - "to": 736, - "id": "0x26" - }, - { - "from": 751, - "to": 754, - "id": "0x27" - }, - { - "from": 755, - "to": 758, - "id": "0x27" - }, - { - "from": 759, - "to": 759, - "id": "0x29" - }, - { - "from": 760, - "to": 760, - "id": "0x2A" - }, - { - "from": 761, - "to": 761, - "id": "0x2A" - }, - { - "from": 762, - "to": 763, - "id": "0x2A" - }, - { - "from": 764, - "to": 764, - "id": "0x2D" - }, - { - "from": 765, - "to": 765, - "id": "0x2E" - }, - { - "from": 766, - "to": 767, - "id": "0x31" - }, - { - "from": 768, - "to": 768, - "id": "0x33" - }, - { - "from": 769, - "to": 769, - "id": "0x35" - }, - { - "from": 770, - "to": 770, - "id": "0x35" - }, - { - "from": 771, - "to": 772, - "id": "0x36" - } - ], - "play.toServer.update_jigsaw_block": [ - { - "from": 735, - "to": 736, - "id": "0x28" - }, - { - "from": 751, - "to": 754, - "id": "0x29" - }, - { - "from": 755, - "to": 758, - "id": "0x29" - }, - { - "from": 759, - "to": 759, - "id": "0x2B" - }, - { - "from": 760, - "to": 760, - "id": "0x2C" - }, - { - "from": 761, - "to": 761, - "id": "0x2C" - }, - { - "from": 762, - "to": 763, - "id": "0x2C" - }, - { - "from": 764, - "to": 764, - "id": "0x2F" - }, - { - "from": 765, - "to": 765, - "id": "0x30" - }, - { - "from": 766, - "to": 767, - "id": "0x33" - }, - { - "from": 768, - "to": 768, - "id": "0x35" - }, - { - "from": 769, - "to": 769, - "id": "0x37" - }, - { - "from": 770, - "to": 770, - "id": "0x37" - }, - { - "from": 771, - "to": 772, - "id": "0x38" - } - ], - "play.toServer.update_sign": [ - { - "from": 735, - "to": 736, - "id": "0x2A" - }, - { - "from": 751, - "to": 754, - "id": "0x2B" - }, - { - "from": 755, - "to": 758, - "id": "0x2B" - }, - { - "from": 759, - "to": 759, - "id": "0x2D" - }, - { - "from": 760, - "to": 760, - "id": "0x2E" - }, - { - "from": 761, - "to": 761, - "id": "0x2E" - }, - { - "from": 762, - "to": 763, - "id": "0x2E" - }, - { - "from": 764, - "to": 764, - "id": "0x31" - }, - { - "from": 765, - "to": 765, - "id": "0x32" - }, - { - "from": 766, - "to": 767, - "id": "0x35" - }, - { - "from": 768, - "to": 768, - "id": "0x37" - }, - { - "from": 769, - "to": 769, - "id": "0x39" - }, - { - "from": 770, - "to": 770, - "id": "0x3A" - }, - { - "from": 771, - "to": 772, - "id": "0x3B" - } - ], - "play.toServer.update_structure_block": [ - { - "from": 735, - "to": 736, - "id": "0x29" - }, - { - "from": 751, - "to": 754, - "id": "0x2A" - }, - { - "from": 755, - "to": 758, - "id": "0x2A" - }, - { - "from": 759, - "to": 759, - "id": "0x2C" - }, - { - "from": 760, - "to": 760, - "id": "0x2D" - }, - { - "from": 761, - "to": 761, - "id": "0x2D" - }, - { - "from": 762, - "to": 763, - "id": "0x2D" - }, - { - "from": 764, - "to": 764, - "id": "0x30" - }, - { - "from": 765, - "to": 765, - "id": "0x31" - }, - { - "from": 766, - "to": 767, - "id": "0x34" - }, - { - "from": 768, - "to": 768, - "id": "0x36" - }, - { - "from": 769, - "to": 769, - "id": "0x38" - }, - { - "from": 770, - "to": 770, - "id": "0x38" - }, - { - "from": 771, - "to": 772, - "id": "0x39" - } - ], - "play.toServer.use_entity": [ - { - "from": 735, - "to": 736, - "id": "0x0E" - }, - { - "from": 751, - "to": 754, - "id": "0x0E" - }, - { - "from": 755, - "to": 758, - "id": "0x0D" - }, - { - "from": 759, - "to": 759, - "id": "0x0F" - }, - { - "from": 760, - "to": 760, - "id": "0x10" - }, - { - "from": 761, - "to": 761, - "id": "0x0F" - }, - { - "from": 762, - "to": 763, - "id": "0x10" - }, - { - "from": 764, - "to": 764, - "id": "0x12" - }, - { - "from": 765, - "to": 765, - "id": "0x13" - }, - { - "from": 766, - "to": 767, - "id": "0x16" - }, - { - "from": 768, - "to": 768, - "id": "0x18" - }, - { - "from": 769, - "to": 769, - "id": "0x18" - }, - { - "from": 770, - "to": 770, - "id": "0x18" - }, - { - "from": 771, - "to": 772, - "id": "0x19" - } - ], - "play.toServer.use_item": [ - { - "from": 735, - "to": 736, - "id": "0x2E" - }, - { - "from": 751, - "to": 754, - "id": "0x2F" - }, - { - "from": 755, - "to": 758, - "id": "0x2F" - }, - { - "from": 759, - "to": 759, - "id": "0x31" - }, - { - "from": 760, - "to": 760, - "id": "0x32" - }, - { - "from": 761, - "to": 761, - "id": "0x32" - }, - { - "from": 762, - "to": 763, - "id": "0x32" - }, - { - "from": 764, - "to": 764, - "id": "0x35" - }, - { - "from": 765, - "to": 765, - "id": "0x36" - }, - { - "from": 766, - "to": 767, - "id": "0x39" - }, - { - "from": 768, - "to": 768, - "id": "0x3B" - }, - { - "from": 769, - "to": 769, - "id": "0x3D" - }, - { - "from": 770, - "to": 770, - "id": "0x3F" - }, - { - "from": 771, - "to": 772, - "id": "0x40" - } - ], - "play.toServer.vehicle_move": [ - { - "from": 735, - "to": 736, - "id": "0x16" - }, - { - "from": 751, - "to": 754, - "id": "0x16" - }, - { - "from": 755, - "to": 758, - "id": "0x15" - }, - { - "from": 759, - "to": 759, - "id": "0x17" - }, - { - "from": 760, - "to": 760, - "id": "0x18" - }, - { - "from": 761, - "to": 761, - "id": "0x17" - }, - { - "from": 762, - "to": 763, - "id": "0x18" - }, - { - "from": 764, - "to": 764, - "id": "0x1A" - }, - { - "from": 765, - "to": 765, - "id": "0x1B" - }, - { - "from": 766, - "to": 767, - "id": "0x1E" - }, - { - "from": 768, - "to": 768, - "id": "0x20" - }, - { - "from": 769, - "to": 769, - "id": "0x20" - }, - { - "from": 770, - "to": 770, - "id": "0x20" - }, - { - "from": 771, - "to": 772, - "id": "0x21" - } - ], - "play.toServer.window_click": [ - { - "from": 735, - "to": 736, - "id": "0x09" - }, - { - "from": 751, - "to": 754, - "id": "0x09" - }, - { - "from": 755, - "to": 758, - "id": "0x08" - }, - { - "from": 759, - "to": 759, - "id": "0x0A" - }, - { - "from": 760, - "to": 760, - "id": "0x0B" - }, - { - "from": 761, - "to": 761, - "id": "0x0A" - }, - { - "from": 762, - "to": 763, - "id": "0x0B" - }, - { - "from": 764, - "to": 764, - "id": "0x0D" - }, - { - "from": 765, - "to": 765, - "id": "0x0D" - }, - { - "from": 766, - "to": 767, - "id": "0x0E" - }, - { - "from": 768, - "to": 768, - "id": "0x10" - }, - { - "from": 769, - "to": 769, - "id": "0x10" - }, - { - "from": 770, - "to": 770, - "id": "0x10" - }, - { - "from": 771, - "to": 772, - "id": "0x11" - } - ] - } +{ + "comment": "Generated from McProtoFacts /api/packets/{ns}/{dir} (protodef \"packet\" mappers of minecraft-data). Regenerate: scripts\\generate-ids-manifest.ps1 with serve-facts running.", + "packets": { + "handshaking.toServer.legacy_server_list_ping": [ + { + "from": 735, + "to": 776, + "id": "0xFE" + } + ], + "handshaking.toServer.set_protocol": [ + { + "from": 735, + "to": 776, + "id": "0x00" + } + ], + "status.toClient.ping": [ + { + "from": 735, + "to": 776, + "id": "0x01" + } + ], + "status.toClient.server_info": [ + { + "from": 735, + "to": 776, + "id": "0x00" + } + ], + "status.toServer.ping": [ + { + "from": 735, + "to": 776, + "id": "0x01" + } + ], + "status.toServer.ping_start": [ + { + "from": 735, + "to": 776, + "id": "0x00" + } + ], + "login.toClient.compress": [ + { + "from": 735, + "to": 765, + "id": "0x03" + }, + { + "from": 766, + "to": 776, + "id": "0x03" + } + ], + "login.toClient.cookie_request": [ + { + "from": 766, + "to": 776, + "id": "0x05" + } + ], + "login.toClient.disconnect": [ + { + "from": 735, + "to": 765, + "id": "0x00" + }, + { + "from": 766, + "to": 776, + "id": "0x00" + } + ], + "login.toClient.encryption_begin": [ + { + "from": 735, + "to": 765, + "id": "0x01" + }, + { + "from": 766, + "to": 776, + "id": "0x01" + } + ], + "login.toClient.login_plugin_request": [ + { + "from": 735, + "to": 765, + "id": "0x04" + }, + { + "from": 766, + "to": 776, + "id": "0x04" + } + ], + "login.toClient.success": [ + { + "from": 735, + "to": 765, + "id": "0x02" + }, + { + "from": 766, + "to": 776, + "id": "0x02" + } + ], + "login.toServer.cookie_response": [ + { + "from": 766, + "to": 776, + "id": "0x04" + } + ], + "login.toServer.encryption_begin": [ + { + "from": 735, + "to": 763, + "id": "0x01" + }, + { + "from": 764, + "to": 765, + "id": "0x01" + }, + { + "from": 766, + "to": 776, + "id": "0x01" + } + ], + "login.toServer.login_acknowledged": [ + { + "from": 764, + "to": 765, + "id": "0x03" + }, + { + "from": 766, + "to": 776, + "id": "0x03" + } + ], + "login.toServer.login_plugin_response": [ + { + "from": 735, + "to": 763, + "id": "0x02" + }, + { + "from": 764, + "to": 765, + "id": "0x02" + }, + { + "from": 766, + "to": 776, + "id": "0x02" + } + ], + "login.toServer.login_start": [ + { + "from": 735, + "to": 763, + "id": "0x00" + }, + { + "from": 764, + "to": 765, + "id": "0x00" + }, + { + "from": 766, + "to": 776, + "id": "0x00" + } + ], + "configuration.toClient.add_resource_pack": [ + { + "from": 765, + "to": 765, + "id": "0x07" + }, + { + "from": 766, + "to": 766, + "id": "0x09" + }, + { + "from": 767, + "to": 770, + "id": "0x09" + }, + { + "from": 771, + "to": 772, + "id": "0x09" + }, + { + "from": 773, + "to": 776, + "id": "0x09" + } + ], + "configuration.toClient.clear_dialog": [ + { + "from": 771, + "to": 772, + "id": "0x11" + }, + { + "from": 773, + "to": 776, + "id": "0x11" + } + ], + "configuration.toClient.code_of_conduct": [ + { + "from": 773, + "to": 776, + "id": "0x13" + } + ], + "configuration.toClient.cookie_request": [ + { + "from": 766, + "to": 766, + "id": "0x00" + }, + { + "from": 767, + "to": 770, + "id": "0x00" + }, + { + "from": 771, + "to": 772, + "id": "0x00" + }, + { + "from": 773, + "to": 776, + "id": "0x00" + } + ], + "configuration.toClient.custom_payload": [ + { + "from": 764, + "to": 764, + "id": "0x00" + }, + { + "from": 765, + "to": 765, + "id": "0x00" + }, + { + "from": 766, + "to": 766, + "id": "0x01" + }, + { + "from": 767, + "to": 770, + "id": "0x01" + }, + { + "from": 771, + "to": 772, + "id": "0x01" + }, + { + "from": 773, + "to": 776, + "id": "0x01" + } + ], + "configuration.toClient.custom_report_details": [ + { + "from": 767, + "to": 770, + "id": "0x0F" + }, + { + "from": 771, + "to": 772, + "id": "0x0F" + }, + { + "from": 773, + "to": 776, + "id": "0x0F" + } + ], + "configuration.toClient.disconnect": [ + { + "from": 764, + "to": 764, + "id": "0x01" + }, + { + "from": 765, + "to": 765, + "id": "0x01" + }, + { + "from": 766, + "to": 766, + "id": "0x02" + }, + { + "from": 767, + "to": 770, + "id": "0x02" + }, + { + "from": 771, + "to": 772, + "id": "0x02" + }, + { + "from": 773, + "to": 776, + "id": "0x02" + } + ], + "configuration.toClient.feature_flags": [ + { + "from": 764, + "to": 764, + "id": "0x07" + }, + { + "from": 765, + "to": 765, + "id": "0x08" + }, + { + "from": 766, + "to": 766, + "id": "0x0C" + }, + { + "from": 767, + "to": 770, + "id": "0x0C" + }, + { + "from": 771, + "to": 772, + "id": "0x0C" + }, + { + "from": 773, + "to": 776, + "id": "0x0C" + } + ], + "configuration.toClient.finish_configuration": [ + { + "from": 764, + "to": 764, + "id": "0x02" + }, + { + "from": 765, + "to": 765, + "id": "0x02" + }, + { + "from": 766, + "to": 766, + "id": "0x03" + }, + { + "from": 767, + "to": 770, + "id": "0x03" + }, + { + "from": 771, + "to": 772, + "id": "0x03" + }, + { + "from": 773, + "to": 776, + "id": "0x03" + } + ], + "configuration.toClient.keep_alive": [ + { + "from": 764, + "to": 764, + "id": "0x03" + }, + { + "from": 765, + "to": 765, + "id": "0x03" + }, + { + "from": 766, + "to": 766, + "id": "0x04" + }, + { + "from": 767, + "to": 770, + "id": "0x04" + }, + { + "from": 771, + "to": 772, + "id": "0x04" + }, + { + "from": 773, + "to": 776, + "id": "0x04" + } + ], + "configuration.toClient.ping": [ + { + "from": 764, + "to": 764, + "id": "0x04" + }, + { + "from": 765, + "to": 765, + "id": "0x04" + }, + { + "from": 766, + "to": 766, + "id": "0x05" + }, + { + "from": 767, + "to": 770, + "id": "0x05" + }, + { + "from": 771, + "to": 772, + "id": "0x05" + }, + { + "from": 773, + "to": 776, + "id": "0x05" + } + ], + "configuration.toClient.registry_data": [ + { + "from": 764, + "to": 764, + "id": "0x05" + }, + { + "from": 765, + "to": 765, + "id": "0x05" + }, + { + "from": 766, + "to": 766, + "id": "0x07" + }, + { + "from": 767, + "to": 770, + "id": "0x07" + }, + { + "from": 771, + "to": 772, + "id": "0x07" + }, + { + "from": 773, + "to": 776, + "id": "0x07" + } + ], + "configuration.toClient.remove_resource_pack": [ + { + "from": 765, + "to": 765, + "id": "0x06" + }, + { + "from": 766, + "to": 766, + "id": "0x08" + }, + { + "from": 767, + "to": 770, + "id": "0x08" + }, + { + "from": 771, + "to": 772, + "id": "0x08" + }, + { + "from": 773, + "to": 776, + "id": "0x08" + } + ], + "configuration.toClient.reset_chat": [ + { + "from": 766, + "to": 766, + "id": "0x06" + }, + { + "from": 767, + "to": 770, + "id": "0x06" + }, + { + "from": 771, + "to": 772, + "id": "0x06" + }, + { + "from": 773, + "to": 776, + "id": "0x06" + } + ], + "configuration.toClient.resource_pack_send": [ + { + "from": 764, + "to": 764, + "id": "0x06" + } + ], + "configuration.toClient.select_known_packs": [ + { + "from": 766, + "to": 766, + "id": "0x0E" + }, + { + "from": 767, + "to": 770, + "id": "0x0E" + }, + { + "from": 771, + "to": 772, + "id": "0x0E" + }, + { + "from": 773, + "to": 776, + "id": "0x0E" + } + ], + "configuration.toClient.server_links": [ + { + "from": 767, + "to": 770, + "id": "0x10" + }, + { + "from": 771, + "to": 772, + "id": "0x10" + }, + { + "from": 773, + "to": 776, + "id": "0x10" + } + ], + "configuration.toClient.show_dialog": [ + { + "from": 771, + "to": 772, + "id": "0x12" + }, + { + "from": 773, + "to": 776, + "id": "0x12" + } + ], + "configuration.toClient.store_cookie": [ + { + "from": 766, + "to": 766, + "id": "0x0A" + }, + { + "from": 767, + "to": 770, + "id": "0x0A" + }, + { + "from": 771, + "to": 772, + "id": "0x0A" + }, + { + "from": 773, + "to": 776, + "id": "0x0A" + } + ], + "configuration.toClient.tags": [ + { + "from": 764, + "to": 764, + "id": "0x08" + }, + { + "from": 765, + "to": 765, + "id": "0x09" + }, + { + "from": 766, + "to": 766, + "id": "0x0D" + }, + { + "from": 767, + "to": 770, + "id": "0x0D" + }, + { + "from": 771, + "to": 772, + "id": "0x0D" + }, + { + "from": 773, + "to": 776, + "id": "0x0D" + } + ], + "configuration.toClient.transfer": [ + { + "from": 766, + "to": 766, + "id": "0x0B" + }, + { + "from": 767, + "to": 770, + "id": "0x0B" + }, + { + "from": 771, + "to": 772, + "id": "0x0B" + }, + { + "from": 773, + "to": 776, + "id": "0x0B" + } + ], + "configuration.toServer.accept_code_of_conduct": [ + { + "from": 773, + "to": 776, + "id": "0x09" + } + ], + "configuration.toServer.cookie_response": [ + { + "from": 766, + "to": 766, + "id": "0x01" + }, + { + "from": 767, + "to": 770, + "id": "0x01" + }, + { + "from": 771, + "to": 772, + "id": "0x01" + }, + { + "from": 773, + "to": 776, + "id": "0x01" + } + ], + "configuration.toServer.custom_click_action": [ + { + "from": 771, + "to": 772, + "id": "0x08" + }, + { + "from": 773, + "to": 776, + "id": "0x08" + } + ], + "configuration.toServer.custom_payload": [ + { + "from": 764, + "to": 765, + "id": "0x01" + }, + { + "from": 766, + "to": 766, + "id": "0x02" + }, + { + "from": 767, + "to": 770, + "id": "0x02" + }, + { + "from": 771, + "to": 772, + "id": "0x02" + }, + { + "from": 773, + "to": 776, + "id": "0x02" + } + ], + "configuration.toServer.custom_report_details": [ + { + "from": 767, + "to": 770, + "id": "0x08" + } + ], + "configuration.toServer.finish_configuration": [ + { + "from": 764, + "to": 765, + "id": "0x02" + }, + { + "from": 766, + "to": 766, + "id": "0x03" + }, + { + "from": 767, + "to": 770, + "id": "0x03" + }, + { + "from": 771, + "to": 772, + "id": "0x03" + }, + { + "from": 773, + "to": 776, + "id": "0x03" + } + ], + "configuration.toServer.keep_alive": [ + { + "from": 764, + "to": 765, + "id": "0x03" + }, + { + "from": 766, + "to": 766, + "id": "0x04" + }, + { + "from": 767, + "to": 770, + "id": "0x04" + }, + { + "from": 771, + "to": 772, + "id": "0x04" + }, + { + "from": 773, + "to": 776, + "id": "0x04" + } + ], + "configuration.toServer.pong": [ + { + "from": 764, + "to": 765, + "id": "0x04" + }, + { + "from": 766, + "to": 766, + "id": "0x05" + }, + { + "from": 767, + "to": 770, + "id": "0x05" + }, + { + "from": 771, + "to": 772, + "id": "0x05" + }, + { + "from": 773, + "to": 776, + "id": "0x05" + } + ], + "configuration.toServer.resource_pack_receive": [ + { + "from": 764, + "to": 765, + "id": "0x05" + }, + { + "from": 766, + "to": 766, + "id": "0x06" + }, + { + "from": 767, + "to": 770, + "id": "0x06" + }, + { + "from": 771, + "to": 772, + "id": "0x06" + }, + { + "from": 773, + "to": 776, + "id": "0x06" + } + ], + "configuration.toServer.select_known_packs": [ + { + "from": 766, + "to": 766, + "id": "0x07" + }, + { + "from": 767, + "to": 770, + "id": "0x07" + }, + { + "from": 771, + "to": 772, + "id": "0x07" + }, + { + "from": 773, + "to": 776, + "id": "0x07" + } + ], + "configuration.toServer.server_links": [ + { + "from": 767, + "to": 770, + "id": "0x09" + } + ], + "configuration.toServer.settings": [ + { + "from": 764, + "to": 765, + "id": "0x00" + }, + { + "from": 766, + "to": 766, + "id": "0x00" + }, + { + "from": 767, + "to": 770, + "id": "0x00" + }, + { + "from": 771, + "to": 772, + "id": "0x00" + }, + { + "from": 773, + "to": 776, + "id": "0x00" + } + ], + "play.toClient.abilities": [ + { + "from": 735, + "to": 736, + "id": "0x31" + }, + { + "from": 751, + "to": 754, + "id": "0x30" + }, + { + "from": 755, + "to": 755, + "id": "0x32" + }, + { + "from": 756, + "to": 756, + "id": "0x32" + }, + { + "from": 757, + "to": 758, + "id": "0x32" + }, + { + "from": 759, + "to": 759, + "id": "0x2F" + }, + { + "from": 760, + "to": 760, + "id": "0x31" + }, + { + "from": 761, + "to": 761, + "id": "0x30" + }, + { + "from": 762, + "to": 763, + "id": "0x34" + }, + { + "from": 764, + "to": 764, + "id": "0x36" + }, + { + "from": 765, + "to": 765, + "id": "0x36" + }, + { + "from": 766, + "to": 766, + "id": "0x38" + }, + { + "from": 767, + "to": 767, + "id": "0x38" + }, + { + "from": 768, + "to": 769, + "id": "0x3A" + }, + { + "from": 770, + "to": 770, + "id": "0x39" + }, + { + "from": 771, + "to": 772, + "id": "0x39" + }, + { + "from": 773, + "to": 774, + "id": "0x3E" + }, + { + "from": 775, + "to": 776, + "id": "0x40" + } + ], + "play.toClient.acknowledge_player_digging": [ + { + "from": 735, + "to": 736, + "id": "0x07" + }, + { + "from": 751, + "to": 754, + "id": "0x07" + }, + { + "from": 755, + "to": 755, + "id": "0x08" + }, + { + "from": 756, + "to": 756, + "id": "0x08" + }, + { + "from": 757, + "to": 758, + "id": "0x08" + }, + { + "from": 759, + "to": 759, + "id": "0x05" + }, + { + "from": 760, + "to": 760, + "id": "0x05" + }, + { + "from": 761, + "to": 761, + "id": "0x05" + }, + { + "from": 762, + "to": 763, + "id": "0x06" + }, + { + "from": 764, + "to": 764, + "id": "0x05" + }, + { + "from": 765, + "to": 765, + "id": "0x05" + }, + { + "from": 766, + "to": 766, + "id": "0x05" + }, + { + "from": 767, + "to": 767, + "id": "0x05" + }, + { + "from": 768, + "to": 769, + "id": "0x05" + }, + { + "from": 770, + "to": 770, + "id": "0x04" + }, + { + "from": 771, + "to": 772, + "id": "0x04" + }, + { + "from": 773, + "to": 774, + "id": "0x04" + }, + { + "from": 775, + "to": 776, + "id": "0x04" + } + ], + "play.toClient.action_bar": [ + { + "from": 755, + "to": 755, + "id": "0x41" + }, + { + "from": 756, + "to": 756, + "id": "0x41" + }, + { + "from": 757, + "to": 758, + "id": "0x41" + }, + { + "from": 759, + "to": 759, + "id": "0x40" + }, + { + "from": 760, + "to": 760, + "id": "0x43" + }, + { + "from": 761, + "to": 761, + "id": "0x42" + }, + { + "from": 762, + "to": 763, + "id": "0x46" + }, + { + "from": 764, + "to": 764, + "id": "0x48" + }, + { + "from": 765, + "to": 765, + "id": "0x4A" + }, + { + "from": 766, + "to": 766, + "id": "0x4C" + }, + { + "from": 767, + "to": 767, + "id": "0x4C" + }, + { + "from": 768, + "to": 769, + "id": "0x51" + }, + { + "from": 770, + "to": 770, + "id": "0x50" + }, + { + "from": 771, + "to": 772, + "id": "0x50" + }, + { + "from": 773, + "to": 774, + "id": "0x55" + }, + { + "from": 775, + "to": 776, + "id": "0x57" + } + ], + "play.toClient.add_resource_pack": [ + { + "from": 765, + "to": 765, + "id": "0x44" + }, + { + "from": 766, + "to": 766, + "id": "0x46" + }, + { + "from": 767, + "to": 767, + "id": "0x46" + }, + { + "from": 768, + "to": 769, + "id": "0x4B" + }, + { + "from": 770, + "to": 770, + "id": "0x4A" + }, + { + "from": 771, + "to": 772, + "id": "0x4A" + }, + { + "from": 773, + "to": 774, + "id": "0x4F" + }, + { + "from": 775, + "to": 776, + "id": "0x51" + } + ], + "play.toClient.advancements": [ + { + "from": 735, + "to": 736, + "id": "0x57" + }, + { + "from": 751, + "to": 754, + "id": "0x57" + }, + { + "from": 755, + "to": 755, + "id": "0x62" + }, + { + "from": 756, + "to": 756, + "id": "0x62" + }, + { + "from": 757, + "to": 758, + "id": "0x63" + }, + { + "from": 759, + "to": 759, + "id": "0x64" + }, + { + "from": 760, + "to": 760, + "id": "0x67" + }, + { + "from": 761, + "to": 761, + "id": "0x65" + }, + { + "from": 762, + "to": 763, + "id": "0x69" + }, + { + "from": 764, + "to": 764, + "id": "0x6C" + }, + { + "from": 765, + "to": 765, + "id": "0x70" + }, + { + "from": 766, + "to": 766, + "id": "0x74" + }, + { + "from": 767, + "to": 767, + "id": "0x74" + }, + { + "from": 768, + "to": 769, + "id": "0x7B" + }, + { + "from": 770, + "to": 770, + "id": "0x7B" + }, + { + "from": 771, + "to": 772, + "id": "0x7B" + }, + { + "from": 773, + "to": 774, + "id": "0x80" + }, + { + "from": 775, + "to": 776, + "id": "0x82" + } + ], + "play.toClient.animation": [ + { + "from": 735, + "to": 736, + "id": "0x05" + }, + { + "from": 751, + "to": 754, + "id": "0x05" + }, + { + "from": 755, + "to": 755, + "id": "0x06" + }, + { + "from": 756, + "to": 756, + "id": "0x06" + }, + { + "from": 757, + "to": 758, + "id": "0x06" + }, + { + "from": 759, + "to": 759, + "id": "0x03" + }, + { + "from": 760, + "to": 760, + "id": "0x03" + }, + { + "from": 761, + "to": 761, + "id": "0x03" + }, + { + "from": 762, + "to": 763, + "id": "0x04" + }, + { + "from": 764, + "to": 764, + "id": "0x03" + }, + { + "from": 765, + "to": 765, + "id": "0x03" + }, + { + "from": 766, + "to": 766, + "id": "0x03" + }, + { + "from": 767, + "to": 767, + "id": "0x03" + }, + { + "from": 768, + "to": 769, + "id": "0x03" + }, + { + "from": 770, + "to": 770, + "id": "0x02" + }, + { + "from": 771, + "to": 772, + "id": "0x02" + }, + { + "from": 773, + "to": 774, + "id": "0x02" + }, + { + "from": 775, + "to": 776, + "id": "0x02" + } + ], + "play.toClient.attach_entity": [ + { + "from": 735, + "to": 736, + "id": "0x45" + }, + { + "from": 751, + "to": 754, + "id": "0x45" + }, + { + "from": 755, + "to": 755, + "id": "0x4E" + }, + { + "from": 756, + "to": 756, + "id": "0x4E" + }, + { + "from": 757, + "to": 758, + "id": "0x4E" + }, + { + "from": 759, + "to": 759, + "id": "0x4E" + }, + { + "from": 760, + "to": 760, + "id": "0x51" + }, + { + "from": 761, + "to": 761, + "id": "0x4F" + }, + { + "from": 762, + "to": 763, + "id": "0x53" + }, + { + "from": 764, + "to": 764, + "id": "0x55" + }, + { + "from": 765, + "to": 765, + "id": "0x57" + }, + { + "from": 766, + "to": 766, + "id": "0x59" + }, + { + "from": 767, + "to": 767, + "id": "0x59" + }, + { + "from": 768, + "to": 769, + "id": "0x5E" + }, + { + "from": 770, + "to": 770, + "id": "0x5D" + }, + { + "from": 771, + "to": 772, + "id": "0x5D" + }, + { + "from": 773, + "to": 774, + "id": "0x62" + }, + { + "from": 775, + "to": 776, + "id": "0x64" + } + ], + "play.toClient.block_action": [ + { + "from": 735, + "to": 736, + "id": "0x0A" + }, + { + "from": 751, + "to": 754, + "id": "0x0A" + }, + { + "from": 755, + "to": 755, + "id": "0x0B" + }, + { + "from": 756, + "to": 756, + "id": "0x0B" + }, + { + "from": 757, + "to": 758, + "id": "0x0B" + }, + { + "from": 759, + "to": 759, + "id": "0x08" + }, + { + "from": 760, + "to": 760, + "id": "0x08" + }, + { + "from": 761, + "to": 761, + "id": "0x08" + }, + { + "from": 762, + "to": 763, + "id": "0x09" + }, + { + "from": 764, + "to": 764, + "id": "0x08" + }, + { + "from": 765, + "to": 765, + "id": "0x08" + }, + { + "from": 766, + "to": 766, + "id": "0x08" + }, + { + "from": 767, + "to": 767, + "id": "0x08" + }, + { + "from": 768, + "to": 769, + "id": "0x08" + }, + { + "from": 770, + "to": 770, + "id": "0x07" + }, + { + "from": 771, + "to": 772, + "id": "0x07" + }, + { + "from": 773, + "to": 774, + "id": "0x07" + }, + { + "from": 775, + "to": 776, + "id": "0x07" + } + ], + "play.toClient.block_break_animation": [ + { + "from": 735, + "to": 736, + "id": "0x08" + }, + { + "from": 751, + "to": 754, + "id": "0x08" + }, + { + "from": 755, + "to": 755, + "id": "0x09" + }, + { + "from": 756, + "to": 756, + "id": "0x09" + }, + { + "from": 757, + "to": 758, + "id": "0x09" + }, + { + "from": 759, + "to": 759, + "id": "0x06" + }, + { + "from": 760, + "to": 760, + "id": "0x06" + }, + { + "from": 761, + "to": 761, + "id": "0x06" + }, + { + "from": 762, + "to": 763, + "id": "0x07" + }, + { + "from": 764, + "to": 764, + "id": "0x06" + }, + { + "from": 765, + "to": 765, + "id": "0x06" + }, + { + "from": 766, + "to": 766, + "id": "0x06" + }, + { + "from": 767, + "to": 767, + "id": "0x06" + }, + { + "from": 768, + "to": 769, + "id": "0x06" + }, + { + "from": 770, + "to": 770, + "id": "0x05" + }, + { + "from": 771, + "to": 772, + "id": "0x05" + }, + { + "from": 773, + "to": 774, + "id": "0x05" + }, + { + "from": 775, + "to": 776, + "id": "0x05" + } + ], + "play.toClient.block_change": [ + { + "from": 735, + "to": 736, + "id": "0x0B" + }, + { + "from": 751, + "to": 754, + "id": "0x0B" + }, + { + "from": 755, + "to": 755, + "id": "0x0C" + }, + { + "from": 756, + "to": 756, + "id": "0x0C" + }, + { + "from": 757, + "to": 758, + "id": "0x0C" + }, + { + "from": 759, + "to": 759, + "id": "0x09" + }, + { + "from": 760, + "to": 760, + "id": "0x09" + }, + { + "from": 761, + "to": 761, + "id": "0x09" + }, + { + "from": 762, + "to": 763, + "id": "0x0A" + }, + { + "from": 764, + "to": 764, + "id": "0x09" + }, + { + "from": 765, + "to": 765, + "id": "0x09" + }, + { + "from": 766, + "to": 766, + "id": "0x09" + }, + { + "from": 767, + "to": 767, + "id": "0x09" + }, + { + "from": 768, + "to": 769, + "id": "0x09" + }, + { + "from": 770, + "to": 770, + "id": "0x08" + }, + { + "from": 771, + "to": 772, + "id": "0x08" + }, + { + "from": 773, + "to": 774, + "id": "0x08" + }, + { + "from": 775, + "to": 776, + "id": "0x08" + } + ], + "play.toClient.boss_bar": [ + { + "from": 735, + "to": 736, + "id": "0x0C" + }, + { + "from": 751, + "to": 754, + "id": "0x0C" + }, + { + "from": 755, + "to": 755, + "id": "0x0D" + }, + { + "from": 756, + "to": 756, + "id": "0x0D" + }, + { + "from": 757, + "to": 758, + "id": "0x0D" + }, + { + "from": 759, + "to": 759, + "id": "0x0A" + }, + { + "from": 760, + "to": 760, + "id": "0x0A" + }, + { + "from": 761, + "to": 761, + "id": "0x0A" + }, + { + "from": 762, + "to": 763, + "id": "0x0B" + }, + { + "from": 764, + "to": 764, + "id": "0x0A" + }, + { + "from": 765, + "to": 765, + "id": "0x0A" + }, + { + "from": 766, + "to": 766, + "id": "0x0A" + }, + { + "from": 767, + "to": 767, + "id": "0x0A" + }, + { + "from": 768, + "to": 769, + "id": "0x0A" + }, + { + "from": 770, + "to": 770, + "id": "0x09" + }, + { + "from": 771, + "to": 772, + "id": "0x09" + }, + { + "from": 773, + "to": 774, + "id": "0x09" + }, + { + "from": 775, + "to": 776, + "id": "0x09" + } + ], + "play.toClient.bundle_delimiter": [ + { + "from": 762, + "to": 763, + "id": "0x00" + }, + { + "from": 764, + "to": 764, + "id": "0x00" + }, + { + "from": 765, + "to": 765, + "id": "0x00" + }, + { + "from": 766, + "to": 766, + "id": "0x00" + }, + { + "from": 767, + "to": 767, + "id": "0x00" + }, + { + "from": 768, + "to": 769, + "id": "0x00" + }, + { + "from": 770, + "to": 770, + "id": "0x00" + }, + { + "from": 771, + "to": 772, + "id": "0x00" + }, + { + "from": 773, + "to": 774, + "id": "0x00" + }, + { + "from": 775, + "to": 776, + "id": "0x00" + } + ], + "play.toClient.camera": [ + { + "from": 735, + "to": 736, + "id": "0x3E" + }, + { + "from": 751, + "to": 754, + "id": "0x3E" + }, + { + "from": 755, + "to": 755, + "id": "0x47" + }, + { + "from": 756, + "to": 756, + "id": "0x47" + }, + { + "from": 757, + "to": 758, + "id": "0x47" + }, + { + "from": 759, + "to": 759, + "id": "0x46" + }, + { + "from": 760, + "to": 760, + "id": "0x49" + }, + { + "from": 761, + "to": 761, + "id": "0x48" + }, + { + "from": 762, + "to": 763, + "id": "0x4C" + }, + { + "from": 764, + "to": 764, + "id": "0x4E" + }, + { + "from": 765, + "to": 765, + "id": "0x50" + }, + { + "from": 766, + "to": 766, + "id": "0x52" + }, + { + "from": 767, + "to": 767, + "id": "0x52" + }, + { + "from": 768, + "to": 769, + "id": "0x57" + }, + { + "from": 770, + "to": 770, + "id": "0x56" + }, + { + "from": 771, + "to": 772, + "id": "0x56" + }, + { + "from": 773, + "to": 774, + "id": "0x5B" + }, + { + "from": 775, + "to": 776, + "id": "0x5D" + } + ], + "play.toClient.chat": [ + { + "from": 735, + "to": 736, + "id": "0x0E" + }, + { + "from": 751, + "to": 754, + "id": "0x0E" + }, + { + "from": 755, + "to": 755, + "id": "0x0F" + }, + { + "from": 756, + "to": 756, + "id": "0x0F" + }, + { + "from": 757, + "to": 758, + "id": "0x0F" + } + ], + "play.toClient.chat_preview": [ + { + "from": 759, + "to": 759, + "id": "0x0C" + }, + { + "from": 760, + "to": 760, + "id": "0x0C" + } + ], + "play.toClient.chat_suggestions": [ + { + "from": 760, + "to": 760, + "id": "0x15" + }, + { + "from": 761, + "to": 761, + "id": "0x14" + }, + { + "from": 762, + "to": 763, + "id": "0x16" + }, + { + "from": 764, + "to": 764, + "id": "0x17" + }, + { + "from": 765, + "to": 765, + "id": "0x17" + }, + { + "from": 766, + "to": 766, + "id": "0x18" + }, + { + "from": 767, + "to": 767, + "id": "0x18" + }, + { + "from": 768, + "to": 769, + "id": "0x18" + }, + { + "from": 770, + "to": 770, + "id": "0x17" + }, + { + "from": 771, + "to": 772, + "id": "0x17" + }, + { + "from": 773, + "to": 774, + "id": "0x17" + }, + { + "from": 775, + "to": 776, + "id": "0x17" + } + ], + "play.toClient.chunk_batch_finished": [ + { + "from": 764, + "to": 764, + "id": "0x0C" + }, + { + "from": 765, + "to": 765, + "id": "0x0C" + }, + { + "from": 766, + "to": 766, + "id": "0x0C" + }, + { + "from": 767, + "to": 767, + "id": "0x0C" + }, + { + "from": 768, + "to": 769, + "id": "0x0C" + }, + { + "from": 770, + "to": 770, + "id": "0x0B" + }, + { + "from": 771, + "to": 772, + "id": "0x0B" + }, + { + "from": 773, + "to": 774, + "id": "0x0B" + }, + { + "from": 775, + "to": 776, + "id": "0x0B" + } + ], + "play.toClient.chunk_batch_start": [ + { + "from": 764, + "to": 764, + "id": "0x0D" + }, + { + "from": 765, + "to": 765, + "id": "0x0D" + }, + { + "from": 766, + "to": 766, + "id": "0x0D" + }, + { + "from": 767, + "to": 767, + "id": "0x0D" + }, + { + "from": 768, + "to": 769, + "id": "0x0D" + }, + { + "from": 770, + "to": 770, + "id": "0x0C" + }, + { + "from": 771, + "to": 772, + "id": "0x0C" + }, + { + "from": 773, + "to": 774, + "id": "0x0C" + }, + { + "from": 775, + "to": 776, + "id": "0x0C" + } + ], + "play.toClient.chunk_biomes": [ + { + "from": 762, + "to": 763, + "id": "0x0D" + }, + { + "from": 764, + "to": 764, + "id": "0x0E" + }, + { + "from": 765, + "to": 765, + "id": "0x0E" + }, + { + "from": 766, + "to": 766, + "id": "0x0E" + }, + { + "from": 767, + "to": 767, + "id": "0x0E" + }, + { + "from": 768, + "to": 769, + "id": "0x0E" + }, + { + "from": 770, + "to": 770, + "id": "0x0D" + }, + { + "from": 771, + "to": 772, + "id": "0x0D" + }, + { + "from": 773, + "to": 774, + "id": "0x0D" + }, + { + "from": 775, + "to": 776, + "id": "0x0D" + } + ], + "play.toClient.clear_dialog": [ + { + "from": 771, + "to": 772, + "id": "0x84" + }, + { + "from": 773, + "to": 774, + "id": "0x89" + }, + { + "from": 775, + "to": 776, + "id": "0x8B" + } + ], + "play.toClient.clear_titles": [ + { + "from": 755, + "to": 755, + "id": "0x10" + }, + { + "from": 756, + "to": 756, + "id": "0x10" + }, + { + "from": 757, + "to": 758, + "id": "0x10" + }, + { + "from": 759, + "to": 759, + "id": "0x0D" + }, + { + "from": 760, + "to": 760, + "id": "0x0D" + }, + { + "from": 761, + "to": 761, + "id": "0x0C" + }, + { + "from": 762, + "to": 763, + "id": "0x0E" + }, + { + "from": 764, + "to": 764, + "id": "0x0F" + }, + { + "from": 765, + "to": 765, + "id": "0x0F" + }, + { + "from": 766, + "to": 766, + "id": "0x0F" + }, + { + "from": 767, + "to": 767, + "id": "0x0F" + }, + { + "from": 768, + "to": 769, + "id": "0x0F" + }, + { + "from": 770, + "to": 770, + "id": "0x0E" + }, + { + "from": 771, + "to": 772, + "id": "0x0E" + }, + { + "from": 773, + "to": 774, + "id": "0x0E" + }, + { + "from": 775, + "to": 776, + "id": "0x0E" + } + ], + "play.toClient.close_window": [ + { + "from": 735, + "to": 736, + "id": "0x13" + }, + { + "from": 751, + "to": 754, + "id": "0x12" + }, + { + "from": 755, + "to": 755, + "id": "0x13" + }, + { + "from": 756, + "to": 756, + "id": "0x13" + }, + { + "from": 757, + "to": 758, + "id": "0x13" + }, + { + "from": 759, + "to": 759, + "id": "0x10" + }, + { + "from": 760, + "to": 760, + "id": "0x10" + }, + { + "from": 761, + "to": 761, + "id": "0x0F" + }, + { + "from": 762, + "to": 763, + "id": "0x11" + }, + { + "from": 764, + "to": 764, + "id": "0x12" + }, + { + "from": 765, + "to": 765, + "id": "0x12" + }, + { + "from": 766, + "to": 766, + "id": "0x12" + }, + { + "from": 767, + "to": 767, + "id": "0x12" + }, + { + "from": 768, + "to": 769, + "id": "0x12" + }, + { + "from": 770, + "to": 770, + "id": "0x11" + }, + { + "from": 771, + "to": 772, + "id": "0x11" + }, + { + "from": 773, + "to": 774, + "id": "0x11" + }, + { + "from": 775, + "to": 776, + "id": "0x11" + } + ], + "play.toClient.collect": [ + { + "from": 735, + "to": 736, + "id": "0x55" + }, + { + "from": 751, + "to": 754, + "id": "0x55" + }, + { + "from": 755, + "to": 755, + "id": "0x60" + }, + { + "from": 756, + "to": 756, + "id": "0x60" + }, + { + "from": 757, + "to": 758, + "id": "0x61" + }, + { + "from": 759, + "to": 759, + "id": "0x62" + }, + { + "from": 760, + "to": 760, + "id": "0x65" + }, + { + "from": 761, + "to": 761, + "id": "0x63" + }, + { + "from": 762, + "to": 763, + "id": "0x67" + }, + { + "from": 764, + "to": 764, + "id": "0x6A" + }, + { + "from": 765, + "to": 765, + "id": "0x6C" + }, + { + "from": 766, + "to": 766, + "id": "0x6F" + }, + { + "from": 767, + "to": 767, + "id": "0x6F" + }, + { + "from": 768, + "to": 769, + "id": "0x76" + }, + { + "from": 770, + "to": 770, + "id": "0x75" + }, + { + "from": 771, + "to": 772, + "id": "0x75" + }, + { + "from": 773, + "to": 774, + "id": "0x7A" + }, + { + "from": 775, + "to": 776, + "id": "0x7C" + } + ], + "play.toClient.combat_event": [ + { + "from": 735, + "to": 736, + "id": "0x32" + }, + { + "from": 751, + "to": 754, + "id": "0x31" + } + ], + "play.toClient.cookie_request": [ + { + "from": 766, + "to": 766, + "id": "0x16" + }, + { + "from": 767, + "to": 767, + "id": "0x16" + }, + { + "from": 768, + "to": 769, + "id": "0x16" + }, + { + "from": 770, + "to": 770, + "id": "0x15" + }, + { + "from": 771, + "to": 772, + "id": "0x15" + }, + { + "from": 773, + "to": 774, + "id": "0x15" + }, + { + "from": 775, + "to": 776, + "id": "0x15" + } + ], + "play.toClient.craft_progress_bar": [ + { + "from": 735, + "to": 736, + "id": "0x15" + }, + { + "from": 751, + "to": 754, + "id": "0x14" + }, + { + "from": 755, + "to": 755, + "id": "0x15" + }, + { + "from": 756, + "to": 756, + "id": "0x15" + }, + { + "from": 757, + "to": 758, + "id": "0x15" + }, + { + "from": 759, + "to": 759, + "id": "0x12" + }, + { + "from": 760, + "to": 760, + "id": "0x12" + }, + { + "from": 761, + "to": 761, + "id": "0x11" + }, + { + "from": 762, + "to": 763, + "id": "0x13" + }, + { + "from": 764, + "to": 764, + "id": "0x14" + }, + { + "from": 765, + "to": 765, + "id": "0x14" + }, + { + "from": 766, + "to": 766, + "id": "0x14" + }, + { + "from": 767, + "to": 767, + "id": "0x14" + }, + { + "from": 768, + "to": 769, + "id": "0x14" + }, + { + "from": 770, + "to": 770, + "id": "0x13" + }, + { + "from": 771, + "to": 772, + "id": "0x13" + }, + { + "from": 773, + "to": 774, + "id": "0x13" + }, + { + "from": 775, + "to": 776, + "id": "0x13" + } + ], + "play.toClient.craft_recipe_response": [ + { + "from": 735, + "to": 736, + "id": "0x30" + }, + { + "from": 751, + "to": 754, + "id": "0x2F" + }, + { + "from": 755, + "to": 755, + "id": "0x31" + }, + { + "from": 756, + "to": 756, + "id": "0x31" + }, + { + "from": 757, + "to": 758, + "id": "0x31" + }, + { + "from": 759, + "to": 759, + "id": "0x2E" + }, + { + "from": 760, + "to": 760, + "id": "0x30" + }, + { + "from": 761, + "to": 761, + "id": "0x2F" + }, + { + "from": 762, + "to": 763, + "id": "0x33" + }, + { + "from": 764, + "to": 764, + "id": "0x35" + }, + { + "from": 765, + "to": 765, + "id": "0x35" + }, + { + "from": 766, + "to": 766, + "id": "0x37" + }, + { + "from": 767, + "to": 767, + "id": "0x37" + }, + { + "from": 768, + "to": 769, + "id": "0x39" + }, + { + "from": 770, + "to": 770, + "id": "0x38" + }, + { + "from": 771, + "to": 772, + "id": "0x38" + }, + { + "from": 773, + "to": 774, + "id": "0x3D" + }, + { + "from": 775, + "to": 776, + "id": "0x3F" + } + ], + "play.toClient.custom_payload": [ + { + "from": 735, + "to": 736, + "id": "0x18" + }, + { + "from": 751, + "to": 754, + "id": "0x17" + }, + { + "from": 755, + "to": 755, + "id": "0x18" + }, + { + "from": 756, + "to": 756, + "id": "0x18" + }, + { + "from": 757, + "to": 758, + "id": "0x18" + }, + { + "from": 759, + "to": 759, + "id": "0x15" + }, + { + "from": 760, + "to": 760, + "id": "0x16" + }, + { + "from": 761, + "to": 761, + "id": "0x15" + }, + { + "from": 762, + "to": 763, + "id": "0x17" + }, + { + "from": 764, + "to": 764, + "id": "0x18" + }, + { + "from": 765, + "to": 765, + "id": "0x18" + }, + { + "from": 766, + "to": 766, + "id": "0x19" + }, + { + "from": 767, + "to": 767, + "id": "0x19" + }, + { + "from": 768, + "to": 769, + "id": "0x19" + }, + { + "from": 770, + "to": 770, + "id": "0x18" + }, + { + "from": 771, + "to": 772, + "id": "0x18" + }, + { + "from": 773, + "to": 774, + "id": "0x18" + }, + { + "from": 775, + "to": 776, + "id": "0x18" + } + ], + "play.toClient.custom_report_details": [ + { + "from": 767, + "to": 767, + "id": "0x7A" + }, + { + "from": 768, + "to": 769, + "id": "0x81" + }, + { + "from": 770, + "to": 770, + "id": "0x81" + }, + { + "from": 771, + "to": 772, + "id": "0x81" + }, + { + "from": 773, + "to": 774, + "id": "0x86" + }, + { + "from": 775, + "to": 776, + "id": "0x88" + } + ], + "play.toClient.damage_event": [ + { + "from": 762, + "to": 763, + "id": "0x18" + }, + { + "from": 764, + "to": 764, + "id": "0x19" + }, + { + "from": 765, + "to": 765, + "id": "0x19" + }, + { + "from": 766, + "to": 766, + "id": "0x1A" + }, + { + "from": 767, + "to": 767, + "id": "0x1A" + }, + { + "from": 768, + "to": 769, + "id": "0x1A" + }, + { + "from": 770, + "to": 770, + "id": "0x19" + }, + { + "from": 771, + "to": 772, + "id": "0x19" + }, + { + "from": 773, + "to": 774, + "id": "0x19" + }, + { + "from": 775, + "to": 776, + "id": "0x19" + } + ], + "play.toClient.death_combat_event": [ + { + "from": 755, + "to": 755, + "id": "0x35" + }, + { + "from": 756, + "to": 756, + "id": "0x35" + }, + { + "from": 757, + "to": 758, + "id": "0x35" + }, + { + "from": 759, + "to": 759, + "id": "0x33" + }, + { + "from": 760, + "to": 760, + "id": "0x36" + }, + { + "from": 761, + "to": 761, + "id": "0x34" + }, + { + "from": 762, + "to": 763, + "id": "0x38" + }, + { + "from": 764, + "to": 764, + "id": "0x3A" + }, + { + "from": 765, + "to": 765, + "id": "0x3A" + }, + { + "from": 766, + "to": 766, + "id": "0x3C" + }, + { + "from": 767, + "to": 767, + "id": "0x3C" + }, + { + "from": 768, + "to": 769, + "id": "0x3E" + }, + { + "from": 770, + "to": 770, + "id": "0x3D" + }, + { + "from": 771, + "to": 772, + "id": "0x3D" + }, + { + "from": 773, + "to": 774, + "id": "0x42" + }, + { + "from": 775, + "to": 776, + "id": "0x44" + } + ], + "play.toClient.debug_block_value": [ + { + "from": 773, + "to": 774, + "id": "0x1A" + }, + { + "from": 775, + "to": 776, + "id": "0x1A" + } + ], + "play.toClient.debug_chunk_value": [ + { + "from": 773, + "to": 774, + "id": "0x1B" + }, + { + "from": 775, + "to": 776, + "id": "0x1B" + } + ], + "play.toClient.debug_entity_value": [ + { + "from": 773, + "to": 774, + "id": "0x1C" + }, + { + "from": 775, + "to": 776, + "id": "0x1C" + } + ], + "play.toClient.debug_event": [ + { + "from": 773, + "to": 774, + "id": "0x1D" + }, + { + "from": 775, + "to": 776, + "id": "0x1D" + } + ], + "play.toClient.debug_sample": [ + { + "from": 766, + "to": 766, + "id": "0x1B" + }, + { + "from": 767, + "to": 767, + "id": "0x1B" + }, + { + "from": 768, + "to": 769, + "id": "0x1B" + }, + { + "from": 770, + "to": 770, + "id": "0x1A" + }, + { + "from": 771, + "to": 772, + "id": "0x1A" + }, + { + "from": 773, + "to": 774, + "id": "0x1E" + }, + { + "from": 775, + "to": 776, + "id": "0x1E" + } + ], + "play.toClient.declare_commands": [ + { + "from": 735, + "to": 736, + "id": "0x11" + }, + { + "from": 751, + "to": 754, + "id": "0x10" + }, + { + "from": 755, + "to": 755, + "id": "0x12" + }, + { + "from": 756, + "to": 756, + "id": "0x12" + }, + { + "from": 757, + "to": 758, + "id": "0x12" + }, + { + "from": 759, + "to": 759, + "id": "0x0F" + }, + { + "from": 760, + "to": 760, + "id": "0x0F" + }, + { + "from": 761, + "to": 761, + "id": "0x0E" + }, + { + "from": 762, + "to": 763, + "id": "0x10" + }, + { + "from": 764, + "to": 764, + "id": "0x11" + }, + { + "from": 765, + "to": 765, + "id": "0x11" + }, + { + "from": 766, + "to": 766, + "id": "0x11" + }, + { + "from": 767, + "to": 767, + "id": "0x11" + }, + { + "from": 768, + "to": 769, + "id": "0x11" + }, + { + "from": 770, + "to": 770, + "id": "0x10" + }, + { + "from": 771, + "to": 772, + "id": "0x10" + }, + { + "from": 773, + "to": 774, + "id": "0x10" + }, + { + "from": 775, + "to": 776, + "id": "0x10" + } + ], + "play.toClient.declare_recipes": [ + { + "from": 735, + "to": 736, + "id": "0x5A" + }, + { + "from": 751, + "to": 754, + "id": "0x5A" + }, + { + "from": 755, + "to": 755, + "id": "0x65" + }, + { + "from": 756, + "to": 756, + "id": "0x65" + }, + { + "from": 757, + "to": 758, + "id": "0x66" + }, + { + "from": 759, + "to": 759, + "id": "0x67" + }, + { + "from": 760, + "to": 760, + "id": "0x6A" + }, + { + "from": 761, + "to": 761, + "id": "0x69" + }, + { + "from": 762, + "to": 763, + "id": "0x6D" + }, + { + "from": 764, + "to": 764, + "id": "0x6F" + }, + { + "from": 765, + "to": 765, + "id": "0x73" + }, + { + "from": 766, + "to": 766, + "id": "0x77" + }, + { + "from": 767, + "to": 767, + "id": "0x77" + }, + { + "from": 768, + "to": 769, + "id": "0x7E" + }, + { + "from": 770, + "to": 770, + "id": "0x7E" + }, + { + "from": 771, + "to": 772, + "id": "0x7E" + }, + { + "from": 773, + "to": 774, + "id": "0x83" + }, + { + "from": 775, + "to": 776, + "id": "0x85" + } + ], + "play.toClient.destroy_entity": [ + { + "from": 755, + "to": 755, + "id": "0x3A" + } + ], + "play.toClient.difficulty": [ + { + "from": 735, + "to": 736, + "id": "0x0D" + }, + { + "from": 751, + "to": 754, + "id": "0x0D" + }, + { + "from": 755, + "to": 755, + "id": "0x0E" + }, + { + "from": 756, + "to": 756, + "id": "0x0E" + }, + { + "from": 757, + "to": 758, + "id": "0x0E" + }, + { + "from": 759, + "to": 759, + "id": "0x0B" + }, + { + "from": 760, + "to": 760, + "id": "0x0B" + }, + { + "from": 761, + "to": 761, + "id": "0x0B" + }, + { + "from": 762, + "to": 763, + "id": "0x0C" + }, + { + "from": 764, + "to": 764, + "id": "0x0B" + }, + { + "from": 765, + "to": 765, + "id": "0x0B" + }, + { + "from": 766, + "to": 766, + "id": "0x0B" + }, + { + "from": 767, + "to": 767, + "id": "0x0B" + }, + { + "from": 768, + "to": 769, + "id": "0x0B" + }, + { + "from": 770, + "to": 770, + "id": "0x0A" + }, + { + "from": 771, + "to": 772, + "id": "0x0A" + }, + { + "from": 773, + "to": 774, + "id": "0x0A" + }, + { + "from": 775, + "to": 776, + "id": "0x0A" + } + ], + "play.toClient.end_combat_event": [ + { + "from": 755, + "to": 755, + "id": "0x33" + }, + { + "from": 756, + "to": 756, + "id": "0x33" + }, + { + "from": 757, + "to": 758, + "id": "0x33" + }, + { + "from": 759, + "to": 759, + "id": "0x31" + }, + { + "from": 760, + "to": 760, + "id": "0x34" + }, + { + "from": 761, + "to": 761, + "id": "0x32" + }, + { + "from": 762, + "to": 763, + "id": "0x36" + }, + { + "from": 764, + "to": 764, + "id": "0x38" + }, + { + "from": 765, + "to": 765, + "id": "0x38" + }, + { + "from": 766, + "to": 766, + "id": "0x3A" + }, + { + "from": 767, + "to": 767, + "id": "0x3A" + }, + { + "from": 768, + "to": 769, + "id": "0x3C" + }, + { + "from": 770, + "to": 770, + "id": "0x3B" + }, + { + "from": 771, + "to": 772, + "id": "0x3B" + }, + { + "from": 773, + "to": 774, + "id": "0x40" + }, + { + "from": 775, + "to": 776, + "id": "0x42" + } + ], + "play.toClient.enter_combat_event": [ + { + "from": 755, + "to": 755, + "id": "0x34" + }, + { + "from": 756, + "to": 756, + "id": "0x34" + }, + { + "from": 757, + "to": 758, + "id": "0x34" + }, + { + "from": 759, + "to": 759, + "id": "0x32" + }, + { + "from": 760, + "to": 760, + "id": "0x35" + }, + { + "from": 761, + "to": 761, + "id": "0x33" + }, + { + "from": 762, + "to": 763, + "id": "0x37" + }, + { + "from": 764, + "to": 764, + "id": "0x39" + }, + { + "from": 765, + "to": 765, + "id": "0x39" + }, + { + "from": 766, + "to": 766, + "id": "0x3B" + }, + { + "from": 767, + "to": 767, + "id": "0x3B" + }, + { + "from": 768, + "to": 769, + "id": "0x3D" + }, + { + "from": 770, + "to": 770, + "id": "0x3C" + }, + { + "from": 771, + "to": 772, + "id": "0x3C" + }, + { + "from": 773, + "to": 774, + "id": "0x41" + }, + { + "from": 775, + "to": 776, + "id": "0x43" + } + ], + "play.toClient.entity": [ + { + "from": 735, + "to": 736, + "id": "0x2B" + }, + { + "from": 751, + "to": 754, + "id": "0x2A" + } + ], + "play.toClient.entity_destroy": [ + { + "from": 735, + "to": 736, + "id": "0x37" + }, + { + "from": 751, + "to": 754, + "id": "0x36" + }, + { + "from": 756, + "to": 756, + "id": "0x3A" + }, + { + "from": 757, + "to": 758, + "id": "0x3A" + }, + { + "from": 759, + "to": 759, + "id": "0x38" + }, + { + "from": 760, + "to": 760, + "id": "0x3B" + }, + { + "from": 761, + "to": 761, + "id": "0x3A" + }, + { + "from": 762, + "to": 763, + "id": "0x3E" + }, + { + "from": 764, + "to": 764, + "id": "0x40" + }, + { + "from": 765, + "to": 765, + "id": "0x40" + }, + { + "from": 766, + "to": 766, + "id": "0x42" + }, + { + "from": 767, + "to": 767, + "id": "0x42" + }, + { + "from": 768, + "to": 769, + "id": "0x47" + }, + { + "from": 770, + "to": 770, + "id": "0x46" + }, + { + "from": 771, + "to": 772, + "id": "0x46" + }, + { + "from": 773, + "to": 774, + "id": "0x4B" + }, + { + "from": 775, + "to": 776, + "id": "0x4D" + } + ], + "play.toClient.entity_effect": [ + { + "from": 735, + "to": 736, + "id": "0x59" + }, + { + "from": 751, + "to": 754, + "id": "0x59" + }, + { + "from": 755, + "to": 755, + "id": "0x64" + }, + { + "from": 756, + "to": 756, + "id": "0x64" + }, + { + "from": 757, + "to": 758, + "id": "0x65" + }, + { + "from": 759, + "to": 759, + "id": "0x66" + }, + { + "from": 760, + "to": 760, + "id": "0x69" + }, + { + "from": 761, + "to": 761, + "id": "0x68" + }, + { + "from": 762, + "to": 763, + "id": "0x6C" + }, + { + "from": 764, + "to": 764, + "id": "0x6E" + }, + { + "from": 765, + "to": 765, + "id": "0x72" + }, + { + "from": 766, + "to": 766, + "id": "0x76" + }, + { + "from": 767, + "to": 767, + "id": "0x76" + }, + { + "from": 768, + "to": 769, + "id": "0x7D" + }, + { + "from": 770, + "to": 770, + "id": "0x7D" + }, + { + "from": 771, + "to": 772, + "id": "0x7D" + }, + { + "from": 773, + "to": 774, + "id": "0x82" + }, + { + "from": 775, + "to": 776, + "id": "0x84" + } + ], + "play.toClient.entity_equipment": [ + { + "from": 735, + "to": 736, + "id": "0x47" + }, + { + "from": 751, + "to": 754, + "id": "0x47" + }, + { + "from": 755, + "to": 755, + "id": "0x50" + }, + { + "from": 756, + "to": 756, + "id": "0x50" + }, + { + "from": 757, + "to": 758, + "id": "0x50" + }, + { + "from": 759, + "to": 759, + "id": "0x50" + }, + { + "from": 760, + "to": 760, + "id": "0x53" + }, + { + "from": 761, + "to": 761, + "id": "0x51" + }, + { + "from": 762, + "to": 763, + "id": "0x55" + }, + { + "from": 764, + "to": 764, + "id": "0x57" + }, + { + "from": 765, + "to": 765, + "id": "0x59" + }, + { + "from": 766, + "to": 766, + "id": "0x5B" + }, + { + "from": 767, + "to": 767, + "id": "0x5B" + }, + { + "from": 768, + "to": 769, + "id": "0x60" + }, + { + "from": 770, + "to": 770, + "id": "0x5F" + }, + { + "from": 771, + "to": 772, + "id": "0x5F" + }, + { + "from": 773, + "to": 774, + "id": "0x64" + }, + { + "from": 775, + "to": 776, + "id": "0x66" + } + ], + "play.toClient.entity_head_rotation": [ + { + "from": 735, + "to": 736, + "id": "0x3B" + }, + { + "from": 751, + "to": 754, + "id": "0x3A" + }, + { + "from": 755, + "to": 755, + "id": "0x3E" + }, + { + "from": 756, + "to": 756, + "id": "0x3E" + }, + { + "from": 757, + "to": 758, + "id": "0x3E" + }, + { + "from": 759, + "to": 759, + "id": "0x3C" + }, + { + "from": 760, + "to": 760, + "id": "0x3F" + }, + { + "from": 761, + "to": 761, + "id": "0x3E" + }, + { + "from": 762, + "to": 763, + "id": "0x42" + }, + { + "from": 764, + "to": 764, + "id": "0x44" + }, + { + "from": 765, + "to": 765, + "id": "0x46" + }, + { + "from": 766, + "to": 766, + "id": "0x48" + }, + { + "from": 767, + "to": 767, + "id": "0x48" + }, + { + "from": 768, + "to": 769, + "id": "0x4D" + }, + { + "from": 770, + "to": 770, + "id": "0x4C" + }, + { + "from": 771, + "to": 772, + "id": "0x4C" + }, + { + "from": 773, + "to": 774, + "id": "0x51" + }, + { + "from": 775, + "to": 776, + "id": "0x53" + } + ], + "play.toClient.entity_look": [ + { + "from": 735, + "to": 736, + "id": "0x2A" + }, + { + "from": 751, + "to": 754, + "id": "0x29" + }, + { + "from": 755, + "to": 755, + "id": "0x2B" + }, + { + "from": 756, + "to": 756, + "id": "0x2B" + }, + { + "from": 757, + "to": 758, + "id": "0x2B" + }, + { + "from": 759, + "to": 759, + "id": "0x28" + }, + { + "from": 760, + "to": 760, + "id": "0x2A" + }, + { + "from": 761, + "to": 761, + "id": "0x29" + }, + { + "from": 762, + "to": 763, + "id": "0x2D" + }, + { + "from": 764, + "to": 764, + "id": "0x2E" + }, + { + "from": 765, + "to": 765, + "id": "0x2E" + }, + { + "from": 766, + "to": 766, + "id": "0x30" + }, + { + "from": 767, + "to": 767, + "id": "0x30" + }, + { + "from": 768, + "to": 769, + "id": "0x32" + }, + { + "from": 770, + "to": 770, + "id": "0x31" + }, + { + "from": 771, + "to": 772, + "id": "0x31" + }, + { + "from": 773, + "to": 774, + "id": "0x36" + }, + { + "from": 775, + "to": 776, + "id": "0x38" + } + ], + "play.toClient.entity_metadata": [ + { + "from": 735, + "to": 736, + "id": "0x44" + }, + { + "from": 751, + "to": 754, + "id": "0x44" + }, + { + "from": 755, + "to": 755, + "id": "0x4D" + }, + { + "from": 756, + "to": 756, + "id": "0x4D" + }, + { + "from": 757, + "to": 758, + "id": "0x4D" + }, + { + "from": 759, + "to": 759, + "id": "0x4D" + }, + { + "from": 760, + "to": 760, + "id": "0x50" + }, + { + "from": 761, + "to": 761, + "id": "0x4E" + }, + { + "from": 762, + "to": 763, + "id": "0x52" + }, + { + "from": 764, + "to": 764, + "id": "0x54" + }, + { + "from": 765, + "to": 765, + "id": "0x56" + }, + { + "from": 766, + "to": 766, + "id": "0x58" + }, + { + "from": 767, + "to": 767, + "id": "0x58" + }, + { + "from": 768, + "to": 769, + "id": "0x5D" + }, + { + "from": 770, + "to": 770, + "id": "0x5C" + }, + { + "from": 771, + "to": 772, + "id": "0x5C" + }, + { + "from": 773, + "to": 774, + "id": "0x61" + }, + { + "from": 775, + "to": 776, + "id": "0x63" + } + ], + "play.toClient.entity_move_look": [ + { + "from": 735, + "to": 736, + "id": "0x29" + }, + { + "from": 751, + "to": 754, + "id": "0x28" + }, + { + "from": 755, + "to": 755, + "id": "0x2A" + }, + { + "from": 756, + "to": 756, + "id": "0x2A" + }, + { + "from": 757, + "to": 758, + "id": "0x2A" + }, + { + "from": 759, + "to": 759, + "id": "0x27" + }, + { + "from": 760, + "to": 760, + "id": "0x29" + }, + { + "from": 761, + "to": 761, + "id": "0x28" + }, + { + "from": 762, + "to": 763, + "id": "0x2C" + }, + { + "from": 764, + "to": 764, + "id": "0x2D" + }, + { + "from": 765, + "to": 765, + "id": "0x2D" + }, + { + "from": 766, + "to": 766, + "id": "0x2F" + }, + { + "from": 767, + "to": 767, + "id": "0x2F" + }, + { + "from": 768, + "to": 769, + "id": "0x30" + }, + { + "from": 770, + "to": 770, + "id": "0x2F" + }, + { + "from": 771, + "to": 772, + "id": "0x2F" + }, + { + "from": 773, + "to": 774, + "id": "0x34" + }, + { + "from": 775, + "to": 776, + "id": "0x36" + } + ], + "play.toClient.entity_sound_effect": [ + { + "from": 735, + "to": 736, + "id": "0x50" + }, + { + "from": 751, + "to": 754, + "id": "0x50" + }, + { + "from": 755, + "to": 755, + "id": "0x5B" + }, + { + "from": 756, + "to": 756, + "id": "0x5B" + }, + { + "from": 757, + "to": 758, + "id": "0x5C" + }, + { + "from": 759, + "to": 759, + "id": "0x5C" + }, + { + "from": 760, + "to": 760, + "id": "0x5F" + }, + { + "from": 761, + "to": 761, + "id": "0x5D" + }, + { + "from": 762, + "to": 763, + "id": "0x61" + }, + { + "from": 764, + "to": 764, + "id": "0x63" + }, + { + "from": 765, + "to": 765, + "id": "0x65" + }, + { + "from": 766, + "to": 766, + "id": "0x67" + }, + { + "from": 767, + "to": 767, + "id": "0x67" + }, + { + "from": 768, + "to": 769, + "id": "0x6E" + }, + { + "from": 770, + "to": 770, + "id": "0x6D" + }, + { + "from": 771, + "to": 772, + "id": "0x6D" + }, + { + "from": 773, + "to": 774, + "id": "0x72" + }, + { + "from": 775, + "to": 776, + "id": "0x74" + } + ], + "play.toClient.entity_status": [ + { + "from": 735, + "to": 736, + "id": "0x1B" + }, + { + "from": 751, + "to": 754, + "id": "0x1A" + }, + { + "from": 755, + "to": 755, + "id": "0x1B" + }, + { + "from": 756, + "to": 756, + "id": "0x1B" + }, + { + "from": 757, + "to": 758, + "id": "0x1B" + }, + { + "from": 759, + "to": 759, + "id": "0x18" + }, + { + "from": 760, + "to": 760, + "id": "0x1A" + }, + { + "from": 761, + "to": 761, + "id": "0x19" + }, + { + "from": 762, + "to": 763, + "id": "0x1C" + }, + { + "from": 764, + "to": 764, + "id": "0x1D" + }, + { + "from": 765, + "to": 765, + "id": "0x1D" + }, + { + "from": 766, + "to": 766, + "id": "0x1F" + }, + { + "from": 767, + "to": 767, + "id": "0x1F" + }, + { + "from": 768, + "to": 769, + "id": "0x1F" + }, + { + "from": 770, + "to": 770, + "id": "0x1E" + }, + { + "from": 771, + "to": 772, + "id": "0x1E" + }, + { + "from": 773, + "to": 774, + "id": "0x22" + }, + { + "from": 775, + "to": 776, + "id": "0x22" + } + ], + "play.toClient.entity_teleport": [ + { + "from": 735, + "to": 736, + "id": "0x56" + }, + { + "from": 751, + "to": 754, + "id": "0x56" + }, + { + "from": 755, + "to": 755, + "id": "0x61" + }, + { + "from": 756, + "to": 756, + "id": "0x61" + }, + { + "from": 757, + "to": 758, + "id": "0x62" + }, + { + "from": 759, + "to": 759, + "id": "0x63" + }, + { + "from": 760, + "to": 760, + "id": "0x66" + }, + { + "from": 761, + "to": 761, + "id": "0x64" + }, + { + "from": 762, + "to": 763, + "id": "0x68" + }, + { + "from": 764, + "to": 764, + "id": "0x6B" + }, + { + "from": 765, + "to": 765, + "id": "0x6D" + }, + { + "from": 766, + "to": 766, + "id": "0x70" + }, + { + "from": 767, + "to": 767, + "id": "0x70" + }, + { + "from": 768, + "to": 769, + "id": "0x77" + }, + { + "from": 770, + "to": 770, + "id": "0x76" + }, + { + "from": 771, + "to": 772, + "id": "0x76" + }, + { + "from": 773, + "to": 774, + "id": "0x7B" + }, + { + "from": 775, + "to": 776, + "id": "0x7D" + } + ], + "play.toClient.entity_update_attributes": [ + { + "from": 735, + "to": 736, + "id": "0x58" + }, + { + "from": 751, + "to": 754, + "id": "0x58" + }, + { + "from": 755, + "to": 755, + "id": "0x63" + }, + { + "from": 756, + "to": 756, + "id": "0x63" + }, + { + "from": 757, + "to": 758, + "id": "0x64" + }, + { + "from": 759, + "to": 759, + "id": "0x65" + }, + { + "from": 760, + "to": 760, + "id": "0x68" + }, + { + "from": 761, + "to": 761, + "id": "0x66" + }, + { + "from": 762, + "to": 763, + "id": "0x6A" + }, + { + "from": 764, + "to": 764, + "id": "0x6D" + }, + { + "from": 765, + "to": 765, + "id": "0x71" + }, + { + "from": 766, + "to": 766, + "id": "0x75" + }, + { + "from": 767, + "to": 767, + "id": "0x75" + }, + { + "from": 768, + "to": 769, + "id": "0x7C" + }, + { + "from": 770, + "to": 770, + "id": "0x7C" + }, + { + "from": 771, + "to": 772, + "id": "0x7C" + }, + { + "from": 773, + "to": 774, + "id": "0x81" + }, + { + "from": 775, + "to": 776, + "id": "0x83" + } + ], + "play.toClient.entity_velocity": [ + { + "from": 735, + "to": 736, + "id": "0x46" + }, + { + "from": 751, + "to": 754, + "id": "0x46" + }, + { + "from": 755, + "to": 755, + "id": "0x4F" + }, + { + "from": 756, + "to": 756, + "id": "0x4F" + }, + { + "from": 757, + "to": 758, + "id": "0x4F" + }, + { + "from": 759, + "to": 759, + "id": "0x4F" + }, + { + "from": 760, + "to": 760, + "id": "0x52" + }, + { + "from": 761, + "to": 761, + "id": "0x50" + }, + { + "from": 762, + "to": 763, + "id": "0x54" + }, + { + "from": 764, + "to": 764, + "id": "0x56" + }, + { + "from": 765, + "to": 765, + "id": "0x58" + }, + { + "from": 766, + "to": 766, + "id": "0x5A" + }, + { + "from": 767, + "to": 767, + "id": "0x5A" + }, + { + "from": 768, + "to": 769, + "id": "0x5F" + }, + { + "from": 770, + "to": 770, + "id": "0x5E" + }, + { + "from": 771, + "to": 772, + "id": "0x5E" + }, + { + "from": 773, + "to": 774, + "id": "0x63" + }, + { + "from": 775, + "to": 776, + "id": "0x65" + } + ], + "play.toClient.experience": [ + { + "from": 735, + "to": 736, + "id": "0x48" + }, + { + "from": 751, + "to": 754, + "id": "0x48" + }, + { + "from": 755, + "to": 755, + "id": "0x51" + }, + { + "from": 756, + "to": 756, + "id": "0x51" + }, + { + "from": 757, + "to": 758, + "id": "0x51" + }, + { + "from": 759, + "to": 759, + "id": "0x51" + }, + { + "from": 760, + "to": 760, + "id": "0x54" + }, + { + "from": 761, + "to": 761, + "id": "0x52" + }, + { + "from": 762, + "to": 763, + "id": "0x56" + }, + { + "from": 764, + "to": 764, + "id": "0x58" + }, + { + "from": 765, + "to": 765, + "id": "0x5A" + }, + { + "from": 766, + "to": 766, + "id": "0x5C" + }, + { + "from": 767, + "to": 767, + "id": "0x5C" + }, + { + "from": 768, + "to": 769, + "id": "0x61" + }, + { + "from": 770, + "to": 770, + "id": "0x60" + }, + { + "from": 771, + "to": 772, + "id": "0x60" + }, + { + "from": 773, + "to": 774, + "id": "0x65" + }, + { + "from": 775, + "to": 776, + "id": "0x67" + } + ], + "play.toClient.explosion": [ + { + "from": 735, + "to": 736, + "id": "0x1C" + }, + { + "from": 751, + "to": 754, + "id": "0x1B" + }, + { + "from": 755, + "to": 755, + "id": "0x1C" + }, + { + "from": 756, + "to": 756, + "id": "0x1C" + }, + { + "from": 757, + "to": 758, + "id": "0x1C" + }, + { + "from": 759, + "to": 759, + "id": "0x19" + }, + { + "from": 760, + "to": 760, + "id": "0x1B" + }, + { + "from": 761, + "to": 761, + "id": "0x1A" + }, + { + "from": 762, + "to": 763, + "id": "0x1D" + }, + { + "from": 764, + "to": 764, + "id": "0x1E" + }, + { + "from": 765, + "to": 765, + "id": "0x1E" + }, + { + "from": 766, + "to": 766, + "id": "0x20" + }, + { + "from": 767, + "to": 767, + "id": "0x20" + }, + { + "from": 768, + "to": 769, + "id": "0x21" + }, + { + "from": 770, + "to": 770, + "id": "0x20" + }, + { + "from": 771, + "to": 772, + "id": "0x20" + }, + { + "from": 773, + "to": 774, + "id": "0x24" + }, + { + "from": 775, + "to": 776, + "id": "0x24" + } + ], + "play.toClient.face_player": [ + { + "from": 735, + "to": 736, + "id": "0x34" + }, + { + "from": 751, + "to": 754, + "id": "0x33" + }, + { + "from": 755, + "to": 755, + "id": "0x37" + }, + { + "from": 756, + "to": 756, + "id": "0x37" + }, + { + "from": 757, + "to": 758, + "id": "0x37" + }, + { + "from": 759, + "to": 759, + "id": "0x35" + }, + { + "from": 760, + "to": 760, + "id": "0x38" + }, + { + "from": 761, + "to": 761, + "id": "0x37" + }, + { + "from": 762, + "to": 763, + "id": "0x3B" + }, + { + "from": 764, + "to": 764, + "id": "0x3D" + }, + { + "from": 765, + "to": 765, + "id": "0x3D" + }, + { + "from": 766, + "to": 766, + "id": "0x3F" + }, + { + "from": 767, + "to": 767, + "id": "0x3F" + }, + { + "from": 768, + "to": 769, + "id": "0x41" + }, + { + "from": 770, + "to": 770, + "id": "0x40" + }, + { + "from": 771, + "to": 772, + "id": "0x40" + }, + { + "from": 773, + "to": 774, + "id": "0x45" + }, + { + "from": 775, + "to": 776, + "id": "0x47" + } + ], + "play.toClient.feature_flags": [ + { + "from": 761, + "to": 761, + "id": "0x67" + }, + { + "from": 762, + "to": 763, + "id": "0x6B" + } + ], + "play.toClient.game_rule_values": [ + { + "from": 775, + "to": 776, + "id": "0x27" + } + ], + "play.toClient.game_state_change": [ + { + "from": 735, + "to": 736, + "id": "0x1E" + }, + { + "from": 751, + "to": 754, + "id": "0x1D" + }, + { + "from": 755, + "to": 755, + "id": "0x1E" + }, + { + "from": 756, + "to": 756, + "id": "0x1E" + }, + { + "from": 757, + "to": 758, + "id": "0x1E" + }, + { + "from": 759, + "to": 759, + "id": "0x1B" + }, + { + "from": 760, + "to": 760, + "id": "0x1D" + }, + { + "from": 761, + "to": 761, + "id": "0x1C" + }, + { + "from": 762, + "to": 763, + "id": "0x1F" + }, + { + "from": 764, + "to": 764, + "id": "0x20" + }, + { + "from": 765, + "to": 765, + "id": "0x20" + }, + { + "from": 766, + "to": 766, + "id": "0x22" + }, + { + "from": 767, + "to": 767, + "id": "0x22" + }, + { + "from": 768, + "to": 769, + "id": "0x23" + }, + { + "from": 770, + "to": 770, + "id": "0x22" + }, + { + "from": 771, + "to": 772, + "id": "0x22" + }, + { + "from": 773, + "to": 774, + "id": "0x26" + }, + { + "from": 775, + "to": 776, + "id": "0x26" + } + ], + "play.toClient.game_test_highlight_pos": [ + { + "from": 773, + "to": 774, + "id": "0x27" + }, + { + "from": 775, + "to": 776, + "id": "0x28" + } + ], + "play.toClient.held_item_slot": [ + { + "from": 735, + "to": 736, + "id": "0x3F" + }, + { + "from": 751, + "to": 754, + "id": "0x3F" + }, + { + "from": 755, + "to": 755, + "id": "0x48" + }, + { + "from": 756, + "to": 756, + "id": "0x48" + }, + { + "from": 757, + "to": 758, + "id": "0x48" + }, + { + "from": 759, + "to": 759, + "id": "0x47" + }, + { + "from": 760, + "to": 760, + "id": "0x4A" + }, + { + "from": 761, + "to": 761, + "id": "0x49" + }, + { + "from": 762, + "to": 763, + "id": "0x4D" + }, + { + "from": 764, + "to": 764, + "id": "0x4F" + }, + { + "from": 765, + "to": 765, + "id": "0x51" + }, + { + "from": 766, + "to": 766, + "id": "0x53" + }, + { + "from": 767, + "to": 767, + "id": "0x53" + }, + { + "from": 768, + "to": 769, + "id": "0x63" + }, + { + "from": 770, + "to": 770, + "id": "0x62" + }, + { + "from": 771, + "to": 772, + "id": "0x62" + }, + { + "from": 773, + "to": 774, + "id": "0x67" + }, + { + "from": 775, + "to": 776, + "id": "0x69" + } + ], + "play.toClient.hide_message": [ + { + "from": 760, + "to": 760, + "id": "0x18" + }, + { + "from": 761, + "to": 761, + "id": "0x16" + }, + { + "from": 762, + "to": 763, + "id": "0x19" + }, + { + "from": 764, + "to": 764, + "id": "0x1A" + }, + { + "from": 765, + "to": 765, + "id": "0x1A" + }, + { + "from": 766, + "to": 766, + "id": "0x1C" + }, + { + "from": 767, + "to": 767, + "id": "0x1C" + }, + { + "from": 768, + "to": 769, + "id": "0x1C" + }, + { + "from": 770, + "to": 770, + "id": "0x1B" + }, + { + "from": 771, + "to": 772, + "id": "0x1B" + }, + { + "from": 773, + "to": 774, + "id": "0x1F" + }, + { + "from": 775, + "to": 776, + "id": "0x1F" + } + ], + "play.toClient.hurt_animation": [ + { + "from": 762, + "to": 763, + "id": "0x21" + }, + { + "from": 764, + "to": 764, + "id": "0x22" + }, + { + "from": 765, + "to": 765, + "id": "0x22" + }, + { + "from": 766, + "to": 766, + "id": "0x24" + }, + { + "from": 767, + "to": 767, + "id": "0x24" + }, + { + "from": 768, + "to": 769, + "id": "0x25" + }, + { + "from": 770, + "to": 770, + "id": "0x24" + }, + { + "from": 771, + "to": 772, + "id": "0x24" + }, + { + "from": 773, + "to": 774, + "id": "0x29" + }, + { + "from": 775, + "to": 776, + "id": "0x2A" + } + ], + "play.toClient.initialize_world_border": [ + { + "from": 755, + "to": 755, + "id": "0x20" + }, + { + "from": 756, + "to": 756, + "id": "0x20" + }, + { + "from": 757, + "to": 758, + "id": "0x20" + }, + { + "from": 759, + "to": 759, + "id": "0x1D" + }, + { + "from": 760, + "to": 760, + "id": "0x1F" + }, + { + "from": 761, + "to": 761, + "id": "0x1E" + }, + { + "from": 762, + "to": 763, + "id": "0x22" + }, + { + "from": 764, + "to": 764, + "id": "0x23" + }, + { + "from": 765, + "to": 765, + "id": "0x23" + }, + { + "from": 766, + "to": 766, + "id": "0x25" + }, + { + "from": 767, + "to": 767, + "id": "0x25" + }, + { + "from": 768, + "to": 769, + "id": "0x26" + }, + { + "from": 770, + "to": 770, + "id": "0x25" + }, + { + "from": 771, + "to": 772, + "id": "0x25" + }, + { + "from": 773, + "to": 774, + "id": "0x2A" + }, + { + "from": 775, + "to": 776, + "id": "0x2B" + } + ], + "play.toClient.keep_alive": [ + { + "from": 735, + "to": 736, + "id": "0x20" + }, + { + "from": 751, + "to": 754, + "id": "0x1F" + }, + { + "from": 755, + "to": 755, + "id": "0x21" + }, + { + "from": 756, + "to": 756, + "id": "0x21" + }, + { + "from": 757, + "to": 758, + "id": "0x21" + }, + { + "from": 759, + "to": 759, + "id": "0x1E" + }, + { + "from": 760, + "to": 760, + "id": "0x20" + }, + { + "from": 761, + "to": 761, + "id": "0x1F" + }, + { + "from": 762, + "to": 763, + "id": "0x23" + }, + { + "from": 764, + "to": 764, + "id": "0x24" + }, + { + "from": 765, + "to": 765, + "id": "0x24" + }, + { + "from": 766, + "to": 766, + "id": "0x26" + }, + { + "from": 767, + "to": 767, + "id": "0x26" + }, + { + "from": 768, + "to": 769, + "id": "0x27" + }, + { + "from": 770, + "to": 770, + "id": "0x26" + }, + { + "from": 771, + "to": 772, + "id": "0x26" + }, + { + "from": 773, + "to": 774, + "id": "0x2B" + }, + { + "from": 775, + "to": 776, + "id": "0x2C" + } + ], + "play.toClient.kick_disconnect": [ + { + "from": 735, + "to": 736, + "id": "0x1A" + }, + { + "from": 751, + "to": 754, + "id": "0x19" + }, + { + "from": 755, + "to": 755, + "id": "0x1A" + }, + { + "from": 756, + "to": 756, + "id": "0x1A" + }, + { + "from": 757, + "to": 758, + "id": "0x1A" + }, + { + "from": 759, + "to": 759, + "id": "0x17" + }, + { + "from": 760, + "to": 760, + "id": "0x19" + }, + { + "from": 761, + "to": 761, + "id": "0x17" + }, + { + "from": 762, + "to": 763, + "id": "0x1A" + }, + { + "from": 764, + "to": 764, + "id": "0x1B" + }, + { + "from": 765, + "to": 765, + "id": "0x1B" + }, + { + "from": 766, + "to": 766, + "id": "0x1D" + }, + { + "from": 767, + "to": 767, + "id": "0x1D" + }, + { + "from": 768, + "to": 769, + "id": "0x1D" + }, + { + "from": 770, + "to": 770, + "id": "0x1C" + }, + { + "from": 771, + "to": 772, + "id": "0x1C" + }, + { + "from": 773, + "to": 774, + "id": "0x20" + }, + { + "from": 775, + "to": 776, + "id": "0x20" + } + ], + "play.toClient.login": [ + { + "from": 735, + "to": 736, + "id": "0x25" + }, + { + "from": 751, + "to": 754, + "id": "0x24" + }, + { + "from": 755, + "to": 755, + "id": "0x26" + }, + { + "from": 756, + "to": 756, + "id": "0x26" + }, + { + "from": 757, + "to": 758, + "id": "0x26" + }, + { + "from": 759, + "to": 759, + "id": "0x23" + }, + { + "from": 760, + "to": 760, + "id": "0x25" + }, + { + "from": 761, + "to": 761, + "id": "0x24" + }, + { + "from": 762, + "to": 763, + "id": "0x28" + }, + { + "from": 764, + "to": 764, + "id": "0x29" + }, + { + "from": 765, + "to": 765, + "id": "0x29" + }, + { + "from": 766, + "to": 766, + "id": "0x2B" + }, + { + "from": 767, + "to": 767, + "id": "0x2B" + }, + { + "from": 768, + "to": 769, + "id": "0x2C" + }, + { + "from": 770, + "to": 770, + "id": "0x2B" + }, + { + "from": 771, + "to": 772, + "id": "0x2B" + }, + { + "from": 773, + "to": 774, + "id": "0x30" + }, + { + "from": 775, + "to": 776, + "id": "0x31" + } + ], + "play.toClient.low_disk_space_warning": [ + { + "from": 775, + "to": 776, + "id": "0x32" + } + ], + "play.toClient.map": [ + { + "from": 735, + "to": 736, + "id": "0x26" + }, + { + "from": 751, + "to": 754, + "id": "0x25" + }, + { + "from": 755, + "to": 755, + "id": "0x27" + }, + { + "from": 756, + "to": 756, + "id": "0x27" + }, + { + "from": 757, + "to": 758, + "id": "0x27" + }, + { + "from": 759, + "to": 759, + "id": "0x24" + }, + { + "from": 760, + "to": 760, + "id": "0x26" + }, + { + "from": 761, + "to": 761, + "id": "0x25" + }, + { + "from": 762, + "to": 763, + "id": "0x29" + }, + { + "from": 764, + "to": 764, + "id": "0x2A" + }, + { + "from": 765, + "to": 765, + "id": "0x2A" + }, + { + "from": 766, + "to": 766, + "id": "0x2C" + }, + { + "from": 767, + "to": 767, + "id": "0x2C" + }, + { + "from": 768, + "to": 769, + "id": "0x2D" + }, + { + "from": 770, + "to": 770, + "id": "0x2C" + }, + { + "from": 771, + "to": 772, + "id": "0x2C" + }, + { + "from": 773, + "to": 774, + "id": "0x31" + }, + { + "from": 775, + "to": 776, + "id": "0x33" + } + ], + "play.toClient.map_chunk": [ + { + "from": 735, + "to": 736, + "id": "0x21" + }, + { + "from": 751, + "to": 754, + "id": "0x20" + }, + { + "from": 755, + "to": 755, + "id": "0x22" + }, + { + "from": 756, + "to": 756, + "id": "0x22" + }, + { + "from": 757, + "to": 758, + "id": "0x22" + }, + { + "from": 759, + "to": 759, + "id": "0x1F" + }, + { + "from": 760, + "to": 760, + "id": "0x21" + }, + { + "from": 761, + "to": 761, + "id": "0x20" + }, + { + "from": 762, + "to": 763, + "id": "0x24" + }, + { + "from": 764, + "to": 764, + "id": "0x25" + }, + { + "from": 765, + "to": 765, + "id": "0x25" + }, + { + "from": 766, + "to": 766, + "id": "0x27" + }, + { + "from": 767, + "to": 767, + "id": "0x27" + }, + { + "from": 768, + "to": 769, + "id": "0x28" + }, + { + "from": 770, + "to": 770, + "id": "0x27" + }, + { + "from": 771, + "to": 772, + "id": "0x27" + }, + { + "from": 773, + "to": 774, + "id": "0x2C" + }, + { + "from": 775, + "to": 776, + "id": "0x2D" + } + ], + "play.toClient.message_header": [ + { + "from": 760, + "to": 760, + "id": "0x32" + } + ], + "play.toClient.move_minecart": [ + { + "from": 768, + "to": 769, + "id": "0x31" + }, + { + "from": 770, + "to": 770, + "id": "0x30" + }, + { + "from": 771, + "to": 772, + "id": "0x30" + }, + { + "from": 773, + "to": 774, + "id": "0x35" + }, + { + "from": 775, + "to": 776, + "id": "0x37" + } + ], + "play.toClient.multi_block_change": [ + { + "from": 735, + "to": 736, + "id": "0x0F" + }, + { + "from": 751, + "to": 754, + "id": "0x3B" + }, + { + "from": 755, + "to": 755, + "id": "0x3F" + }, + { + "from": 756, + "to": 756, + "id": "0x3F" + }, + { + "from": 757, + "to": 758, + "id": "0x3F" + }, + { + "from": 759, + "to": 759, + "id": "0x3D" + }, + { + "from": 760, + "to": 760, + "id": "0x40" + }, + { + "from": 761, + "to": 761, + "id": "0x3F" + }, + { + "from": 762, + "to": 763, + "id": "0x43" + }, + { + "from": 764, + "to": 764, + "id": "0x45" + }, + { + "from": 765, + "to": 765, + "id": "0x47" + }, + { + "from": 766, + "to": 766, + "id": "0x49" + }, + { + "from": 767, + "to": 767, + "id": "0x49" + }, + { + "from": 768, + "to": 769, + "id": "0x4E" + }, + { + "from": 770, + "to": 770, + "id": "0x4D" + }, + { + "from": 771, + "to": 772, + "id": "0x4D" + }, + { + "from": 773, + "to": 774, + "id": "0x52" + }, + { + "from": 775, + "to": 776, + "id": "0x54" + } + ], + "play.toClient.named_entity_spawn": [ + { + "from": 735, + "to": 736, + "id": "0x04" + }, + { + "from": 751, + "to": 754, + "id": "0x04" + }, + { + "from": 755, + "to": 755, + "id": "0x04" + }, + { + "from": 756, + "to": 756, + "id": "0x04" + }, + { + "from": 757, + "to": 758, + "id": "0x04" + }, + { + "from": 759, + "to": 759, + "id": "0x02" + }, + { + "from": 760, + "to": 760, + "id": "0x02" + }, + { + "from": 761, + "to": 761, + "id": "0x02" + }, + { + "from": 762, + "to": 763, + "id": "0x03" + } + ], + "play.toClient.named_sound_effect": [ + { + "from": 735, + "to": 736, + "id": "0x19" + }, + { + "from": 751, + "to": 754, + "id": "0x18" + }, + { + "from": 755, + "to": 755, + "id": "0x19" + }, + { + "from": 756, + "to": 756, + "id": "0x19" + }, + { + "from": 757, + "to": 758, + "id": "0x19" + }, + { + "from": 759, + "to": 759, + "id": "0x16" + }, + { + "from": 760, + "to": 760, + "id": "0x17" + } + ], + "play.toClient.nbt_query_response": [ + { + "from": 735, + "to": 736, + "id": "0x54" + }, + { + "from": 751, + "to": 754, + "id": "0x54" + }, + { + "from": 755, + "to": 755, + "id": "0x5F" + }, + { + "from": 756, + "to": 756, + "id": "0x5F" + }, + { + "from": 757, + "to": 758, + "id": "0x60" + }, + { + "from": 759, + "to": 759, + "id": "0x61" + }, + { + "from": 760, + "to": 760, + "id": "0x64" + }, + { + "from": 761, + "to": 761, + "id": "0x62" + }, + { + "from": 762, + "to": 763, + "id": "0x66" + }, + { + "from": 764, + "to": 764, + "id": "0x69" + }, + { + "from": 765, + "to": 765, + "id": "0x6B" + }, + { + "from": 766, + "to": 766, + "id": "0x6E" + }, + { + "from": 767, + "to": 767, + "id": "0x6E" + }, + { + "from": 768, + "to": 769, + "id": "0x75" + }, + { + "from": 770, + "to": 770, + "id": "0x74" + }, + { + "from": 771, + "to": 772, + "id": "0x74" + }, + { + "from": 773, + "to": 774, + "id": "0x79" + }, + { + "from": 775, + "to": 776, + "id": "0x7B" + } + ], + "play.toClient.open_book": [ + { + "from": 735, + "to": 736, + "id": "0x2D" + }, + { + "from": 751, + "to": 754, + "id": "0x2C" + }, + { + "from": 755, + "to": 755, + "id": "0x2D" + }, + { + "from": 756, + "to": 756, + "id": "0x2D" + }, + { + "from": 757, + "to": 758, + "id": "0x2D" + }, + { + "from": 759, + "to": 759, + "id": "0x2A" + }, + { + "from": 760, + "to": 760, + "id": "0x2C" + }, + { + "from": 761, + "to": 761, + "id": "0x2B" + }, + { + "from": 762, + "to": 763, + "id": "0x2F" + }, + { + "from": 764, + "to": 764, + "id": "0x30" + }, + { + "from": 765, + "to": 765, + "id": "0x30" + }, + { + "from": 766, + "to": 766, + "id": "0x32" + }, + { + "from": 767, + "to": 767, + "id": "0x32" + }, + { + "from": 768, + "to": 769, + "id": "0x34" + }, + { + "from": 770, + "to": 770, + "id": "0x33" + }, + { + "from": 771, + "to": 772, + "id": "0x33" + }, + { + "from": 773, + "to": 774, + "id": "0x38" + }, + { + "from": 775, + "to": 776, + "id": "0x3A" + } + ], + "play.toClient.open_horse_window": [ + { + "from": 735, + "to": 736, + "id": "0x1F" + }, + { + "from": 751, + "to": 754, + "id": "0x1E" + }, + { + "from": 755, + "to": 755, + "id": "0x1F" + }, + { + "from": 756, + "to": 756, + "id": "0x1F" + }, + { + "from": 757, + "to": 758, + "id": "0x1F" + }, + { + "from": 759, + "to": 759, + "id": "0x1C" + }, + { + "from": 760, + "to": 760, + "id": "0x1E" + }, + { + "from": 761, + "to": 761, + "id": "0x1D" + }, + { + "from": 762, + "to": 763, + "id": "0x20" + }, + { + "from": 764, + "to": 764, + "id": "0x21" + }, + { + "from": 765, + "to": 765, + "id": "0x21" + }, + { + "from": 766, + "to": 766, + "id": "0x23" + }, + { + "from": 767, + "to": 767, + "id": "0x23" + }, + { + "from": 768, + "to": 769, + "id": "0x24" + }, + { + "from": 770, + "to": 770, + "id": "0x23" + }, + { + "from": 771, + "to": 772, + "id": "0x23" + }, + { + "from": 773, + "to": 774, + "id": "0x28" + }, + { + "from": 775, + "to": 776, + "id": "0x29" + } + ], + "play.toClient.open_sign_entity": [ + { + "from": 735, + "to": 736, + "id": "0x2F" + }, + { + "from": 751, + "to": 754, + "id": "0x2E" + }, + { + "from": 755, + "to": 755, + "id": "0x2F" + }, + { + "from": 756, + "to": 756, + "id": "0x2F" + }, + { + "from": 757, + "to": 758, + "id": "0x2F" + }, + { + "from": 759, + "to": 759, + "id": "0x2C" + }, + { + "from": 760, + "to": 760, + "id": "0x2E" + }, + { + "from": 761, + "to": 761, + "id": "0x2D" + }, + { + "from": 762, + "to": 763, + "id": "0x31" + }, + { + "from": 764, + "to": 764, + "id": "0x32" + }, + { + "from": 765, + "to": 765, + "id": "0x32" + }, + { + "from": 766, + "to": 766, + "id": "0x34" + }, + { + "from": 767, + "to": 767, + "id": "0x34" + }, + { + "from": 768, + "to": 769, + "id": "0x36" + }, + { + "from": 770, + "to": 770, + "id": "0x35" + }, + { + "from": 771, + "to": 772, + "id": "0x35" + }, + { + "from": 773, + "to": 774, + "id": "0x3A" + }, + { + "from": 775, + "to": 776, + "id": "0x3C" + } + ], + "play.toClient.open_window": [ + { + "from": 735, + "to": 736, + "id": "0x2E" + }, + { + "from": 751, + "to": 754, + "id": "0x2D" + }, + { + "from": 755, + "to": 755, + "id": "0x2E" + }, + { + "from": 756, + "to": 756, + "id": "0x2E" + }, + { + "from": 757, + "to": 758, + "id": "0x2E" + }, + { + "from": 759, + "to": 759, + "id": "0x2B" + }, + { + "from": 760, + "to": 760, + "id": "0x2D" + }, + { + "from": 761, + "to": 761, + "id": "0x2C" + }, + { + "from": 762, + "to": 763, + "id": "0x30" + }, + { + "from": 764, + "to": 764, + "id": "0x31" + }, + { + "from": 765, + "to": 765, + "id": "0x31" + }, + { + "from": 766, + "to": 766, + "id": "0x33" + }, + { + "from": 767, + "to": 767, + "id": "0x33" + }, + { + "from": 768, + "to": 769, + "id": "0x35" + }, + { + "from": 770, + "to": 770, + "id": "0x34" + }, + { + "from": 771, + "to": 772, + "id": "0x34" + }, + { + "from": 773, + "to": 774, + "id": "0x39" + }, + { + "from": 775, + "to": 776, + "id": "0x3B" + } + ], + "play.toClient.ping": [ + { + "from": 755, + "to": 755, + "id": "0x30" + }, + { + "from": 756, + "to": 756, + "id": "0x30" + }, + { + "from": 757, + "to": 758, + "id": "0x30" + }, + { + "from": 759, + "to": 759, + "id": "0x2D" + }, + { + "from": 760, + "to": 760, + "id": "0x2F" + }, + { + "from": 761, + "to": 761, + "id": "0x2E" + }, + { + "from": 762, + "to": 763, + "id": "0x32" + }, + { + "from": 764, + "to": 764, + "id": "0x33" + }, + { + "from": 765, + "to": 765, + "id": "0x33" + }, + { + "from": 766, + "to": 766, + "id": "0x35" + }, + { + "from": 767, + "to": 767, + "id": "0x35" + }, + { + "from": 768, + "to": 769, + "id": "0x37" + }, + { + "from": 770, + "to": 770, + "id": "0x36" + }, + { + "from": 771, + "to": 772, + "id": "0x36" + }, + { + "from": 773, + "to": 774, + "id": "0x3B" + }, + { + "from": 775, + "to": 776, + "id": "0x3D" + } + ], + "play.toClient.ping_response": [ + { + "from": 764, + "to": 764, + "id": "0x34" + }, + { + "from": 765, + "to": 765, + "id": "0x34" + }, + { + "from": 766, + "to": 766, + "id": "0x36" + }, + { + "from": 767, + "to": 767, + "id": "0x36" + }, + { + "from": 768, + "to": 769, + "id": "0x38" + }, + { + "from": 770, + "to": 770, + "id": "0x37" + }, + { + "from": 771, + "to": 772, + "id": "0x37" + }, + { + "from": 773, + "to": 774, + "id": "0x3C" + }, + { + "from": 775, + "to": 776, + "id": "0x3E" + } + ], + "play.toClient.player_chat": [ + { + "from": 759, + "to": 759, + "id": "0x30" + }, + { + "from": 760, + "to": 760, + "id": "0x33" + }, + { + "from": 761, + "to": 761, + "id": "0x31" + }, + { + "from": 762, + "to": 763, + "id": "0x35" + }, + { + "from": 764, + "to": 764, + "id": "0x37" + }, + { + "from": 765, + "to": 765, + "id": "0x37" + }, + { + "from": 766, + "to": 766, + "id": "0x39" + }, + { + "from": 767, + "to": 767, + "id": "0x39" + }, + { + "from": 768, + "to": 769, + "id": "0x3B" + }, + { + "from": 770, + "to": 770, + "id": "0x3A" + }, + { + "from": 771, + "to": 772, + "id": "0x3A" + }, + { + "from": 773, + "to": 774, + "id": "0x3F" + }, + { + "from": 775, + "to": 776, + "id": "0x41" + } + ], + "play.toClient.player_info": [ + { + "from": 735, + "to": 736, + "id": "0x33" + }, + { + "from": 751, + "to": 754, + "id": "0x32" + }, + { + "from": 755, + "to": 755, + "id": "0x36" + }, + { + "from": 756, + "to": 756, + "id": "0x36" + }, + { + "from": 757, + "to": 758, + "id": "0x36" + }, + { + "from": 759, + "to": 759, + "id": "0x34" + }, + { + "from": 760, + "to": 760, + "id": "0x37" + }, + { + "from": 761, + "to": 761, + "id": "0x36" + }, + { + "from": 762, + "to": 763, + "id": "0x3A" + }, + { + "from": 764, + "to": 764, + "id": "0x3C" + }, + { + "from": 765, + "to": 765, + "id": "0x3C" + }, + { + "from": 766, + "to": 766, + "id": "0x3E" + }, + { + "from": 767, + "to": 767, + "id": "0x3E" + }, + { + "from": 768, + "to": 769, + "id": "0x40" + }, + { + "from": 770, + "to": 770, + "id": "0x3F" + }, + { + "from": 771, + "to": 772, + "id": "0x3F" + }, + { + "from": 773, + "to": 774, + "id": "0x44" + }, + { + "from": 775, + "to": 776, + "id": "0x46" + } + ], + "play.toClient.player_remove": [ + { + "from": 761, + "to": 761, + "id": "0x35" + }, + { + "from": 762, + "to": 763, + "id": "0x39" + }, + { + "from": 764, + "to": 764, + "id": "0x3B" + }, + { + "from": 765, + "to": 765, + "id": "0x3B" + }, + { + "from": 766, + "to": 766, + "id": "0x3D" + }, + { + "from": 767, + "to": 767, + "id": "0x3D" + }, + { + "from": 768, + "to": 769, + "id": "0x3F" + }, + { + "from": 770, + "to": 770, + "id": "0x3E" + }, + { + "from": 771, + "to": 772, + "id": "0x3E" + }, + { + "from": 773, + "to": 774, + "id": "0x43" + }, + { + "from": 775, + "to": 776, + "id": "0x45" + } + ], + "play.toClient.player_rotation": [ + { + "from": 768, + "to": 769, + "id": "0x43" + }, + { + "from": 770, + "to": 770, + "id": "0x42" + }, + { + "from": 771, + "to": 772, + "id": "0x42" + }, + { + "from": 773, + "to": 774, + "id": "0x47" + }, + { + "from": 775, + "to": 776, + "id": "0x49" + } + ], + "play.toClient.playerlist_header": [ + { + "from": 735, + "to": 736, + "id": "0x53" + }, + { + "from": 751, + "to": 754, + "id": "0x53" + }, + { + "from": 755, + "to": 755, + "id": "0x5E" + }, + { + "from": 756, + "to": 756, + "id": "0x5E" + }, + { + "from": 757, + "to": 758, + "id": "0x5F" + }, + { + "from": 759, + "to": 759, + "id": "0x60" + }, + { + "from": 760, + "to": 760, + "id": "0x63" + }, + { + "from": 761, + "to": 761, + "id": "0x61" + }, + { + "from": 762, + "to": 763, + "id": "0x65" + }, + { + "from": 764, + "to": 764, + "id": "0x68" + }, + { + "from": 765, + "to": 765, + "id": "0x6A" + }, + { + "from": 766, + "to": 766, + "id": "0x6D" + }, + { + "from": 767, + "to": 767, + "id": "0x6D" + }, + { + "from": 768, + "to": 769, + "id": "0x74" + }, + { + "from": 770, + "to": 770, + "id": "0x73" + }, + { + "from": 771, + "to": 772, + "id": "0x73" + }, + { + "from": 773, + "to": 774, + "id": "0x78" + }, + { + "from": 775, + "to": 776, + "id": "0x7A" + } + ], + "play.toClient.position": [ + { + "from": 735, + "to": 736, + "id": "0x35" + }, + { + "from": 751, + "to": 754, + "id": "0x34" + }, + { + "from": 755, + "to": 755, + "id": "0x38" + }, + { + "from": 756, + "to": 756, + "id": "0x38" + }, + { + "from": 757, + "to": 758, + "id": "0x38" + }, + { + "from": 759, + "to": 759, + "id": "0x36" + }, + { + "from": 760, + "to": 760, + "id": "0x39" + }, + { + "from": 761, + "to": 761, + "id": "0x38" + }, + { + "from": 762, + "to": 763, + "id": "0x3C" + }, + { + "from": 764, + "to": 764, + "id": "0x3E" + }, + { + "from": 765, + "to": 765, + "id": "0x3E" + }, + { + "from": 766, + "to": 766, + "id": "0x40" + }, + { + "from": 767, + "to": 767, + "id": "0x40" + }, + { + "from": 768, + "to": 769, + "id": "0x42" + }, + { + "from": 770, + "to": 770, + "id": "0x41" + }, + { + "from": 771, + "to": 772, + "id": "0x41" + }, + { + "from": 773, + "to": 774, + "id": "0x46" + }, + { + "from": 775, + "to": 776, + "id": "0x48" + } + ], + "play.toClient.profileless_chat": [ + { + "from": 761, + "to": 761, + "id": "0x18" + }, + { + "from": 762, + "to": 763, + "id": "0x1B" + }, + { + "from": 764, + "to": 764, + "id": "0x1C" + }, + { + "from": 765, + "to": 765, + "id": "0x1C" + }, + { + "from": 766, + "to": 766, + "id": "0x1E" + }, + { + "from": 767, + "to": 767, + "id": "0x1E" + }, + { + "from": 768, + "to": 769, + "id": "0x1E" + }, + { + "from": 770, + "to": 770, + "id": "0x1D" + }, + { + "from": 771, + "to": 772, + "id": "0x1D" + }, + { + "from": 773, + "to": 774, + "id": "0x21" + }, + { + "from": 775, + "to": 776, + "id": "0x21" + } + ], + "play.toClient.recipe_book_add": [ + { + "from": 768, + "to": 769, + "id": "0x44" + }, + { + "from": 770, + "to": 770, + "id": "0x43" + }, + { + "from": 771, + "to": 772, + "id": "0x43" + }, + { + "from": 773, + "to": 774, + "id": "0x48" + }, + { + "from": 775, + "to": 776, + "id": "0x4A" + } + ], + "play.toClient.recipe_book_remove": [ + { + "from": 768, + "to": 769, + "id": "0x45" + }, + { + "from": 770, + "to": 770, + "id": "0x44" + }, + { + "from": 771, + "to": 772, + "id": "0x44" + }, + { + "from": 773, + "to": 774, + "id": "0x49" + }, + { + "from": 775, + "to": 776, + "id": "0x4B" + } + ], + "play.toClient.recipe_book_settings": [ + { + "from": 768, + "to": 769, + "id": "0x46" + }, + { + "from": 770, + "to": 770, + "id": "0x45" + }, + { + "from": 771, + "to": 772, + "id": "0x45" + }, + { + "from": 773, + "to": 774, + "id": "0x4A" + }, + { + "from": 775, + "to": 776, + "id": "0x4C" + } + ], + "play.toClient.rel_entity_move": [ + { + "from": 735, + "to": 736, + "id": "0x28" + }, + { + "from": 751, + "to": 754, + "id": "0x27" + }, + { + "from": 755, + "to": 755, + "id": "0x29" + }, + { + "from": 756, + "to": 756, + "id": "0x29" + }, + { + "from": 757, + "to": 758, + "id": "0x29" + }, + { + "from": 759, + "to": 759, + "id": "0x26" + }, + { + "from": 760, + "to": 760, + "id": "0x28" + }, + { + "from": 761, + "to": 761, + "id": "0x27" + }, + { + "from": 762, + "to": 763, + "id": "0x2B" + }, + { + "from": 764, + "to": 764, + "id": "0x2C" + }, + { + "from": 765, + "to": 765, + "id": "0x2C" + }, + { + "from": 766, + "to": 766, + "id": "0x2E" + }, + { + "from": 767, + "to": 767, + "id": "0x2E" + }, + { + "from": 768, + "to": 769, + "id": "0x2F" + }, + { + "from": 770, + "to": 770, + "id": "0x2E" + }, + { + "from": 771, + "to": 772, + "id": "0x2E" + }, + { + "from": 773, + "to": 774, + "id": "0x33" + }, + { + "from": 775, + "to": 776, + "id": "0x35" + } + ], + "play.toClient.remove_entity_effect": [ + { + "from": 735, + "to": 736, + "id": "0x38" + }, + { + "from": 751, + "to": 754, + "id": "0x37" + }, + { + "from": 755, + "to": 755, + "id": "0x3B" + }, + { + "from": 756, + "to": 756, + "id": "0x3B" + }, + { + "from": 757, + "to": 758, + "id": "0x3B" + }, + { + "from": 759, + "to": 759, + "id": "0x39" + }, + { + "from": 760, + "to": 760, + "id": "0x3C" + }, + { + "from": 761, + "to": 761, + "id": "0x3B" + }, + { + "from": 762, + "to": 763, + "id": "0x3F" + }, + { + "from": 764, + "to": 764, + "id": "0x41" + }, + { + "from": 765, + "to": 765, + "id": "0x41" + }, + { + "from": 766, + "to": 766, + "id": "0x43" + }, + { + "from": 767, + "to": 767, + "id": "0x43" + }, + { + "from": 768, + "to": 769, + "id": "0x48" + }, + { + "from": 770, + "to": 770, + "id": "0x47" + }, + { + "from": 771, + "to": 772, + "id": "0x47" + }, + { + "from": 773, + "to": 774, + "id": "0x4C" + }, + { + "from": 775, + "to": 776, + "id": "0x4E" + } + ], + "play.toClient.remove_resource_pack": [ + { + "from": 765, + "to": 765, + "id": "0x43" + }, + { + "from": 766, + "to": 766, + "id": "0x45" + }, + { + "from": 767, + "to": 767, + "id": "0x45" + }, + { + "from": 768, + "to": 769, + "id": "0x4A" + }, + { + "from": 770, + "to": 770, + "id": "0x49" + }, + { + "from": 771, + "to": 772, + "id": "0x49" + }, + { + "from": 773, + "to": 774, + "id": "0x4E" + }, + { + "from": 775, + "to": 776, + "id": "0x50" + } + ], + "play.toClient.reset_score": [ + { + "from": 765, + "to": 765, + "id": "0x42" + }, + { + "from": 766, + "to": 766, + "id": "0x44" + }, + { + "from": 767, + "to": 767, + "id": "0x44" + }, + { + "from": 768, + "to": 769, + "id": "0x49" + }, + { + "from": 770, + "to": 770, + "id": "0x48" + }, + { + "from": 771, + "to": 772, + "id": "0x48" + }, + { + "from": 773, + "to": 774, + "id": "0x4D" + }, + { + "from": 775, + "to": 776, + "id": "0x4F" + } + ], + "play.toClient.resource_pack_send": [ + { + "from": 735, + "to": 736, + "id": "0x39" + }, + { + "from": 751, + "to": 754, + "id": "0x38" + }, + { + "from": 755, + "to": 755, + "id": "0x3C" + }, + { + "from": 756, + "to": 756, + "id": "0x3C" + }, + { + "from": 757, + "to": 758, + "id": "0x3C" + }, + { + "from": 759, + "to": 759, + "id": "0x3A" + }, + { + "from": 760, + "to": 760, + "id": "0x3D" + }, + { + "from": 761, + "to": 761, + "id": "0x3C" + }, + { + "from": 762, + "to": 763, + "id": "0x40" + }, + { + "from": 764, + "to": 764, + "id": "0x42" + } + ], + "play.toClient.respawn": [ + { + "from": 735, + "to": 736, + "id": "0x3A" + }, + { + "from": 751, + "to": 754, + "id": "0x39" + }, + { + "from": 755, + "to": 755, + "id": "0x3D" + }, + { + "from": 756, + "to": 756, + "id": "0x3D" + }, + { + "from": 757, + "to": 758, + "id": "0x3D" + }, + { + "from": 759, + "to": 759, + "id": "0x3B" + }, + { + "from": 760, + "to": 760, + "id": "0x3E" + }, + { + "from": 761, + "to": 761, + "id": "0x3D" + }, + { + "from": 762, + "to": 763, + "id": "0x41" + }, + { + "from": 764, + "to": 764, + "id": "0x43" + }, + { + "from": 765, + "to": 765, + "id": "0x45" + }, + { + "from": 766, + "to": 766, + "id": "0x47" + }, + { + "from": 767, + "to": 767, + "id": "0x47" + }, + { + "from": 768, + "to": 769, + "id": "0x4C" + }, + { + "from": 770, + "to": 770, + "id": "0x4B" + }, + { + "from": 771, + "to": 772, + "id": "0x4B" + }, + { + "from": 773, + "to": 774, + "id": "0x50" + }, + { + "from": 775, + "to": 776, + "id": "0x52" + } + ], + "play.toClient.scoreboard_display_objective": [ + { + "from": 735, + "to": 736, + "id": "0x43" + }, + { + "from": 751, + "to": 754, + "id": "0x43" + }, + { + "from": 755, + "to": 755, + "id": "0x4C" + }, + { + "from": 756, + "to": 756, + "id": "0x4C" + }, + { + "from": 757, + "to": 758, + "id": "0x4C" + }, + { + "from": 759, + "to": 759, + "id": "0x4C" + }, + { + "from": 760, + "to": 760, + "id": "0x4F" + }, + { + "from": 761, + "to": 761, + "id": "0x4D" + }, + { + "from": 762, + "to": 763, + "id": "0x51" + }, + { + "from": 764, + "to": 764, + "id": "0x53" + }, + { + "from": 765, + "to": 765, + "id": "0x55" + }, + { + "from": 766, + "to": 766, + "id": "0x57" + }, + { + "from": 767, + "to": 767, + "id": "0x57" + }, + { + "from": 768, + "to": 769, + "id": "0x5C" + }, + { + "from": 770, + "to": 770, + "id": "0x5B" + }, + { + "from": 771, + "to": 772, + "id": "0x5B" + }, + { + "from": 773, + "to": 774, + "id": "0x60" + }, + { + "from": 775, + "to": 776, + "id": "0x62" + } + ], + "play.toClient.scoreboard_objective": [ + { + "from": 735, + "to": 736, + "id": "0x4A" + }, + { + "from": 751, + "to": 754, + "id": "0x4A" + }, + { + "from": 755, + "to": 755, + "id": "0x53" + }, + { + "from": 756, + "to": 756, + "id": "0x53" + }, + { + "from": 757, + "to": 758, + "id": "0x53" + }, + { + "from": 759, + "to": 759, + "id": "0x53" + }, + { + "from": 760, + "to": 760, + "id": "0x56" + }, + { + "from": 761, + "to": 761, + "id": "0x54" + }, + { + "from": 762, + "to": 763, + "id": "0x58" + }, + { + "from": 764, + "to": 764, + "id": "0x5A" + }, + { + "from": 765, + "to": 765, + "id": "0x5C" + }, + { + "from": 766, + "to": 766, + "id": "0x5E" + }, + { + "from": 767, + "to": 767, + "id": "0x5E" + }, + { + "from": 768, + "to": 769, + "id": "0x64" + }, + { + "from": 770, + "to": 770, + "id": "0x63" + }, + { + "from": 771, + "to": 772, + "id": "0x63" + }, + { + "from": 773, + "to": 774, + "id": "0x68" + }, + { + "from": 775, + "to": 776, + "id": "0x6A" + } + ], + "play.toClient.scoreboard_score": [ + { + "from": 735, + "to": 736, + "id": "0x4D" + }, + { + "from": 751, + "to": 754, + "id": "0x4D" + }, + { + "from": 755, + "to": 755, + "id": "0x56" + }, + { + "from": 756, + "to": 756, + "id": "0x56" + }, + { + "from": 757, + "to": 758, + "id": "0x56" + }, + { + "from": 759, + "to": 759, + "id": "0x56" + }, + { + "from": 760, + "to": 760, + "id": "0x59" + }, + { + "from": 761, + "to": 761, + "id": "0x57" + }, + { + "from": 762, + "to": 763, + "id": "0x5B" + }, + { + "from": 764, + "to": 764, + "id": "0x5D" + }, + { + "from": 765, + "to": 765, + "id": "0x5F" + }, + { + "from": 766, + "to": 766, + "id": "0x61" + }, + { + "from": 767, + "to": 767, + "id": "0x61" + }, + { + "from": 768, + "to": 769, + "id": "0x68" + }, + { + "from": 770, + "to": 770, + "id": "0x67" + }, + { + "from": 771, + "to": 772, + "id": "0x67" + }, + { + "from": 773, + "to": 774, + "id": "0x6C" + }, + { + "from": 775, + "to": 776, + "id": "0x6E" + } + ], + "play.toClient.sculk_vibration_signal": [ + { + "from": 755, + "to": 755, + "id": "0x05" + }, + { + "from": 756, + "to": 756, + "id": "0x05" + }, + { + "from": 757, + "to": 758, + "id": "0x05" + } + ], + "play.toClient.select_advancement_tab": [ + { + "from": 735, + "to": 736, + "id": "0x3C" + }, + { + "from": 751, + "to": 754, + "id": "0x3C" + }, + { + "from": 755, + "to": 755, + "id": "0x40" + }, + { + "from": 756, + "to": 756, + "id": "0x40" + }, + { + "from": 757, + "to": 758, + "id": "0x40" + }, + { + "from": 759, + "to": 759, + "id": "0x3E" + }, + { + "from": 760, + "to": 760, + "id": "0x41" + }, + { + "from": 761, + "to": 761, + "id": "0x40" + }, + { + "from": 762, + "to": 763, + "id": "0x44" + }, + { + "from": 764, + "to": 764, + "id": "0x46" + }, + { + "from": 765, + "to": 765, + "id": "0x48" + }, + { + "from": 766, + "to": 766, + "id": "0x4A" + }, + { + "from": 767, + "to": 767, + "id": "0x4A" + }, + { + "from": 768, + "to": 769, + "id": "0x4F" + }, + { + "from": 770, + "to": 770, + "id": "0x4E" + }, + { + "from": 771, + "to": 772, + "id": "0x4E" + }, + { + "from": 773, + "to": 774, + "id": "0x53" + }, + { + "from": 775, + "to": 776, + "id": "0x55" + } + ], + "play.toClient.server_data": [ + { + "from": 759, + "to": 759, + "id": "0x3F" + }, + { + "from": 760, + "to": 760, + "id": "0x42" + }, + { + "from": 761, + "to": 761, + "id": "0x41" + }, + { + "from": 762, + "to": 763, + "id": "0x45" + }, + { + "from": 764, + "to": 764, + "id": "0x47" + }, + { + "from": 765, + "to": 765, + "id": "0x49" + }, + { + "from": 766, + "to": 766, + "id": "0x4B" + }, + { + "from": 767, + "to": 767, + "id": "0x4B" + }, + { + "from": 768, + "to": 769, + "id": "0x50" + }, + { + "from": 770, + "to": 770, + "id": "0x4F" + }, + { + "from": 771, + "to": 772, + "id": "0x4F" + }, + { + "from": 773, + "to": 774, + "id": "0x54" + }, + { + "from": 775, + "to": 776, + "id": "0x56" + } + ], + "play.toClient.server_links": [ + { + "from": 767, + "to": 767, + "id": "0x7B" + }, + { + "from": 768, + "to": 769, + "id": "0x82" + }, + { + "from": 770, + "to": 770, + "id": "0x82" + }, + { + "from": 771, + "to": 772, + "id": "0x82" + }, + { + "from": 773, + "to": 774, + "id": "0x87" + }, + { + "from": 775, + "to": 776, + "id": "0x89" + } + ], + "play.toClient.set_cooldown": [ + { + "from": 735, + "to": 736, + "id": "0x17" + }, + { + "from": 751, + "to": 754, + "id": "0x16" + }, + { + "from": 755, + "to": 755, + "id": "0x17" + }, + { + "from": 756, + "to": 756, + "id": "0x17" + }, + { + "from": 757, + "to": 758, + "id": "0x17" + }, + { + "from": 759, + "to": 759, + "id": "0x14" + }, + { + "from": 760, + "to": 760, + "id": "0x14" + }, + { + "from": 761, + "to": 761, + "id": "0x13" + }, + { + "from": 762, + "to": 763, + "id": "0x15" + }, + { + "from": 764, + "to": 764, + "id": "0x16" + }, + { + "from": 765, + "to": 765, + "id": "0x16" + }, + { + "from": 766, + "to": 766, + "id": "0x17" + }, + { + "from": 767, + "to": 767, + "id": "0x17" + }, + { + "from": 768, + "to": 769, + "id": "0x17" + }, + { + "from": 770, + "to": 770, + "id": "0x16" + }, + { + "from": 771, + "to": 772, + "id": "0x16" + }, + { + "from": 773, + "to": 774, + "id": "0x16" + }, + { + "from": 775, + "to": 776, + "id": "0x16" + } + ], + "play.toClient.set_cursor_item": [ + { + "from": 768, + "to": 769, + "id": "0x5A" + }, + { + "from": 770, + "to": 770, + "id": "0x59" + }, + { + "from": 771, + "to": 772, + "id": "0x59" + }, + { + "from": 773, + "to": 774, + "id": "0x5E" + }, + { + "from": 775, + "to": 776, + "id": "0x60" + } + ], + "play.toClient.set_passengers": [ + { + "from": 735, + "to": 736, + "id": "0x4B" + }, + { + "from": 751, + "to": 754, + "id": "0x4B" + }, + { + "from": 755, + "to": 755, + "id": "0x54" + }, + { + "from": 756, + "to": 756, + "id": "0x54" + }, + { + "from": 757, + "to": 758, + "id": "0x54" + }, + { + "from": 759, + "to": 759, + "id": "0x54" + }, + { + "from": 760, + "to": 760, + "id": "0x57" + }, + { + "from": 761, + "to": 761, + "id": "0x55" + }, + { + "from": 762, + "to": 763, + "id": "0x59" + }, + { + "from": 764, + "to": 764, + "id": "0x5B" + }, + { + "from": 765, + "to": 765, + "id": "0x5D" + }, + { + "from": 766, + "to": 766, + "id": "0x5F" + }, + { + "from": 767, + "to": 767, + "id": "0x5F" + }, + { + "from": 768, + "to": 769, + "id": "0x65" + }, + { + "from": 770, + "to": 770, + "id": "0x64" + }, + { + "from": 771, + "to": 772, + "id": "0x64" + }, + { + "from": 773, + "to": 774, + "id": "0x69" + }, + { + "from": 775, + "to": 776, + "id": "0x6B" + } + ], + "play.toClient.set_player_inventory": [ + { + "from": 768, + "to": 769, + "id": "0x66" + }, + { + "from": 770, + "to": 770, + "id": "0x65" + }, + { + "from": 771, + "to": 772, + "id": "0x65" + }, + { + "from": 773, + "to": 774, + "id": "0x6A" + }, + { + "from": 775, + "to": 776, + "id": "0x6C" + } + ], + "play.toClient.set_projectile_power": [ + { + "from": 766, + "to": 766, + "id": "0x79" + }, + { + "from": 767, + "to": 767, + "id": "0x79" + }, + { + "from": 768, + "to": 769, + "id": "0x80" + }, + { + "from": 770, + "to": 770, + "id": "0x80" + }, + { + "from": 771, + "to": 772, + "id": "0x80" + }, + { + "from": 773, + "to": 774, + "id": "0x85" + }, + { + "from": 775, + "to": 776, + "id": "0x87" + } + ], + "play.toClient.set_slot": [ + { + "from": 735, + "to": 736, + "id": "0x16" + }, + { + "from": 751, + "to": 754, + "id": "0x15" + }, + { + "from": 755, + "to": 755, + "id": "0x16" + }, + { + "from": 756, + "to": 756, + "id": "0x16" + }, + { + "from": 757, + "to": 758, + "id": "0x16" + }, + { + "from": 759, + "to": 759, + "id": "0x13" + }, + { + "from": 760, + "to": 760, + "id": "0x13" + }, + { + "from": 761, + "to": 761, + "id": "0x12" + }, + { + "from": 762, + "to": 763, + "id": "0x14" + }, + { + "from": 764, + "to": 764, + "id": "0x15" + }, + { + "from": 765, + "to": 765, + "id": "0x15" + }, + { + "from": 766, + "to": 766, + "id": "0x15" + }, + { + "from": 767, + "to": 767, + "id": "0x15" + }, + { + "from": 768, + "to": 769, + "id": "0x15" + }, + { + "from": 770, + "to": 770, + "id": "0x14" + }, + { + "from": 771, + "to": 772, + "id": "0x14" + }, + { + "from": 773, + "to": 774, + "id": "0x14" + }, + { + "from": 775, + "to": 776, + "id": "0x14" + } + ], + "play.toClient.set_ticking_state": [ + { + "from": 765, + "to": 765, + "id": "0x6E" + }, + { + "from": 766, + "to": 766, + "id": "0x71" + }, + { + "from": 767, + "to": 767, + "id": "0x71" + }, + { + "from": 768, + "to": 769, + "id": "0x78" + }, + { + "from": 770, + "to": 770, + "id": "0x78" + }, + { + "from": 771, + "to": 772, + "id": "0x78" + }, + { + "from": 773, + "to": 774, + "id": "0x7D" + }, + { + "from": 775, + "to": 776, + "id": "0x7F" + } + ], + "play.toClient.set_title_subtitle": [ + { + "from": 755, + "to": 755, + "id": "0x57" + }, + { + "from": 756, + "to": 756, + "id": "0x57" + }, + { + "from": 757, + "to": 758, + "id": "0x58" + }, + { + "from": 759, + "to": 759, + "id": "0x58" + }, + { + "from": 760, + "to": 760, + "id": "0x5B" + }, + { + "from": 761, + "to": 761, + "id": "0x59" + }, + { + "from": 762, + "to": 763, + "id": "0x5D" + }, + { + "from": 764, + "to": 764, + "id": "0x5F" + }, + { + "from": 765, + "to": 765, + "id": "0x61" + }, + { + "from": 766, + "to": 766, + "id": "0x63" + }, + { + "from": 767, + "to": 767, + "id": "0x63" + }, + { + "from": 768, + "to": 769, + "id": "0x6A" + }, + { + "from": 770, + "to": 770, + "id": "0x69" + }, + { + "from": 771, + "to": 772, + "id": "0x69" + }, + { + "from": 773, + "to": 774, + "id": "0x6E" + }, + { + "from": 775, + "to": 776, + "id": "0x70" + } + ], + "play.toClient.set_title_text": [ + { + "from": 755, + "to": 755, + "id": "0x59" + }, + { + "from": 756, + "to": 756, + "id": "0x59" + }, + { + "from": 757, + "to": 758, + "id": "0x5A" + }, + { + "from": 759, + "to": 759, + "id": "0x5A" + }, + { + "from": 760, + "to": 760, + "id": "0x5D" + }, + { + "from": 761, + "to": 761, + "id": "0x5B" + }, + { + "from": 762, + "to": 763, + "id": "0x5F" + }, + { + "from": 764, + "to": 764, + "id": "0x61" + }, + { + "from": 765, + "to": 765, + "id": "0x63" + }, + { + "from": 766, + "to": 766, + "id": "0x65" + }, + { + "from": 767, + "to": 767, + "id": "0x65" + }, + { + "from": 768, + "to": 769, + "id": "0x6C" + }, + { + "from": 770, + "to": 770, + "id": "0x6B" + }, + { + "from": 771, + "to": 772, + "id": "0x6B" + }, + { + "from": 773, + "to": 774, + "id": "0x70" + }, + { + "from": 775, + "to": 776, + "id": "0x72" + } + ], + "play.toClient.set_title_time": [ + { + "from": 755, + "to": 755, + "id": "0x5A" + }, + { + "from": 756, + "to": 756, + "id": "0x5A" + }, + { + "from": 757, + "to": 758, + "id": "0x5B" + }, + { + "from": 759, + "to": 759, + "id": "0x5B" + }, + { + "from": 760, + "to": 760, + "id": "0x5E" + }, + { + "from": 761, + "to": 761, + "id": "0x5C" + }, + { + "from": 762, + "to": 763, + "id": "0x60" + }, + { + "from": 764, + "to": 764, + "id": "0x62" + }, + { + "from": 765, + "to": 765, + "id": "0x64" + }, + { + "from": 766, + "to": 766, + "id": "0x66" + }, + { + "from": 767, + "to": 767, + "id": "0x66" + }, + { + "from": 768, + "to": 769, + "id": "0x6D" + }, + { + "from": 770, + "to": 770, + "id": "0x6C" + }, + { + "from": 771, + "to": 772, + "id": "0x6C" + }, + { + "from": 773, + "to": 774, + "id": "0x71" + }, + { + "from": 775, + "to": 776, + "id": "0x73" + } + ], + "play.toClient.should_display_chat_preview": [ + { + "from": 759, + "to": 759, + "id": "0x4B" + }, + { + "from": 760, + "to": 760, + "id": "0x4E" + } + ], + "play.toClient.show_dialog": [ + { + "from": 771, + "to": 772, + "id": "0x85" + }, + { + "from": 773, + "to": 774, + "id": "0x8A" + }, + { + "from": 775, + "to": 776, + "id": "0x8C" + } + ], + "play.toClient.simulation_distance": [ + { + "from": 757, + "to": 758, + "id": "0x57" + }, + { + "from": 759, + "to": 759, + "id": "0x57" + }, + { + "from": 760, + "to": 760, + "id": "0x5A" + }, + { + "from": 761, + "to": 761, + "id": "0x58" + }, + { + "from": 762, + "to": 763, + "id": "0x5C" + }, + { + "from": 764, + "to": 764, + "id": "0x5E" + }, + { + "from": 765, + "to": 765, + "id": "0x60" + }, + { + "from": 766, + "to": 766, + "id": "0x62" + }, + { + "from": 767, + "to": 767, + "id": "0x62" + }, + { + "from": 768, + "to": 769, + "id": "0x69" + }, + { + "from": 770, + "to": 770, + "id": "0x68" + }, + { + "from": 771, + "to": 772, + "id": "0x68" + }, + { + "from": 773, + "to": 774, + "id": "0x6D" + }, + { + "from": 775, + "to": 776, + "id": "0x6F" + } + ], + "play.toClient.sound_effect": [ + { + "from": 735, + "to": 736, + "id": "0x51" + }, + { + "from": 751, + "to": 754, + "id": "0x51" + }, + { + "from": 755, + "to": 755, + "id": "0x5C" + }, + { + "from": 756, + "to": 756, + "id": "0x5C" + }, + { + "from": 757, + "to": 758, + "id": "0x5D" + }, + { + "from": 759, + "to": 759, + "id": "0x5D" + }, + { + "from": 760, + "to": 760, + "id": "0x60" + }, + { + "from": 761, + "to": 761, + "id": "0x5E" + }, + { + "from": 762, + "to": 763, + "id": "0x62" + }, + { + "from": 764, + "to": 764, + "id": "0x64" + }, + { + "from": 765, + "to": 765, + "id": "0x66" + }, + { + "from": 766, + "to": 766, + "id": "0x68" + }, + { + "from": 767, + "to": 767, + "id": "0x68" + }, + { + "from": 768, + "to": 769, + "id": "0x6F" + }, + { + "from": 770, + "to": 770, + "id": "0x6E" + }, + { + "from": 771, + "to": 772, + "id": "0x6E" + }, + { + "from": 773, + "to": 774, + "id": "0x73" + }, + { + "from": 775, + "to": 776, + "id": "0x75" + } + ], + "play.toClient.spawn_entity": [ + { + "from": 735, + "to": 736, + "id": "0x00" + }, + { + "from": 751, + "to": 754, + "id": "0x00" + }, + { + "from": 755, + "to": 755, + "id": "0x00" + }, + { + "from": 756, + "to": 756, + "id": "0x00" + }, + { + "from": 757, + "to": 758, + "id": "0x00" + }, + { + "from": 759, + "to": 759, + "id": "0x00" + }, + { + "from": 760, + "to": 760, + "id": "0x00" + }, + { + "from": 761, + "to": 761, + "id": "0x00" + }, + { + "from": 762, + "to": 763, + "id": "0x01" + }, + { + "from": 764, + "to": 764, + "id": "0x01" + }, + { + "from": 765, + "to": 765, + "id": "0x01" + }, + { + "from": 766, + "to": 766, + "id": "0x01" + }, + { + "from": 767, + "to": 767, + "id": "0x01" + }, + { + "from": 768, + "to": 769, + "id": "0x01" + }, + { + "from": 770, + "to": 770, + "id": "0x01" + }, + { + "from": 771, + "to": 772, + "id": "0x01" + }, + { + "from": 773, + "to": 774, + "id": "0x01" + }, + { + "from": 775, + "to": 776, + "id": "0x01" + } + ], + "play.toClient.spawn_entity_experience_orb": [ + { + "from": 735, + "to": 736, + "id": "0x01" + }, + { + "from": 751, + "to": 754, + "id": "0x01" + }, + { + "from": 755, + "to": 755, + "id": "0x01" + }, + { + "from": 756, + "to": 756, + "id": "0x01" + }, + { + "from": 757, + "to": 758, + "id": "0x01" + }, + { + "from": 759, + "to": 759, + "id": "0x01" + }, + { + "from": 760, + "to": 760, + "id": "0x01" + }, + { + "from": 761, + "to": 761, + "id": "0x01" + }, + { + "from": 762, + "to": 763, + "id": "0x02" + }, + { + "from": 764, + "to": 764, + "id": "0x02" + }, + { + "from": 765, + "to": 765, + "id": "0x02" + }, + { + "from": 766, + "to": 766, + "id": "0x02" + }, + { + "from": 767, + "to": 767, + "id": "0x02" + }, + { + "from": 768, + "to": 769, + "id": "0x02" + } + ], + "play.toClient.spawn_entity_living": [ + { + "from": 735, + "to": 736, + "id": "0x02" + }, + { + "from": 751, + "to": 754, + "id": "0x02" + }, + { + "from": 755, + "to": 755, + "id": "0x02" + }, + { + "from": 756, + "to": 756, + "id": "0x02" + }, + { + "from": 757, + "to": 758, + "id": "0x02" + } + ], + "play.toClient.spawn_entity_painting": [ + { + "from": 735, + "to": 736, + "id": "0x03" + }, + { + "from": 751, + "to": 754, + "id": "0x03" + }, + { + "from": 755, + "to": 755, + "id": "0x03" + }, + { + "from": 756, + "to": 756, + "id": "0x03" + }, + { + "from": 757, + "to": 758, + "id": "0x03" + } + ], + "play.toClient.spawn_position": [ + { + "from": 735, + "to": 736, + "id": "0x42" + }, + { + "from": 751, + "to": 754, + "id": "0x42" + }, + { + "from": 755, + "to": 755, + "id": "0x4B" + }, + { + "from": 756, + "to": 756, + "id": "0x4B" + }, + { + "from": 757, + "to": 758, + "id": "0x4B" + }, + { + "from": 759, + "to": 759, + "id": "0x4A" + }, + { + "from": 760, + "to": 760, + "id": "0x4D" + }, + { + "from": 761, + "to": 761, + "id": "0x4C" + }, + { + "from": 762, + "to": 763, + "id": "0x50" + }, + { + "from": 764, + "to": 764, + "id": "0x52" + }, + { + "from": 765, + "to": 765, + "id": "0x54" + }, + { + "from": 766, + "to": 766, + "id": "0x56" + }, + { + "from": 767, + "to": 767, + "id": "0x56" + }, + { + "from": 768, + "to": 769, + "id": "0x5B" + }, + { + "from": 770, + "to": 770, + "id": "0x5A" + }, + { + "from": 771, + "to": 772, + "id": "0x5A" + }, + { + "from": 773, + "to": 774, + "id": "0x5F" + }, + { + "from": 775, + "to": 776, + "id": "0x61" + } + ], + "play.toClient.start_configuration": [ + { + "from": 764, + "to": 764, + "id": "0x65" + }, + { + "from": 765, + "to": 765, + "id": "0x67" + }, + { + "from": 766, + "to": 766, + "id": "0x69" + }, + { + "from": 767, + "to": 767, + "id": "0x69" + }, + { + "from": 768, + "to": 769, + "id": "0x70" + }, + { + "from": 770, + "to": 770, + "id": "0x6F" + }, + { + "from": 771, + "to": 772, + "id": "0x6F" + }, + { + "from": 773, + "to": 774, + "id": "0x74" + }, + { + "from": 775, + "to": 776, + "id": "0x76" + } + ], + "play.toClient.statistics": [ + { + "from": 735, + "to": 736, + "id": "0x06" + }, + { + "from": 751, + "to": 754, + "id": "0x06" + }, + { + "from": 755, + "to": 755, + "id": "0x07" + }, + { + "from": 756, + "to": 756, + "id": "0x07" + }, + { + "from": 757, + "to": 758, + "id": "0x07" + }, + { + "from": 759, + "to": 759, + "id": "0x04" + }, + { + "from": 760, + "to": 760, + "id": "0x04" + }, + { + "from": 761, + "to": 761, + "id": "0x04" + }, + { + "from": 762, + "to": 763, + "id": "0x05" + }, + { + "from": 764, + "to": 764, + "id": "0x04" + }, + { + "from": 765, + "to": 765, + "id": "0x04" + }, + { + "from": 766, + "to": 766, + "id": "0x04" + }, + { + "from": 767, + "to": 767, + "id": "0x04" + }, + { + "from": 768, + "to": 769, + "id": "0x04" + }, + { + "from": 770, + "to": 770, + "id": "0x03" + }, + { + "from": 771, + "to": 772, + "id": "0x03" + }, + { + "from": 773, + "to": 774, + "id": "0x03" + }, + { + "from": 775, + "to": 776, + "id": "0x03" + } + ], + "play.toClient.step_tick": [ + { + "from": 765, + "to": 765, + "id": "0x6F" + }, + { + "from": 766, + "to": 766, + "id": "0x72" + }, + { + "from": 767, + "to": 767, + "id": "0x72" + }, + { + "from": 768, + "to": 769, + "id": "0x79" + }, + { + "from": 770, + "to": 770, + "id": "0x79" + }, + { + "from": 771, + "to": 772, + "id": "0x79" + }, + { + "from": 773, + "to": 774, + "id": "0x7E" + }, + { + "from": 775, + "to": 776, + "id": "0x80" + } + ], + "play.toClient.stop_sound": [ + { + "from": 735, + "to": 736, + "id": "0x52" + }, + { + "from": 751, + "to": 754, + "id": "0x52" + }, + { + "from": 755, + "to": 755, + "id": "0x5D" + }, + { + "from": 756, + "to": 756, + "id": "0x5D" + }, + { + "from": 757, + "to": 758, + "id": "0x5E" + }, + { + "from": 759, + "to": 759, + "id": "0x5E" + }, + { + "from": 760, + "to": 760, + "id": "0x61" + }, + { + "from": 761, + "to": 761, + "id": "0x5F" + }, + { + "from": 762, + "to": 763, + "id": "0x63" + }, + { + "from": 764, + "to": 764, + "id": "0x66" + }, + { + "from": 765, + "to": 765, + "id": "0x68" + }, + { + "from": 766, + "to": 766, + "id": "0x6A" + }, + { + "from": 767, + "to": 767, + "id": "0x6A" + }, + { + "from": 768, + "to": 769, + "id": "0x71" + }, + { + "from": 770, + "to": 770, + "id": "0x70" + }, + { + "from": 771, + "to": 772, + "id": "0x70" + }, + { + "from": 773, + "to": 774, + "id": "0x75" + }, + { + "from": 775, + "to": 776, + "id": "0x77" + } + ], + "play.toClient.store_cookie": [ + { + "from": 766, + "to": 766, + "id": "0x6B" + }, + { + "from": 767, + "to": 767, + "id": "0x6B" + }, + { + "from": 768, + "to": 769, + "id": "0x72" + }, + { + "from": 770, + "to": 770, + "id": "0x71" + }, + { + "from": 771, + "to": 772, + "id": "0x71" + }, + { + "from": 773, + "to": 774, + "id": "0x76" + }, + { + "from": 775, + "to": 776, + "id": "0x78" + } + ], + "play.toClient.sync_entity_position": [ + { + "from": 768, + "to": 769, + "id": "0x20" + }, + { + "from": 770, + "to": 770, + "id": "0x1F" + }, + { + "from": 771, + "to": 772, + "id": "0x1F" + }, + { + "from": 773, + "to": 774, + "id": "0x23" + }, + { + "from": 775, + "to": 776, + "id": "0x23" + } + ], + "play.toClient.system_chat": [ + { + "from": 759, + "to": 759, + "id": "0x5F" + }, + { + "from": 760, + "to": 760, + "id": "0x62" + }, + { + "from": 761, + "to": 761, + "id": "0x60" + }, + { + "from": 762, + "to": 763, + "id": "0x64" + }, + { + "from": 764, + "to": 764, + "id": "0x67" + }, + { + "from": 765, + "to": 765, + "id": "0x69" + }, + { + "from": 766, + "to": 766, + "id": "0x6C" + }, + { + "from": 767, + "to": 767, + "id": "0x6C" + }, + { + "from": 768, + "to": 769, + "id": "0x73" + }, + { + "from": 770, + "to": 770, + "id": "0x72" + }, + { + "from": 771, + "to": 772, + "id": "0x72" + }, + { + "from": 773, + "to": 774, + "id": "0x77" + }, + { + "from": 775, + "to": 776, + "id": "0x79" + } + ], + "play.toClient.tab_complete": [ + { + "from": 735, + "to": 736, + "id": "0x10" + }, + { + "from": 751, + "to": 754, + "id": "0x0F" + }, + { + "from": 755, + "to": 755, + "id": "0x11" + }, + { + "from": 756, + "to": 756, + "id": "0x11" + }, + { + "from": 757, + "to": 758, + "id": "0x11" + }, + { + "from": 759, + "to": 759, + "id": "0x0E" + }, + { + "from": 760, + "to": 760, + "id": "0x0E" + }, + { + "from": 761, + "to": 761, + "id": "0x0D" + }, + { + "from": 762, + "to": 763, + "id": "0x0F" + }, + { + "from": 764, + "to": 764, + "id": "0x10" + }, + { + "from": 765, + "to": 765, + "id": "0x10" + }, + { + "from": 766, + "to": 766, + "id": "0x10" + }, + { + "from": 767, + "to": 767, + "id": "0x10" + }, + { + "from": 768, + "to": 769, + "id": "0x10" + }, + { + "from": 770, + "to": 770, + "id": "0x0F" + }, + { + "from": 771, + "to": 772, + "id": "0x0F" + }, + { + "from": 773, + "to": 774, + "id": "0x0F" + }, + { + "from": 775, + "to": 776, + "id": "0x0F" + } + ], + "play.toClient.tags": [ + { + "from": 735, + "to": 736, + "id": "0x5B" + }, + { + "from": 751, + "to": 754, + "id": "0x5B" + }, + { + "from": 755, + "to": 755, + "id": "0x66" + }, + { + "from": 756, + "to": 756, + "id": "0x66" + }, + { + "from": 757, + "to": 758, + "id": "0x67" + }, + { + "from": 759, + "to": 759, + "id": "0x68" + }, + { + "from": 760, + "to": 760, + "id": "0x6B" + }, + { + "from": 761, + "to": 761, + "id": "0x6A" + }, + { + "from": 762, + "to": 763, + "id": "0x6E" + }, + { + "from": 764, + "to": 764, + "id": "0x70" + }, + { + "from": 765, + "to": 765, + "id": "0x74" + }, + { + "from": 766, + "to": 766, + "id": "0x78" + }, + { + "from": 767, + "to": 767, + "id": "0x78" + }, + { + "from": 768, + "to": 769, + "id": "0x7F" + }, + { + "from": 770, + "to": 770, + "id": "0x7F" + }, + { + "from": 771, + "to": 772, + "id": "0x7F" + }, + { + "from": 773, + "to": 774, + "id": "0x84" + }, + { + "from": 775, + "to": 776, + "id": "0x86" + } + ], + "play.toClient.teams": [ + { + "from": 735, + "to": 736, + "id": "0x4C" + }, + { + "from": 751, + "to": 754, + "id": "0x4C" + }, + { + "from": 755, + "to": 755, + "id": "0x55" + }, + { + "from": 756, + "to": 756, + "id": "0x55" + }, + { + "from": 757, + "to": 758, + "id": "0x55" + }, + { + "from": 759, + "to": 759, + "id": "0x55" + }, + { + "from": 760, + "to": 760, + "id": "0x58" + }, + { + "from": 761, + "to": 761, + "id": "0x56" + }, + { + "from": 762, + "to": 763, + "id": "0x5A" + }, + { + "from": 764, + "to": 764, + "id": "0x5C" + }, + { + "from": 765, + "to": 765, + "id": "0x5E" + }, + { + "from": 766, + "to": 766, + "id": "0x60" + }, + { + "from": 767, + "to": 767, + "id": "0x60" + }, + { + "from": 768, + "to": 769, + "id": "0x67" + }, + { + "from": 770, + "to": 770, + "id": "0x66" + }, + { + "from": 771, + "to": 772, + "id": "0x66" + }, + { + "from": 773, + "to": 774, + "id": "0x6B" + }, + { + "from": 775, + "to": 776, + "id": "0x6D" + } + ], + "play.toClient.test_instance_block_status": [ + { + "from": 770, + "to": 770, + "id": "0x77" + }, + { + "from": 771, + "to": 772, + "id": "0x77" + }, + { + "from": 773, + "to": 774, + "id": "0x7C" + }, + { + "from": 775, + "to": 776, + "id": "0x7E" + } + ], + "play.toClient.tile_entity_data": [ + { + "from": 735, + "to": 736, + "id": "0x09" + }, + { + "from": 751, + "to": 754, + "id": "0x09" + }, + { + "from": 755, + "to": 755, + "id": "0x0A" + }, + { + "from": 756, + "to": 756, + "id": "0x0A" + }, + { + "from": 757, + "to": 758, + "id": "0x0A" + }, + { + "from": 759, + "to": 759, + "id": "0x07" + }, + { + "from": 760, + "to": 760, + "id": "0x07" + }, + { + "from": 761, + "to": 761, + "id": "0x07" + }, + { + "from": 762, + "to": 763, + "id": "0x08" + }, + { + "from": 764, + "to": 764, + "id": "0x07" + }, + { + "from": 765, + "to": 765, + "id": "0x07" + }, + { + "from": 766, + "to": 766, + "id": "0x07" + }, + { + "from": 767, + "to": 767, + "id": "0x07" + }, + { + "from": 768, + "to": 769, + "id": "0x07" + }, + { + "from": 770, + "to": 770, + "id": "0x06" + }, + { + "from": 771, + "to": 772, + "id": "0x06" + }, + { + "from": 773, + "to": 774, + "id": "0x06" + }, + { + "from": 775, + "to": 776, + "id": "0x06" + } + ], + "play.toClient.title": [ + { + "from": 735, + "to": 736, + "id": "0x4F" + }, + { + "from": 751, + "to": 754, + "id": "0x4F" + } + ], + "play.toClient.tracked_waypoint": [ + { + "from": 771, + "to": 772, + "id": "0x83" + }, + { + "from": 773, + "to": 774, + "id": "0x88" + }, + { + "from": 775, + "to": 776, + "id": "0x8A" + } + ], + "play.toClient.trade_list": [ + { + "from": 735, + "to": 736, + "id": "0x27" + }, + { + "from": 751, + "to": 754, + "id": "0x26" + }, + { + "from": 755, + "to": 755, + "id": "0x28" + }, + { + "from": 756, + "to": 756, + "id": "0x28" + }, + { + "from": 757, + "to": 758, + "id": "0x28" + }, + { + "from": 759, + "to": 759, + "id": "0x25" + }, + { + "from": 760, + "to": 760, + "id": "0x27" + }, + { + "from": 761, + "to": 761, + "id": "0x26" + }, + { + "from": 762, + "to": 763, + "id": "0x2A" + }, + { + "from": 764, + "to": 764, + "id": "0x2B" + }, + { + "from": 765, + "to": 765, + "id": "0x2B" + }, + { + "from": 766, + "to": 766, + "id": "0x2D" + }, + { + "from": 767, + "to": 767, + "id": "0x2D" + }, + { + "from": 768, + "to": 769, + "id": "0x2E" + }, + { + "from": 770, + "to": 770, + "id": "0x2D" + }, + { + "from": 771, + "to": 772, + "id": "0x2D" + }, + { + "from": 773, + "to": 774, + "id": "0x32" + }, + { + "from": 775, + "to": 776, + "id": "0x34" + } + ], + "play.toClient.transaction": [ + { + "from": 735, + "to": 736, + "id": "0x12" + }, + { + "from": 751, + "to": 754, + "id": "0x11" + } + ], + "play.toClient.transfer": [ + { + "from": 766, + "to": 766, + "id": "0x73" + }, + { + "from": 767, + "to": 767, + "id": "0x73" + }, + { + "from": 768, + "to": 769, + "id": "0x7A" + }, + { + "from": 770, + "to": 770, + "id": "0x7A" + }, + { + "from": 771, + "to": 772, + "id": "0x7A" + }, + { + "from": 773, + "to": 774, + "id": "0x7F" + }, + { + "from": 775, + "to": 776, + "id": "0x81" + } + ], + "play.toClient.unload_chunk": [ + { + "from": 735, + "to": 736, + "id": "0x1D" + }, + { + "from": 751, + "to": 754, + "id": "0x1C" + }, + { + "from": 755, + "to": 755, + "id": "0x1D" + }, + { + "from": 756, + "to": 756, + "id": "0x1D" + }, + { + "from": 757, + "to": 758, + "id": "0x1D" + }, + { + "from": 759, + "to": 759, + "id": "0x1A" + }, + { + "from": 760, + "to": 760, + "id": "0x1C" + }, + { + "from": 761, + "to": 761, + "id": "0x1B" + }, + { + "from": 762, + "to": 763, + "id": "0x1E" + }, + { + "from": 764, + "to": 764, + "id": "0x1F" + }, + { + "from": 765, + "to": 765, + "id": "0x1F" + }, + { + "from": 766, + "to": 766, + "id": "0x21" + }, + { + "from": 767, + "to": 767, + "id": "0x21" + }, + { + "from": 768, + "to": 769, + "id": "0x22" + }, + { + "from": 770, + "to": 770, + "id": "0x21" + }, + { + "from": 771, + "to": 772, + "id": "0x21" + }, + { + "from": 773, + "to": 774, + "id": "0x25" + }, + { + "from": 775, + "to": 776, + "id": "0x25" + } + ], + "play.toClient.unlock_recipes": [ + { + "from": 735, + "to": 736, + "id": "0x36" + }, + { + "from": 751, + "to": 754, + "id": "0x35" + }, + { + "from": 755, + "to": 755, + "id": "0x39" + }, + { + "from": 756, + "to": 756, + "id": "0x39" + }, + { + "from": 757, + "to": 758, + "id": "0x39" + }, + { + "from": 759, + "to": 759, + "id": "0x37" + }, + { + "from": 760, + "to": 760, + "id": "0x3A" + }, + { + "from": 761, + "to": 761, + "id": "0x39" + }, + { + "from": 762, + "to": 763, + "id": "0x3D" + }, + { + "from": 764, + "to": 764, + "id": "0x3F" + }, + { + "from": 765, + "to": 765, + "id": "0x3F" + }, + { + "from": 766, + "to": 766, + "id": "0x41" + }, + { + "from": 767, + "to": 767, + "id": "0x41" + } + ], + "play.toClient.update_health": [ + { + "from": 735, + "to": 736, + "id": "0x49" + }, + { + "from": 751, + "to": 754, + "id": "0x49" + }, + { + "from": 755, + "to": 755, + "id": "0x52" + }, + { + "from": 756, + "to": 756, + "id": "0x52" + }, + { + "from": 757, + "to": 758, + "id": "0x52" + }, + { + "from": 759, + "to": 759, + "id": "0x52" + }, + { + "from": 760, + "to": 760, + "id": "0x55" + }, + { + "from": 761, + "to": 761, + "id": "0x53" + }, + { + "from": 762, + "to": 763, + "id": "0x57" + }, + { + "from": 764, + "to": 764, + "id": "0x59" + }, + { + "from": 765, + "to": 765, + "id": "0x5B" + }, + { + "from": 766, + "to": 766, + "id": "0x5D" + }, + { + "from": 767, + "to": 767, + "id": "0x5D" + }, + { + "from": 768, + "to": 769, + "id": "0x62" + }, + { + "from": 770, + "to": 770, + "id": "0x61" + }, + { + "from": 771, + "to": 772, + "id": "0x61" + }, + { + "from": 773, + "to": 774, + "id": "0x66" + }, + { + "from": 775, + "to": 776, + "id": "0x68" + } + ], + "play.toClient.update_light": [ + { + "from": 735, + "to": 736, + "id": "0x24" + }, + { + "from": 751, + "to": 754, + "id": "0x23" + }, + { + "from": 755, + "to": 755, + "id": "0x25" + }, + { + "from": 756, + "to": 756, + "id": "0x25" + }, + { + "from": 757, + "to": 758, + "id": "0x25" + }, + { + "from": 759, + "to": 759, + "id": "0x22" + }, + { + "from": 760, + "to": 760, + "id": "0x24" + }, + { + "from": 761, + "to": 761, + "id": "0x23" + }, + { + "from": 762, + "to": 763, + "id": "0x27" + }, + { + "from": 764, + "to": 764, + "id": "0x28" + }, + { + "from": 765, + "to": 765, + "id": "0x28" + }, + { + "from": 766, + "to": 766, + "id": "0x2A" + }, + { + "from": 767, + "to": 767, + "id": "0x2A" + }, + { + "from": 768, + "to": 769, + "id": "0x2B" + }, + { + "from": 770, + "to": 770, + "id": "0x2A" + }, + { + "from": 771, + "to": 772, + "id": "0x2A" + }, + { + "from": 773, + "to": 774, + "id": "0x2F" + }, + { + "from": 775, + "to": 776, + "id": "0x30" + } + ], + "play.toClient.update_time": [ + { + "from": 735, + "to": 736, + "id": "0x4E" + }, + { + "from": 751, + "to": 754, + "id": "0x4E" + }, + { + "from": 755, + "to": 755, + "id": "0x58" + }, + { + "from": 756, + "to": 756, + "id": "0x58" + }, + { + "from": 757, + "to": 758, + "id": "0x59" + }, + { + "from": 759, + "to": 759, + "id": "0x59" + }, + { + "from": 760, + "to": 760, + "id": "0x5C" + }, + { + "from": 761, + "to": 761, + "id": "0x5A" + }, + { + "from": 762, + "to": 763, + "id": "0x5E" + }, + { + "from": 764, + "to": 764, + "id": "0x60" + }, + { + "from": 765, + "to": 765, + "id": "0x62" + }, + { + "from": 766, + "to": 766, + "id": "0x64" + }, + { + "from": 767, + "to": 767, + "id": "0x64" + }, + { + "from": 768, + "to": 769, + "id": "0x6B" + }, + { + "from": 770, + "to": 770, + "id": "0x6A" + }, + { + "from": 771, + "to": 772, + "id": "0x6A" + }, + { + "from": 773, + "to": 774, + "id": "0x6F" + }, + { + "from": 775, + "to": 776, + "id": "0x71" + } + ], + "play.toClient.update_view_distance": [ + { + "from": 735, + "to": 736, + "id": "0x41" + }, + { + "from": 751, + "to": 754, + "id": "0x41" + }, + { + "from": 755, + "to": 755, + "id": "0x4A" + }, + { + "from": 756, + "to": 756, + "id": "0x4A" + }, + { + "from": 757, + "to": 758, + "id": "0x4A" + }, + { + "from": 759, + "to": 759, + "id": "0x49" + }, + { + "from": 760, + "to": 760, + "id": "0x4C" + }, + { + "from": 761, + "to": 761, + "id": "0x4B" + }, + { + "from": 762, + "to": 763, + "id": "0x4F" + }, + { + "from": 764, + "to": 764, + "id": "0x51" + }, + { + "from": 765, + "to": 765, + "id": "0x53" + }, + { + "from": 766, + "to": 766, + "id": "0x55" + }, + { + "from": 767, + "to": 767, + "id": "0x55" + }, + { + "from": 768, + "to": 769, + "id": "0x59" + }, + { + "from": 770, + "to": 770, + "id": "0x58" + }, + { + "from": 771, + "to": 772, + "id": "0x58" + }, + { + "from": 773, + "to": 774, + "id": "0x5D" + }, + { + "from": 775, + "to": 776, + "id": "0x5F" + } + ], + "play.toClient.update_view_position": [ + { + "from": 735, + "to": 736, + "id": "0x40" + }, + { + "from": 751, + "to": 754, + "id": "0x40" + }, + { + "from": 755, + "to": 755, + "id": "0x49" + }, + { + "from": 756, + "to": 756, + "id": "0x49" + }, + { + "from": 757, + "to": 758, + "id": "0x49" + }, + { + "from": 759, + "to": 759, + "id": "0x48" + }, + { + "from": 760, + "to": 760, + "id": "0x4B" + }, + { + "from": 761, + "to": 761, + "id": "0x4A" + }, + { + "from": 762, + "to": 763, + "id": "0x4E" + }, + { + "from": 764, + "to": 764, + "id": "0x50" + }, + { + "from": 765, + "to": 765, + "id": "0x52" + }, + { + "from": 766, + "to": 766, + "id": "0x54" + }, + { + "from": 767, + "to": 767, + "id": "0x54" + }, + { + "from": 768, + "to": 769, + "id": "0x58" + }, + { + "from": 770, + "to": 770, + "id": "0x57" + }, + { + "from": 771, + "to": 772, + "id": "0x57" + }, + { + "from": 773, + "to": 774, + "id": "0x5C" + }, + { + "from": 775, + "to": 776, + "id": "0x5E" + } + ], + "play.toClient.vehicle_move": [ + { + "from": 735, + "to": 736, + "id": "0x2C" + }, + { + "from": 751, + "to": 754, + "id": "0x2B" + }, + { + "from": 755, + "to": 755, + "id": "0x2C" + }, + { + "from": 756, + "to": 756, + "id": "0x2C" + }, + { + "from": 757, + "to": 758, + "id": "0x2C" + }, + { + "from": 759, + "to": 759, + "id": "0x29" + }, + { + "from": 760, + "to": 760, + "id": "0x2B" + }, + { + "from": 761, + "to": 761, + "id": "0x2A" + }, + { + "from": 762, + "to": 763, + "id": "0x2E" + }, + { + "from": 764, + "to": 764, + "id": "0x2F" + }, + { + "from": 765, + "to": 765, + "id": "0x2F" + }, + { + "from": 766, + "to": 766, + "id": "0x31" + }, + { + "from": 767, + "to": 767, + "id": "0x31" + }, + { + "from": 768, + "to": 769, + "id": "0x33" + }, + { + "from": 770, + "to": 770, + "id": "0x32" + }, + { + "from": 771, + "to": 772, + "id": "0x32" + }, + { + "from": 773, + "to": 774, + "id": "0x37" + }, + { + "from": 775, + "to": 776, + "id": "0x39" + } + ], + "play.toClient.window_items": [ + { + "from": 735, + "to": 736, + "id": "0x14" + }, + { + "from": 751, + "to": 754, + "id": "0x13" + }, + { + "from": 755, + "to": 755, + "id": "0x14" + }, + { + "from": 756, + "to": 756, + "id": "0x14" + }, + { + "from": 757, + "to": 758, + "id": "0x14" + }, + { + "from": 759, + "to": 759, + "id": "0x11" + }, + { + "from": 760, + "to": 760, + "id": "0x11" + }, + { + "from": 761, + "to": 761, + "id": "0x10" + }, + { + "from": 762, + "to": 763, + "id": "0x12" + }, + { + "from": 764, + "to": 764, + "id": "0x13" + }, + { + "from": 765, + "to": 765, + "id": "0x13" + }, + { + "from": 766, + "to": 766, + "id": "0x13" + }, + { + "from": 767, + "to": 767, + "id": "0x13" + }, + { + "from": 768, + "to": 769, + "id": "0x13" + }, + { + "from": 770, + "to": 770, + "id": "0x12" + }, + { + "from": 771, + "to": 772, + "id": "0x12" + }, + { + "from": 773, + "to": 774, + "id": "0x12" + }, + { + "from": 775, + "to": 776, + "id": "0x12" + } + ], + "play.toClient.world_border": [ + { + "from": 735, + "to": 736, + "id": "0x3D" + }, + { + "from": 751, + "to": 754, + "id": "0x3D" + } + ], + "play.toClient.world_border_center": [ + { + "from": 755, + "to": 755, + "id": "0x42" + }, + { + "from": 756, + "to": 756, + "id": "0x42" + }, + { + "from": 757, + "to": 758, + "id": "0x42" + }, + { + "from": 759, + "to": 759, + "id": "0x41" + }, + { + "from": 760, + "to": 760, + "id": "0x44" + }, + { + "from": 761, + "to": 761, + "id": "0x43" + }, + { + "from": 762, + "to": 763, + "id": "0x47" + }, + { + "from": 764, + "to": 764, + "id": "0x49" + }, + { + "from": 765, + "to": 765, + "id": "0x4B" + }, + { + "from": 766, + "to": 766, + "id": "0x4D" + }, + { + "from": 767, + "to": 767, + "id": "0x4D" + }, + { + "from": 768, + "to": 769, + "id": "0x52" + }, + { + "from": 770, + "to": 770, + "id": "0x51" + }, + { + "from": 771, + "to": 772, + "id": "0x51" + }, + { + "from": 773, + "to": 774, + "id": "0x56" + }, + { + "from": 775, + "to": 776, + "id": "0x58" + } + ], + "play.toClient.world_border_lerp_size": [ + { + "from": 755, + "to": 755, + "id": "0x43" + }, + { + "from": 756, + "to": 756, + "id": "0x43" + }, + { + "from": 757, + "to": 758, + "id": "0x43" + }, + { + "from": 759, + "to": 759, + "id": "0x42" + }, + { + "from": 760, + "to": 760, + "id": "0x45" + }, + { + "from": 761, + "to": 761, + "id": "0x44" + }, + { + "from": 762, + "to": 763, + "id": "0x48" + }, + { + "from": 764, + "to": 764, + "id": "0x4A" + }, + { + "from": 765, + "to": 765, + "id": "0x4C" + }, + { + "from": 766, + "to": 766, + "id": "0x4E" + }, + { + "from": 767, + "to": 767, + "id": "0x4E" + }, + { + "from": 768, + "to": 769, + "id": "0x53" + }, + { + "from": 770, + "to": 770, + "id": "0x52" + }, + { + "from": 771, + "to": 772, + "id": "0x52" + }, + { + "from": 773, + "to": 774, + "id": "0x57" + }, + { + "from": 775, + "to": 776, + "id": "0x59" + } + ], + "play.toClient.world_border_size": [ + { + "from": 755, + "to": 755, + "id": "0x44" + }, + { + "from": 756, + "to": 756, + "id": "0x44" + }, + { + "from": 757, + "to": 758, + "id": "0x44" + }, + { + "from": 759, + "to": 759, + "id": "0x43" + }, + { + "from": 760, + "to": 760, + "id": "0x46" + }, + { + "from": 761, + "to": 761, + "id": "0x45" + }, + { + "from": 762, + "to": 763, + "id": "0x49" + }, + { + "from": 764, + "to": 764, + "id": "0x4B" + }, + { + "from": 765, + "to": 765, + "id": "0x4D" + }, + { + "from": 766, + "to": 766, + "id": "0x4F" + }, + { + "from": 767, + "to": 767, + "id": "0x4F" + }, + { + "from": 768, + "to": 769, + "id": "0x54" + }, + { + "from": 770, + "to": 770, + "id": "0x53" + }, + { + "from": 771, + "to": 772, + "id": "0x53" + }, + { + "from": 773, + "to": 774, + "id": "0x58" + }, + { + "from": 775, + "to": 776, + "id": "0x5A" + } + ], + "play.toClient.world_border_warning_delay": [ + { + "from": 755, + "to": 755, + "id": "0x45" + }, + { + "from": 756, + "to": 756, + "id": "0x45" + }, + { + "from": 757, + "to": 758, + "id": "0x45" + }, + { + "from": 759, + "to": 759, + "id": "0x44" + }, + { + "from": 760, + "to": 760, + "id": "0x47" + }, + { + "from": 761, + "to": 761, + "id": "0x46" + }, + { + "from": 762, + "to": 763, + "id": "0x4A" + }, + { + "from": 764, + "to": 764, + "id": "0x4C" + }, + { + "from": 765, + "to": 765, + "id": "0x4E" + }, + { + "from": 766, + "to": 766, + "id": "0x50" + }, + { + "from": 767, + "to": 767, + "id": "0x50" + }, + { + "from": 768, + "to": 769, + "id": "0x55" + }, + { + "from": 770, + "to": 770, + "id": "0x54" + }, + { + "from": 771, + "to": 772, + "id": "0x54" + }, + { + "from": 773, + "to": 774, + "id": "0x59" + }, + { + "from": 775, + "to": 776, + "id": "0x5B" + } + ], + "play.toClient.world_border_warning_reach": [ + { + "from": 755, + "to": 755, + "id": "0x46" + }, + { + "from": 756, + "to": 756, + "id": "0x46" + }, + { + "from": 757, + "to": 758, + "id": "0x46" + }, + { + "from": 759, + "to": 759, + "id": "0x45" + }, + { + "from": 760, + "to": 760, + "id": "0x48" + }, + { + "from": 761, + "to": 761, + "id": "0x47" + }, + { + "from": 762, + "to": 763, + "id": "0x4B" + }, + { + "from": 764, + "to": 764, + "id": "0x4D" + }, + { + "from": 765, + "to": 765, + "id": "0x4F" + }, + { + "from": 766, + "to": 766, + "id": "0x51" + }, + { + "from": 767, + "to": 767, + "id": "0x51" + }, + { + "from": 768, + "to": 769, + "id": "0x56" + }, + { + "from": 770, + "to": 770, + "id": "0x55" + }, + { + "from": 771, + "to": 772, + "id": "0x55" + }, + { + "from": 773, + "to": 774, + "id": "0x5A" + }, + { + "from": 775, + "to": 776, + "id": "0x5C" + } + ], + "play.toClient.world_event": [ + { + "from": 735, + "to": 736, + "id": "0x22" + }, + { + "from": 751, + "to": 754, + "id": "0x21" + }, + { + "from": 755, + "to": 755, + "id": "0x23" + }, + { + "from": 756, + "to": 756, + "id": "0x23" + }, + { + "from": 757, + "to": 758, + "id": "0x23" + }, + { + "from": 759, + "to": 759, + "id": "0x20" + }, + { + "from": 760, + "to": 760, + "id": "0x22" + }, + { + "from": 761, + "to": 761, + "id": "0x21" + }, + { + "from": 762, + "to": 763, + "id": "0x25" + }, + { + "from": 764, + "to": 764, + "id": "0x26" + }, + { + "from": 765, + "to": 765, + "id": "0x26" + }, + { + "from": 766, + "to": 766, + "id": "0x28" + }, + { + "from": 767, + "to": 767, + "id": "0x28" + }, + { + "from": 768, + "to": 769, + "id": "0x29" + }, + { + "from": 770, + "to": 770, + "id": "0x28" + }, + { + "from": 771, + "to": 772, + "id": "0x28" + }, + { + "from": 773, + "to": 774, + "id": "0x2D" + }, + { + "from": 775, + "to": 776, + "id": "0x2E" + } + ], + "play.toClient.world_particles": [ + { + "from": 735, + "to": 736, + "id": "0x23" + }, + { + "from": 751, + "to": 754, + "id": "0x22" + }, + { + "from": 755, + "to": 755, + "id": "0x24" + }, + { + "from": 756, + "to": 756, + "id": "0x24" + }, + { + "from": 757, + "to": 758, + "id": "0x24" + }, + { + "from": 759, + "to": 759, + "id": "0x21" + }, + { + "from": 760, + "to": 760, + "id": "0x23" + }, + { + "from": 761, + "to": 761, + "id": "0x22" + }, + { + "from": 762, + "to": 763, + "id": "0x26" + }, + { + "from": 764, + "to": 764, + "id": "0x27" + }, + { + "from": 765, + "to": 765, + "id": "0x27" + }, + { + "from": 766, + "to": 766, + "id": "0x29" + }, + { + "from": 767, + "to": 767, + "id": "0x29" + }, + { + "from": 768, + "to": 769, + "id": "0x2A" + }, + { + "from": 770, + "to": 770, + "id": "0x29" + }, + { + "from": 771, + "to": 772, + "id": "0x29" + }, + { + "from": 773, + "to": 774, + "id": "0x2E" + }, + { + "from": 775, + "to": 776, + "id": "0x2F" + } + ], + "play.toServer.abilities": [ + { + "from": 735, + "to": 736, + "id": "0x1A" + }, + { + "from": 751, + "to": 754, + "id": "0x1A" + }, + { + "from": 755, + "to": 758, + "id": "0x19" + }, + { + "from": 759, + "to": 759, + "id": "0x1B" + }, + { + "from": 760, + "to": 760, + "id": "0x1C" + }, + { + "from": 761, + "to": 761, + "id": "0x1B" + }, + { + "from": 762, + "to": 763, + "id": "0x1C" + }, + { + "from": 764, + "to": 764, + "id": "0x1F" + }, + { + "from": 765, + "to": 765, + "id": "0x20" + }, + { + "from": 766, + "to": 767, + "id": "0x23" + }, + { + "from": 768, + "to": 768, + "id": "0x25" + }, + { + "from": 769, + "to": 769, + "id": "0x26" + }, + { + "from": 770, + "to": 770, + "id": "0x26" + }, + { + "from": 771, + "to": 772, + "id": "0x27" + }, + { + "from": 773, + "to": 774, + "id": "0x27" + }, + { + "from": 775, + "to": 776, + "id": "0x28" + } + ], + "play.toServer.advancement_tab": [ + { + "from": 735, + "to": 736, + "id": "0x21" + }, + { + "from": 751, + "to": 754, + "id": "0x22" + }, + { + "from": 755, + "to": 758, + "id": "0x22" + }, + { + "from": 759, + "to": 759, + "id": "0x24" + }, + { + "from": 760, + "to": 760, + "id": "0x25" + }, + { + "from": 761, + "to": 761, + "id": "0x25" + }, + { + "from": 762, + "to": 763, + "id": "0x25" + }, + { + "from": 764, + "to": 764, + "id": "0x28" + }, + { + "from": 765, + "to": 765, + "id": "0x29" + }, + { + "from": 766, + "to": 767, + "id": "0x2C" + }, + { + "from": 768, + "to": 768, + "id": "0x2E" + }, + { + "from": 769, + "to": 769, + "id": "0x30" + }, + { + "from": 770, + "to": 770, + "id": "0x30" + }, + { + "from": 771, + "to": 772, + "id": "0x31" + }, + { + "from": 773, + "to": 774, + "id": "0x31" + }, + { + "from": 775, + "to": 776, + "id": "0x32" + } + ], + "play.toServer.arm_animation": [ + { + "from": 735, + "to": 736, + "id": "0x2B" + }, + { + "from": 751, + "to": 754, + "id": "0x2C" + }, + { + "from": 755, + "to": 758, + "id": "0x2C" + }, + { + "from": 759, + "to": 759, + "id": "0x2E" + }, + { + "from": 760, + "to": 760, + "id": "0x2F" + }, + { + "from": 761, + "to": 761, + "id": "0x2F" + }, + { + "from": 762, + "to": 763, + "id": "0x2F" + }, + { + "from": 764, + "to": 764, + "id": "0x32" + }, + { + "from": 765, + "to": 765, + "id": "0x33" + }, + { + "from": 766, + "to": 767, + "id": "0x36" + }, + { + "from": 768, + "to": 768, + "id": "0x38" + }, + { + "from": 769, + "to": 769, + "id": "0x3A" + }, + { + "from": 770, + "to": 770, + "id": "0x3B" + }, + { + "from": 771, + "to": 772, + "id": "0x3C" + }, + { + "from": 773, + "to": 774, + "id": "0x3C" + }, + { + "from": 775, + "to": 776, + "id": "0x3F" + } + ], + "play.toServer.attack": [ + { + "from": 775, + "to": 776, + "id": "0x01" + } + ], + "play.toServer.block_dig": [ + { + "from": 735, + "to": 736, + "id": "0x1B" + }, + { + "from": 751, + "to": 754, + "id": "0x1B" + }, + { + "from": 755, + "to": 758, + "id": "0x1A" + }, + { + "from": 759, + "to": 759, + "id": "0x1C" + }, + { + "from": 760, + "to": 760, + "id": "0x1D" + }, + { + "from": 761, + "to": 761, + "id": "0x1C" + }, + { + "from": 762, + "to": 763, + "id": "0x1D" + }, + { + "from": 764, + "to": 764, + "id": "0x20" + }, + { + "from": 765, + "to": 765, + "id": "0x21" + }, + { + "from": 766, + "to": 767, + "id": "0x24" + }, + { + "from": 768, + "to": 768, + "id": "0x26" + }, + { + "from": 769, + "to": 769, + "id": "0x27" + }, + { + "from": 770, + "to": 770, + "id": "0x27" + }, + { + "from": 771, + "to": 772, + "id": "0x28" + }, + { + "from": 773, + "to": 774, + "id": "0x28" + }, + { + "from": 775, + "to": 776, + "id": "0x29" + } + ], + "play.toServer.block_place": [ + { + "from": 735, + "to": 736, + "id": "0x2D" + }, + { + "from": 751, + "to": 754, + "id": "0x2E" + }, + { + "from": 755, + "to": 758, + "id": "0x2E" + }, + { + "from": 759, + "to": 759, + "id": "0x30" + }, + { + "from": 760, + "to": 760, + "id": "0x31" + }, + { + "from": 761, + "to": 761, + "id": "0x31" + }, + { + "from": 762, + "to": 763, + "id": "0x31" + }, + { + "from": 764, + "to": 764, + "id": "0x34" + }, + { + "from": 765, + "to": 765, + "id": "0x35" + }, + { + "from": 766, + "to": 767, + "id": "0x38" + }, + { + "from": 768, + "to": 768, + "id": "0x3A" + }, + { + "from": 769, + "to": 769, + "id": "0x3C" + }, + { + "from": 770, + "to": 770, + "id": "0x3E" + }, + { + "from": 771, + "to": 772, + "id": "0x3F" + }, + { + "from": 773, + "to": 774, + "id": "0x3F" + }, + { + "from": 775, + "to": 776, + "id": "0x42" + } + ], + "play.toServer.change_gamemode": [ + { + "from": 771, + "to": 772, + "id": "0x04" + }, + { + "from": 773, + "to": 774, + "id": "0x04" + }, + { + "from": 775, + "to": 776, + "id": "0x05" + } + ], + "play.toServer.chat": [ + { + "from": 735, + "to": 736, + "id": "0x03" + }, + { + "from": 751, + "to": 754, + "id": "0x03" + }, + { + "from": 755, + "to": 758, + "id": "0x03" + } + ], + "play.toServer.chat_command": [ + { + "from": 759, + "to": 759, + "id": "0x03" + }, + { + "from": 760, + "to": 760, + "id": "0x04" + }, + { + "from": 761, + "to": 761, + "id": "0x04" + }, + { + "from": 762, + "to": 763, + "id": "0x04" + }, + { + "from": 764, + "to": 764, + "id": "0x04" + }, + { + "from": 765, + "to": 765, + "id": "0x04" + }, + { + "from": 766, + "to": 767, + "id": "0x04" + }, + { + "from": 768, + "to": 768, + "id": "0x05" + }, + { + "from": 769, + "to": 769, + "id": "0x05" + }, + { + "from": 770, + "to": 770, + "id": "0x05" + }, + { + "from": 771, + "to": 772, + "id": "0x06" + }, + { + "from": 773, + "to": 774, + "id": "0x06" + }, + { + "from": 775, + "to": 776, + "id": "0x07" + } + ], + "play.toServer.chat_command_signed": [ + { + "from": 766, + "to": 767, + "id": "0x05" + }, + { + "from": 768, + "to": 768, + "id": "0x06" + }, + { + "from": 769, + "to": 769, + "id": "0x06" + }, + { + "from": 770, + "to": 770, + "id": "0x06" + }, + { + "from": 771, + "to": 772, + "id": "0x07" + }, + { + "from": 773, + "to": 774, + "id": "0x07" + }, + { + "from": 775, + "to": 776, + "id": "0x08" + } + ], + "play.toServer.chat_message": [ + { + "from": 759, + "to": 759, + "id": "0x04" + }, + { + "from": 760, + "to": 760, + "id": "0x05" + }, + { + "from": 761, + "to": 761, + "id": "0x05" + }, + { + "from": 762, + "to": 763, + "id": "0x05" + }, + { + "from": 764, + "to": 764, + "id": "0x05" + }, + { + "from": 765, + "to": 765, + "id": "0x05" + }, + { + "from": 766, + "to": 767, + "id": "0x06" + }, + { + "from": 768, + "to": 768, + "id": "0x07" + }, + { + "from": 769, + "to": 769, + "id": "0x07" + }, + { + "from": 770, + "to": 770, + "id": "0x07" + }, + { + "from": 771, + "to": 772, + "id": "0x08" + }, + { + "from": 773, + "to": 774, + "id": "0x08" + }, + { + "from": 775, + "to": 776, + "id": "0x09" + } + ], + "play.toServer.chat_preview": [ + { + "from": 759, + "to": 759, + "id": "0x05" + }, + { + "from": 760, + "to": 760, + "id": "0x06" + } + ], + "play.toServer.chat_session_update": [ + { + "from": 761, + "to": 761, + "id": "0x20" + }, + { + "from": 762, + "to": 763, + "id": "0x06" + }, + { + "from": 764, + "to": 764, + "id": "0x06" + }, + { + "from": 765, + "to": 765, + "id": "0x06" + }, + { + "from": 766, + "to": 767, + "id": "0x07" + }, + { + "from": 768, + "to": 768, + "id": "0x08" + }, + { + "from": 769, + "to": 769, + "id": "0x08" + }, + { + "from": 770, + "to": 770, + "id": "0x08" + }, + { + "from": 771, + "to": 772, + "id": "0x09" + }, + { + "from": 773, + "to": 774, + "id": "0x09" + }, + { + "from": 775, + "to": 776, + "id": "0x0A" + } + ], + "play.toServer.chunk_batch_received": [ + { + "from": 764, + "to": 764, + "id": "0x07" + }, + { + "from": 765, + "to": 765, + "id": "0x07" + }, + { + "from": 766, + "to": 767, + "id": "0x08" + }, + { + "from": 768, + "to": 768, + "id": "0x09" + }, + { + "from": 769, + "to": 769, + "id": "0x09" + }, + { + "from": 770, + "to": 770, + "id": "0x09" + }, + { + "from": 771, + "to": 772, + "id": "0x0A" + }, + { + "from": 773, + "to": 774, + "id": "0x0A" + }, + { + "from": 775, + "to": 776, + "id": "0x0B" + } + ], + "play.toServer.client_command": [ + { + "from": 735, + "to": 736, + "id": "0x04" + }, + { + "from": 751, + "to": 754, + "id": "0x04" + }, + { + "from": 755, + "to": 758, + "id": "0x04" + }, + { + "from": 759, + "to": 759, + "id": "0x06" + }, + { + "from": 760, + "to": 760, + "id": "0x07" + }, + { + "from": 761, + "to": 761, + "id": "0x06" + }, + { + "from": 762, + "to": 763, + "id": "0x07" + }, + { + "from": 764, + "to": 764, + "id": "0x08" + }, + { + "from": 765, + "to": 765, + "id": "0x08" + }, + { + "from": 766, + "to": 767, + "id": "0x09" + }, + { + "from": 768, + "to": 768, + "id": "0x0A" + }, + { + "from": 769, + "to": 769, + "id": "0x0A" + }, + { + "from": 770, + "to": 770, + "id": "0x0A" + }, + { + "from": 771, + "to": 772, + "id": "0x0B" + }, + { + "from": 773, + "to": 774, + "id": "0x0B" + }, + { + "from": 775, + "to": 776, + "id": "0x0C" + } + ], + "play.toServer.close_window": [ + { + "from": 735, + "to": 736, + "id": "0x0A" + }, + { + "from": 751, + "to": 754, + "id": "0x0A" + }, + { + "from": 755, + "to": 758, + "id": "0x09" + }, + { + "from": 759, + "to": 759, + "id": "0x0B" + }, + { + "from": 760, + "to": 760, + "id": "0x0C" + }, + { + "from": 761, + "to": 761, + "id": "0x0B" + }, + { + "from": 762, + "to": 763, + "id": "0x0C" + }, + { + "from": 764, + "to": 764, + "id": "0x0E" + }, + { + "from": 765, + "to": 765, + "id": "0x0E" + }, + { + "from": 766, + "to": 767, + "id": "0x0F" + }, + { + "from": 768, + "to": 768, + "id": "0x11" + }, + { + "from": 769, + "to": 769, + "id": "0x11" + }, + { + "from": 770, + "to": 770, + "id": "0x11" + }, + { + "from": 771, + "to": 772, + "id": "0x12" + }, + { + "from": 773, + "to": 774, + "id": "0x12" + }, + { + "from": 775, + "to": 776, + "id": "0x13" + } + ], + "play.toServer.configuration_acknowledged": [ + { + "from": 764, + "to": 764, + "id": "0x0B" + }, + { + "from": 765, + "to": 765, + "id": "0x0B" + }, + { + "from": 766, + "to": 767, + "id": "0x0C" + }, + { + "from": 768, + "to": 768, + "id": "0x0E" + }, + { + "from": 769, + "to": 769, + "id": "0x0E" + }, + { + "from": 770, + "to": 770, + "id": "0x0E" + }, + { + "from": 771, + "to": 772, + "id": "0x0F" + }, + { + "from": 773, + "to": 774, + "id": "0x0F" + }, + { + "from": 775, + "to": 776, + "id": "0x10" + } + ], + "play.toServer.cookie_response": [ + { + "from": 766, + "to": 767, + "id": "0x11" + }, + { + "from": 768, + "to": 768, + "id": "0x13" + }, + { + "from": 769, + "to": 769, + "id": "0x13" + }, + { + "from": 770, + "to": 770, + "id": "0x13" + }, + { + "from": 771, + "to": 772, + "id": "0x14" + }, + { + "from": 773, + "to": 774, + "id": "0x14" + }, + { + "from": 775, + "to": 776, + "id": "0x15" + } + ], + "play.toServer.craft_recipe_request": [ + { + "from": 735, + "to": 736, + "id": "0x19" + }, + { + "from": 751, + "to": 754, + "id": "0x19" + }, + { + "from": 755, + "to": 758, + "id": "0x18" + }, + { + "from": 759, + "to": 759, + "id": "0x1A" + }, + { + "from": 760, + "to": 760, + "id": "0x1B" + }, + { + "from": 761, + "to": 761, + "id": "0x1A" + }, + { + "from": 762, + "to": 763, + "id": "0x1B" + }, + { + "from": 764, + "to": 764, + "id": "0x1E" + }, + { + "from": 765, + "to": 765, + "id": "0x1F" + }, + { + "from": 766, + "to": 767, + "id": "0x22" + }, + { + "from": 768, + "to": 768, + "id": "0x24" + }, + { + "from": 769, + "to": 769, + "id": "0x25" + }, + { + "from": 770, + "to": 770, + "id": "0x25" + }, + { + "from": 771, + "to": 772, + "id": "0x26" + }, + { + "from": 773, + "to": 774, + "id": "0x26" + }, + { + "from": 775, + "to": 776, + "id": "0x27" + } + ], + "play.toServer.crafting_book_data": [ + { + "from": 735, + "to": 736, + "id": "0x1E" + } + ], + "play.toServer.custom_click_action": [ + { + "from": 771, + "to": 772, + "id": "0x41" + }, + { + "from": 773, + "to": 774, + "id": "0x41" + }, + { + "from": 775, + "to": 776, + "id": "0x44" + } + ], + "play.toServer.custom_payload": [ + { + "from": 735, + "to": 736, + "id": "0x0B" + }, + { + "from": 751, + "to": 754, + "id": "0x0B" + }, + { + "from": 755, + "to": 758, + "id": "0x0A" + }, + { + "from": 759, + "to": 759, + "id": "0x0C" + }, + { + "from": 760, + "to": 760, + "id": "0x0D" + }, + { + "from": 761, + "to": 761, + "id": "0x0C" + }, + { + "from": 762, + "to": 763, + "id": "0x0D" + }, + { + "from": 764, + "to": 764, + "id": "0x0F" + }, + { + "from": 765, + "to": 765, + "id": "0x10" + }, + { + "from": 766, + "to": 767, + "id": "0x12" + }, + { + "from": 768, + "to": 768, + "id": "0x14" + }, + { + "from": 769, + "to": 769, + "id": "0x14" + }, + { + "from": 770, + "to": 770, + "id": "0x14" + }, + { + "from": 771, + "to": 772, + "id": "0x15" + }, + { + "from": 773, + "to": 774, + "id": "0x15" + }, + { + "from": 775, + "to": 776, + "id": "0x16" + } + ], + "play.toServer.debug_sample_subscription": [ + { + "from": 766, + "to": 767, + "id": "0x13" + }, + { + "from": 768, + "to": 768, + "id": "0x15" + }, + { + "from": 769, + "to": 769, + "id": "0x15" + }, + { + "from": 770, + "to": 770, + "id": "0x15" + }, + { + "from": 771, + "to": 772, + "id": "0x16" + } + ], + "play.toServer.debug_subscription_request": [ + { + "from": 773, + "to": 774, + "id": "0x16" + }, + { + "from": 775, + "to": 776, + "id": "0x17" + } + ], + "play.toServer.displayed_recipe": [ + { + "from": 751, + "to": 754, + "id": "0x1F" + }, + { + "from": 755, + "to": 758, + "id": "0x1F" + }, + { + "from": 759, + "to": 759, + "id": "0x21" + }, + { + "from": 760, + "to": 760, + "id": "0x22" + }, + { + "from": 761, + "to": 761, + "id": "0x22" + }, + { + "from": 762, + "to": 763, + "id": "0x22" + }, + { + "from": 764, + "to": 764, + "id": "0x25" + }, + { + "from": 765, + "to": 765, + "id": "0x26" + }, + { + "from": 766, + "to": 767, + "id": "0x29" + }, + { + "from": 768, + "to": 768, + "id": "0x2B" + }, + { + "from": 769, + "to": 769, + "id": "0x2D" + }, + { + "from": 770, + "to": 770, + "id": "0x2D" + }, + { + "from": 771, + "to": 772, + "id": "0x2E" + }, + { + "from": 773, + "to": 774, + "id": "0x2E" + }, + { + "from": 775, + "to": 776, + "id": "0x2F" + } + ], + "play.toServer.edit_book": [ + { + "from": 735, + "to": 736, + "id": "0x0C" + }, + { + "from": 751, + "to": 754, + "id": "0x0C" + }, + { + "from": 755, + "to": 758, + "id": "0x0B" + }, + { + "from": 759, + "to": 759, + "id": "0x0D" + }, + { + "from": 760, + "to": 760, + "id": "0x0E" + }, + { + "from": 761, + "to": 761, + "id": "0x0D" + }, + { + "from": 762, + "to": 763, + "id": "0x0E" + }, + { + "from": 764, + "to": 764, + "id": "0x10" + }, + { + "from": 765, + "to": 765, + "id": "0x11" + }, + { + "from": 766, + "to": 767, + "id": "0x14" + }, + { + "from": 768, + "to": 768, + "id": "0x16" + }, + { + "from": 769, + "to": 769, + "id": "0x16" + }, + { + "from": 770, + "to": 770, + "id": "0x16" + }, + { + "from": 771, + "to": 772, + "id": "0x17" + }, + { + "from": 773, + "to": 774, + "id": "0x17" + }, + { + "from": 775, + "to": 776, + "id": "0x18" + } + ], + "play.toServer.enchant_item": [ + { + "from": 735, + "to": 736, + "id": "0x08" + }, + { + "from": 751, + "to": 754, + "id": "0x08" + }, + { + "from": 755, + "to": 758, + "id": "0x07" + }, + { + "from": 759, + "to": 759, + "id": "0x09" + }, + { + "from": 760, + "to": 760, + "id": "0x0A" + }, + { + "from": 761, + "to": 761, + "id": "0x09" + }, + { + "from": 762, + "to": 763, + "id": "0x0A" + }, + { + "from": 764, + "to": 764, + "id": "0x0C" + }, + { + "from": 765, + "to": 765, + "id": "0x0C" + }, + { + "from": 766, + "to": 767, + "id": "0x0D" + }, + { + "from": 768, + "to": 768, + "id": "0x0F" + }, + { + "from": 769, + "to": 769, + "id": "0x0F" + }, + { + "from": 770, + "to": 770, + "id": "0x0F" + }, + { + "from": 771, + "to": 772, + "id": "0x10" + }, + { + "from": 773, + "to": 774, + "id": "0x10" + }, + { + "from": 775, + "to": 776, + "id": "0x11" + } + ], + "play.toServer.entity_action": [ + { + "from": 735, + "to": 736, + "id": "0x1C" + }, + { + "from": 751, + "to": 754, + "id": "0x1C" + }, + { + "from": 755, + "to": 758, + "id": "0x1B" + }, + { + "from": 759, + "to": 759, + "id": "0x1D" + }, + { + "from": 760, + "to": 760, + "id": "0x1E" + }, + { + "from": 761, + "to": 761, + "id": "0x1D" + }, + { + "from": 762, + "to": 763, + "id": "0x1E" + }, + { + "from": 764, + "to": 764, + "id": "0x21" + }, + { + "from": 765, + "to": 765, + "id": "0x22" + }, + { + "from": 766, + "to": 767, + "id": "0x25" + }, + { + "from": 768, + "to": 768, + "id": "0x27" + }, + { + "from": 769, + "to": 769, + "id": "0x28" + }, + { + "from": 770, + "to": 770, + "id": "0x28" + }, + { + "from": 771, + "to": 772, + "id": "0x29" + }, + { + "from": 773, + "to": 774, + "id": "0x29" + }, + { + "from": 775, + "to": 776, + "id": "0x2A" + } + ], + "play.toServer.flying": [ + { + "from": 735, + "to": 736, + "id": "0x15" + }, + { + "from": 751, + "to": 754, + "id": "0x15" + }, + { + "from": 755, + "to": 758, + "id": "0x14" + }, + { + "from": 759, + "to": 759, + "id": "0x16" + }, + { + "from": 760, + "to": 760, + "id": "0x17" + }, + { + "from": 761, + "to": 761, + "id": "0x16" + }, + { + "from": 762, + "to": 763, + "id": "0x17" + }, + { + "from": 764, + "to": 764, + "id": "0x19" + }, + { + "from": 765, + "to": 765, + "id": "0x1A" + }, + { + "from": 766, + "to": 767, + "id": "0x1D" + }, + { + "from": 768, + "to": 768, + "id": "0x1F" + }, + { + "from": 769, + "to": 769, + "id": "0x1F" + }, + { + "from": 770, + "to": 770, + "id": "0x1F" + }, + { + "from": 771, + "to": 772, + "id": "0x20" + }, + { + "from": 773, + "to": 774, + "id": "0x20" + }, + { + "from": 775, + "to": 776, + "id": "0x21" + } + ], + "play.toServer.generate_structure": [ + { + "from": 735, + "to": 736, + "id": "0x0F" + }, + { + "from": 751, + "to": 754, + "id": "0x0F" + }, + { + "from": 755, + "to": 758, + "id": "0x0E" + }, + { + "from": 759, + "to": 759, + "id": "0x10" + }, + { + "from": 760, + "to": 760, + "id": "0x11" + }, + { + "from": 761, + "to": 761, + "id": "0x10" + }, + { + "from": 762, + "to": 763, + "id": "0x11" + }, + { + "from": 764, + "to": 764, + "id": "0x13" + }, + { + "from": 765, + "to": 765, + "id": "0x14" + }, + { + "from": 766, + "to": 767, + "id": "0x17" + }, + { + "from": 768, + "to": 768, + "id": "0x19" + }, + { + "from": 769, + "to": 769, + "id": "0x19" + }, + { + "from": 770, + "to": 770, + "id": "0x19" + }, + { + "from": 771, + "to": 772, + "id": "0x1A" + }, + { + "from": 773, + "to": 774, + "id": "0x1A" + }, + { + "from": 775, + "to": 776, + "id": "0x1B" + } + ], + "play.toServer.held_item_slot": [ + { + "from": 735, + "to": 736, + "id": "0x24" + }, + { + "from": 751, + "to": 754, + "id": "0x25" + }, + { + "from": 755, + "to": 758, + "id": "0x25" + }, + { + "from": 759, + "to": 759, + "id": "0x27" + }, + { + "from": 760, + "to": 760, + "id": "0x28" + }, + { + "from": 761, + "to": 761, + "id": "0x28" + }, + { + "from": 762, + "to": 763, + "id": "0x28" + }, + { + "from": 764, + "to": 764, + "id": "0x2B" + }, + { + "from": 765, + "to": 765, + "id": "0x2C" + }, + { + "from": 766, + "to": 767, + "id": "0x2F" + }, + { + "from": 768, + "to": 768, + "id": "0x31" + }, + { + "from": 769, + "to": 769, + "id": "0x33" + }, + { + "from": 770, + "to": 770, + "id": "0x33" + }, + { + "from": 771, + "to": 772, + "id": "0x34" + }, + { + "from": 773, + "to": 774, + "id": "0x34" + }, + { + "from": 775, + "to": 776, + "id": "0x35" + } + ], + "play.toServer.keep_alive": [ + { + "from": 735, + "to": 736, + "id": "0x10" + }, + { + "from": 751, + "to": 754, + "id": "0x10" + }, + { + "from": 755, + "to": 758, + "id": "0x0F" + }, + { + "from": 759, + "to": 759, + "id": "0x11" + }, + { + "from": 760, + "to": 760, + "id": "0x12" + }, + { + "from": 761, + "to": 761, + "id": "0x11" + }, + { + "from": 762, + "to": 763, + "id": "0x12" + }, + { + "from": 764, + "to": 764, + "id": "0x14" + }, + { + "from": 765, + "to": 765, + "id": "0x15" + }, + { + "from": 766, + "to": 767, + "id": "0x18" + }, + { + "from": 768, + "to": 768, + "id": "0x1A" + }, + { + "from": 769, + "to": 769, + "id": "0x1A" + }, + { + "from": 770, + "to": 770, + "id": "0x1A" + }, + { + "from": 771, + "to": 772, + "id": "0x1B" + }, + { + "from": 773, + "to": 774, + "id": "0x1B" + }, + { + "from": 775, + "to": 776, + "id": "0x1C" + } + ], + "play.toServer.lock_difficulty": [ + { + "from": 735, + "to": 736, + "id": "0x11" + }, + { + "from": 751, + "to": 754, + "id": "0x11" + }, + { + "from": 755, + "to": 758, + "id": "0x10" + }, + { + "from": 759, + "to": 759, + "id": "0x12" + }, + { + "from": 760, + "to": 760, + "id": "0x13" + }, + { + "from": 761, + "to": 761, + "id": "0x12" + }, + { + "from": 762, + "to": 763, + "id": "0x13" + }, + { + "from": 764, + "to": 764, + "id": "0x15" + }, + { + "from": 765, + "to": 765, + "id": "0x16" + }, + { + "from": 766, + "to": 767, + "id": "0x19" + }, + { + "from": 768, + "to": 768, + "id": "0x1B" + }, + { + "from": 769, + "to": 769, + "id": "0x1B" + }, + { + "from": 770, + "to": 770, + "id": "0x1B" + }, + { + "from": 771, + "to": 772, + "id": "0x1C" + }, + { + "from": 773, + "to": 774, + "id": "0x1C" + }, + { + "from": 775, + "to": 776, + "id": "0x1D" + } + ], + "play.toServer.look": [ + { + "from": 735, + "to": 736, + "id": "0x14" + }, + { + "from": 751, + "to": 754, + "id": "0x14" + }, + { + "from": 755, + "to": 758, + "id": "0x13" + }, + { + "from": 759, + "to": 759, + "id": "0x15" + }, + { + "from": 760, + "to": 760, + "id": "0x16" + }, + { + "from": 761, + "to": 761, + "id": "0x15" + }, + { + "from": 762, + "to": 763, + "id": "0x16" + }, + { + "from": 764, + "to": 764, + "id": "0x18" + }, + { + "from": 765, + "to": 765, + "id": "0x19" + }, + { + "from": 766, + "to": 767, + "id": "0x1C" + }, + { + "from": 768, + "to": 768, + "id": "0x1E" + }, + { + "from": 769, + "to": 769, + "id": "0x1E" + }, + { + "from": 770, + "to": 770, + "id": "0x1E" + }, + { + "from": 771, + "to": 772, + "id": "0x1F" + }, + { + "from": 773, + "to": 774, + "id": "0x1F" + }, + { + "from": 775, + "to": 776, + "id": "0x20" + } + ], + "play.toServer.message_acknowledgement": [ + { + "from": 760, + "to": 760, + "id": "0x03" + }, + { + "from": 761, + "to": 761, + "id": "0x03" + }, + { + "from": 762, + "to": 763, + "id": "0x03" + }, + { + "from": 764, + "to": 764, + "id": "0x03" + }, + { + "from": 765, + "to": 765, + "id": "0x03" + }, + { + "from": 766, + "to": 767, + "id": "0x03" + }, + { + "from": 768, + "to": 768, + "id": "0x04" + }, + { + "from": 769, + "to": 769, + "id": "0x04" + }, + { + "from": 770, + "to": 770, + "id": "0x04" + }, + { + "from": 771, + "to": 772, + "id": "0x05" + }, + { + "from": 773, + "to": 774, + "id": "0x05" + }, + { + "from": 775, + "to": 776, + "id": "0x06" + } + ], + "play.toServer.name_item": [ + { + "from": 735, + "to": 736, + "id": "0x1F" + }, + { + "from": 751, + "to": 754, + "id": "0x20" + }, + { + "from": 755, + "to": 758, + "id": "0x20" + }, + { + "from": 759, + "to": 759, + "id": "0x22" + }, + { + "from": 760, + "to": 760, + "id": "0x23" + }, + { + "from": 761, + "to": 761, + "id": "0x23" + }, + { + "from": 762, + "to": 763, + "id": "0x23" + }, + { + "from": 764, + "to": 764, + "id": "0x26" + }, + { + "from": 765, + "to": 765, + "id": "0x27" + }, + { + "from": 766, + "to": 767, + "id": "0x2A" + }, + { + "from": 768, + "to": 768, + "id": "0x2C" + }, + { + "from": 769, + "to": 769, + "id": "0x2E" + }, + { + "from": 770, + "to": 770, + "id": "0x2E" + }, + { + "from": 771, + "to": 772, + "id": "0x2F" + }, + { + "from": 773, + "to": 774, + "id": "0x2F" + }, + { + "from": 775, + "to": 776, + "id": "0x30" + } + ], + "play.toServer.pick_item": [ + { + "from": 735, + "to": 736, + "id": "0x18" + }, + { + "from": 751, + "to": 754, + "id": "0x18" + }, + { + "from": 755, + "to": 758, + "id": "0x17" + }, + { + "from": 759, + "to": 759, + "id": "0x19" + }, + { + "from": 760, + "to": 760, + "id": "0x1A" + }, + { + "from": 761, + "to": 761, + "id": "0x19" + }, + { + "from": 762, + "to": 763, + "id": "0x1A" + }, + { + "from": 764, + "to": 764, + "id": "0x1C" + }, + { + "from": 765, + "to": 765, + "id": "0x1D" + }, + { + "from": 766, + "to": 767, + "id": "0x20" + }, + { + "from": 768, + "to": 768, + "id": "0x22" + } + ], + "play.toServer.pick_item_from_block": [ + { + "from": 769, + "to": 769, + "id": "0x22" + }, + { + "from": 770, + "to": 770, + "id": "0x22" + }, + { + "from": 771, + "to": 772, + "id": "0x23" + }, + { + "from": 773, + "to": 774, + "id": "0x23" + }, + { + "from": 775, + "to": 776, + "id": "0x24" + } + ], + "play.toServer.pick_item_from_entity": [ + { + "from": 769, + "to": 769, + "id": "0x23" + }, + { + "from": 770, + "to": 770, + "id": "0x23" + }, + { + "from": 771, + "to": 772, + "id": "0x24" + }, + { + "from": 773, + "to": 774, + "id": "0x24" + }, + { + "from": 775, + "to": 776, + "id": "0x25" + } + ], + "play.toServer.ping_request": [ + { + "from": 764, + "to": 764, + "id": "0x1D" + }, + { + "from": 765, + "to": 765, + "id": "0x1E" + }, + { + "from": 766, + "to": 767, + "id": "0x21" + }, + { + "from": 768, + "to": 768, + "id": "0x23" + }, + { + "from": 769, + "to": 769, + "id": "0x24" + }, + { + "from": 770, + "to": 770, + "id": "0x24" + }, + { + "from": 771, + "to": 772, + "id": "0x25" + }, + { + "from": 773, + "to": 774, + "id": "0x25" + }, + { + "from": 775, + "to": 776, + "id": "0x26" + } + ], + "play.toServer.player_input": [ + { + "from": 768, + "to": 768, + "id": "0x28" + }, + { + "from": 769, + "to": 769, + "id": "0x29" + }, + { + "from": 770, + "to": 770, + "id": "0x29" + }, + { + "from": 771, + "to": 772, + "id": "0x2A" + }, + { + "from": 773, + "to": 774, + "id": "0x2A" + }, + { + "from": 775, + "to": 776, + "id": "0x2B" + } + ], + "play.toServer.player_loaded": [ + { + "from": 769, + "to": 769, + "id": "0x2A" + }, + { + "from": 770, + "to": 770, + "id": "0x2A" + }, + { + "from": 771, + "to": 772, + "id": "0x2B" + }, + { + "from": 773, + "to": 774, + "id": "0x2B" + }, + { + "from": 775, + "to": 776, + "id": "0x2C" + } + ], + "play.toServer.pong": [ + { + "from": 755, + "to": 758, + "id": "0x1D" + }, + { + "from": 759, + "to": 759, + "id": "0x1F" + }, + { + "from": 760, + "to": 760, + "id": "0x20" + }, + { + "from": 761, + "to": 761, + "id": "0x1F" + }, + { + "from": 762, + "to": 763, + "id": "0x20" + }, + { + "from": 764, + "to": 764, + "id": "0x23" + }, + { + "from": 765, + "to": 765, + "id": "0x24" + }, + { + "from": 766, + "to": 767, + "id": "0x27" + }, + { + "from": 768, + "to": 768, + "id": "0x29" + }, + { + "from": 769, + "to": 769, + "id": "0x2B" + }, + { + "from": 770, + "to": 770, + "id": "0x2B" + }, + { + "from": 771, + "to": 772, + "id": "0x2C" + }, + { + "from": 773, + "to": 774, + "id": "0x2C" + }, + { + "from": 775, + "to": 776, + "id": "0x2D" + } + ], + "play.toServer.position": [ + { + "from": 735, + "to": 736, + "id": "0x12" + }, + { + "from": 751, + "to": 754, + "id": "0x12" + }, + { + "from": 755, + "to": 758, + "id": "0x11" + }, + { + "from": 759, + "to": 759, + "id": "0x13" + }, + { + "from": 760, + "to": 760, + "id": "0x14" + }, + { + "from": 761, + "to": 761, + "id": "0x13" + }, + { + "from": 762, + "to": 763, + "id": "0x14" + }, + { + "from": 764, + "to": 764, + "id": "0x16" + }, + { + "from": 765, + "to": 765, + "id": "0x17" + }, + { + "from": 766, + "to": 767, + "id": "0x1A" + }, + { + "from": 768, + "to": 768, + "id": "0x1C" + }, + { + "from": 769, + "to": 769, + "id": "0x1C" + }, + { + "from": 770, + "to": 770, + "id": "0x1C" + }, + { + "from": 771, + "to": 772, + "id": "0x1D" + }, + { + "from": 773, + "to": 774, + "id": "0x1D" + }, + { + "from": 775, + "to": 776, + "id": "0x1E" + } + ], + "play.toServer.position_look": [ + { + "from": 735, + "to": 736, + "id": "0x13" + }, + { + "from": 751, + "to": 754, + "id": "0x13" + }, + { + "from": 755, + "to": 758, + "id": "0x12" + }, + { + "from": 759, + "to": 759, + "id": "0x14" + }, + { + "from": 760, + "to": 760, + "id": "0x15" + }, + { + "from": 761, + "to": 761, + "id": "0x14" + }, + { + "from": 762, + "to": 763, + "id": "0x15" + }, + { + "from": 764, + "to": 764, + "id": "0x17" + }, + { + "from": 765, + "to": 765, + "id": "0x18" + }, + { + "from": 766, + "to": 767, + "id": "0x1B" + }, + { + "from": 768, + "to": 768, + "id": "0x1D" + }, + { + "from": 769, + "to": 769, + "id": "0x1D" + }, + { + "from": 770, + "to": 770, + "id": "0x1D" + }, + { + "from": 771, + "to": 772, + "id": "0x1E" + }, + { + "from": 773, + "to": 774, + "id": "0x1E" + }, + { + "from": 775, + "to": 776, + "id": "0x1F" + } + ], + "play.toServer.query_block_nbt": [ + { + "from": 735, + "to": 736, + "id": "0x01" + }, + { + "from": 751, + "to": 754, + "id": "0x01" + }, + { + "from": 755, + "to": 758, + "id": "0x01" + }, + { + "from": 759, + "to": 759, + "id": "0x01" + }, + { + "from": 760, + "to": 760, + "id": "0x01" + }, + { + "from": 761, + "to": 761, + "id": "0x01" + }, + { + "from": 762, + "to": 763, + "id": "0x01" + }, + { + "from": 764, + "to": 764, + "id": "0x01" + }, + { + "from": 765, + "to": 765, + "id": "0x01" + }, + { + "from": 766, + "to": 767, + "id": "0x01" + }, + { + "from": 768, + "to": 768, + "id": "0x01" + }, + { + "from": 769, + "to": 769, + "id": "0x01" + }, + { + "from": 770, + "to": 770, + "id": "0x01" + }, + { + "from": 771, + "to": 772, + "id": "0x01" + }, + { + "from": 773, + "to": 774, + "id": "0x01" + }, + { + "from": 775, + "to": 776, + "id": "0x02" + } + ], + "play.toServer.query_entity_nbt": [ + { + "from": 735, + "to": 736, + "id": "0x0D" + }, + { + "from": 751, + "to": 754, + "id": "0x0D" + }, + { + "from": 755, + "to": 758, + "id": "0x0C" + }, + { + "from": 759, + "to": 759, + "id": "0x0E" + }, + { + "from": 760, + "to": 760, + "id": "0x0F" + }, + { + "from": 761, + "to": 761, + "id": "0x0E" + }, + { + "from": 762, + "to": 763, + "id": "0x0F" + }, + { + "from": 764, + "to": 764, + "id": "0x11" + }, + { + "from": 765, + "to": 765, + "id": "0x12" + }, + { + "from": 766, + "to": 767, + "id": "0x15" + }, + { + "from": 768, + "to": 768, + "id": "0x17" + }, + { + "from": 769, + "to": 769, + "id": "0x17" + }, + { + "from": 770, + "to": 770, + "id": "0x17" + }, + { + "from": 771, + "to": 772, + "id": "0x18" + }, + { + "from": 773, + "to": 774, + "id": "0x18" + }, + { + "from": 775, + "to": 776, + "id": "0x19" + } + ], + "play.toServer.recipe_book": [ + { + "from": 751, + "to": 754, + "id": "0x1E" + }, + { + "from": 755, + "to": 758, + "id": "0x1E" + }, + { + "from": 759, + "to": 759, + "id": "0x20" + }, + { + "from": 760, + "to": 760, + "id": "0x21" + }, + { + "from": 761, + "to": 761, + "id": "0x21" + }, + { + "from": 762, + "to": 763, + "id": "0x21" + }, + { + "from": 764, + "to": 764, + "id": "0x24" + }, + { + "from": 765, + "to": 765, + "id": "0x25" + }, + { + "from": 766, + "to": 767, + "id": "0x28" + }, + { + "from": 768, + "to": 768, + "id": "0x2A" + }, + { + "from": 769, + "to": 769, + "id": "0x2C" + }, + { + "from": 770, + "to": 770, + "id": "0x2C" + }, + { + "from": 771, + "to": 772, + "id": "0x2D" + }, + { + "from": 773, + "to": 774, + "id": "0x2D" + }, + { + "from": 775, + "to": 776, + "id": "0x2E" + } + ], + "play.toServer.resource_pack_receive": [ + { + "from": 735, + "to": 736, + "id": "0x20" + }, + { + "from": 751, + "to": 754, + "id": "0x21" + }, + { + "from": 755, + "to": 758, + "id": "0x21" + }, + { + "from": 759, + "to": 759, + "id": "0x23" + }, + { + "from": 760, + "to": 760, + "id": "0x24" + }, + { + "from": 761, + "to": 761, + "id": "0x24" + }, + { + "from": 762, + "to": 763, + "id": "0x24" + }, + { + "from": 764, + "to": 764, + "id": "0x27" + }, + { + "from": 765, + "to": 765, + "id": "0x28" + }, + { + "from": 766, + "to": 767, + "id": "0x2B" + }, + { + "from": 768, + "to": 768, + "id": "0x2D" + }, + { + "from": 769, + "to": 769, + "id": "0x2F" + }, + { + "from": 770, + "to": 770, + "id": "0x2F" + }, + { + "from": 771, + "to": 772, + "id": "0x30" + }, + { + "from": 773, + "to": 774, + "id": "0x30" + }, + { + "from": 775, + "to": 776, + "id": "0x31" + } + ], + "play.toServer.select_bundle_item": [ + { + "from": 768, + "to": 768, + "id": "0x02" + }, + { + "from": 769, + "to": 769, + "id": "0x02" + }, + { + "from": 770, + "to": 770, + "id": "0x02" + }, + { + "from": 771, + "to": 772, + "id": "0x02" + }, + { + "from": 773, + "to": 774, + "id": "0x02" + }, + { + "from": 775, + "to": 776, + "id": "0x03" + } + ], + "play.toServer.select_trade": [ + { + "from": 735, + "to": 736, + "id": "0x22" + }, + { + "from": 751, + "to": 754, + "id": "0x23" + }, + { + "from": 755, + "to": 758, + "id": "0x23" + }, + { + "from": 759, + "to": 759, + "id": "0x25" + }, + { + "from": 760, + "to": 760, + "id": "0x26" + }, + { + "from": 761, + "to": 761, + "id": "0x26" + }, + { + "from": 762, + "to": 763, + "id": "0x26" + }, + { + "from": 764, + "to": 764, + "id": "0x29" + }, + { + "from": 765, + "to": 765, + "id": "0x2A" + }, + { + "from": 766, + "to": 767, + "id": "0x2D" + }, + { + "from": 768, + "to": 768, + "id": "0x2F" + }, + { + "from": 769, + "to": 769, + "id": "0x31" + }, + { + "from": 770, + "to": 770, + "id": "0x31" + }, + { + "from": 771, + "to": 772, + "id": "0x32" + }, + { + "from": 773, + "to": 774, + "id": "0x32" + }, + { + "from": 775, + "to": 776, + "id": "0x33" + } + ], + "play.toServer.set_beacon_effect": [ + { + "from": 735, + "to": 736, + "id": "0x23" + }, + { + "from": 751, + "to": 754, + "id": "0x24" + }, + { + "from": 755, + "to": 758, + "id": "0x24" + }, + { + "from": 759, + "to": 759, + "id": "0x26" + }, + { + "from": 760, + "to": 760, + "id": "0x27" + }, + { + "from": 761, + "to": 761, + "id": "0x27" + }, + { + "from": 762, + "to": 763, + "id": "0x27" + }, + { + "from": 764, + "to": 764, + "id": "0x2A" + }, + { + "from": 765, + "to": 765, + "id": "0x2B" + }, + { + "from": 766, + "to": 767, + "id": "0x2E" + }, + { + "from": 768, + "to": 768, + "id": "0x30" + }, + { + "from": 769, + "to": 769, + "id": "0x32" + }, + { + "from": 770, + "to": 770, + "id": "0x32" + }, + { + "from": 771, + "to": 772, + "id": "0x33" + }, + { + "from": 773, + "to": 774, + "id": "0x33" + }, + { + "from": 775, + "to": 776, + "id": "0x34" + } + ], + "play.toServer.set_creative_slot": [ + { + "from": 735, + "to": 736, + "id": "0x27" + }, + { + "from": 751, + "to": 754, + "id": "0x28" + }, + { + "from": 755, + "to": 758, + "id": "0x28" + }, + { + "from": 759, + "to": 759, + "id": "0x2A" + }, + { + "from": 760, + "to": 760, + "id": "0x2B" + }, + { + "from": 761, + "to": 761, + "id": "0x2B" + }, + { + "from": 762, + "to": 763, + "id": "0x2B" + }, + { + "from": 764, + "to": 764, + "id": "0x2E" + }, + { + "from": 765, + "to": 765, + "id": "0x2F" + }, + { + "from": 766, + "to": 767, + "id": "0x32" + }, + { + "from": 768, + "to": 768, + "id": "0x34" + }, + { + "from": 769, + "to": 769, + "id": "0x36" + }, + { + "from": 770, + "to": 770, + "id": "0x36" + }, + { + "from": 771, + "to": 772, + "id": "0x37" + }, + { + "from": 773, + "to": 774, + "id": "0x37" + }, + { + "from": 775, + "to": 776, + "id": "0x38" + } + ], + "play.toServer.set_difficulty": [ + { + "from": 735, + "to": 736, + "id": "0x02" + }, + { + "from": 751, + "to": 754, + "id": "0x02" + }, + { + "from": 755, + "to": 758, + "id": "0x02" + }, + { + "from": 759, + "to": 759, + "id": "0x02" + }, + { + "from": 760, + "to": 760, + "id": "0x02" + }, + { + "from": 761, + "to": 761, + "id": "0x02" + }, + { + "from": 762, + "to": 763, + "id": "0x02" + }, + { + "from": 764, + "to": 764, + "id": "0x02" + }, + { + "from": 765, + "to": 765, + "id": "0x02" + }, + { + "from": 766, + "to": 767, + "id": "0x02" + }, + { + "from": 768, + "to": 768, + "id": "0x03" + }, + { + "from": 769, + "to": 769, + "id": "0x03" + }, + { + "from": 770, + "to": 770, + "id": "0x03" + }, + { + "from": 771, + "to": 772, + "id": "0x03" + }, + { + "from": 773, + "to": 774, + "id": "0x03" + }, + { + "from": 775, + "to": 776, + "id": "0x04" + } + ], + "play.toServer.set_game_rule": [ + { + "from": 775, + "to": 776, + "id": "0x39" + } + ], + "play.toServer.set_slot_state": [ + { + "from": 765, + "to": 765, + "id": "0x0F" + }, + { + "from": 766, + "to": 767, + "id": "0x10" + }, + { + "from": 768, + "to": 768, + "id": "0x12" + }, + { + "from": 769, + "to": 769, + "id": "0x12" + }, + { + "from": 770, + "to": 770, + "id": "0x12" + }, + { + "from": 771, + "to": 772, + "id": "0x13" + }, + { + "from": 773, + "to": 774, + "id": "0x13" + }, + { + "from": 775, + "to": 776, + "id": "0x14" + } + ], + "play.toServer.set_test_block": [ + { + "from": 770, + "to": 770, + "id": "0x39" + }, + { + "from": 771, + "to": 772, + "id": "0x3A" + }, + { + "from": 773, + "to": 774, + "id": "0x3A" + }, + { + "from": 775, + "to": 776, + "id": "0x3C" + } + ], + "play.toServer.settings": [ + { + "from": 735, + "to": 736, + "id": "0x05" + }, + { + "from": 751, + "to": 754, + "id": "0x05" + }, + { + "from": 755, + "to": 758, + "id": "0x05" + }, + { + "from": 759, + "to": 759, + "id": "0x07" + }, + { + "from": 760, + "to": 760, + "id": "0x08" + }, + { + "from": 761, + "to": 761, + "id": "0x07" + }, + { + "from": 762, + "to": 763, + "id": "0x08" + }, + { + "from": 764, + "to": 764, + "id": "0x09" + }, + { + "from": 765, + "to": 765, + "id": "0x09" + }, + { + "from": 766, + "to": 767, + "id": "0x0A" + }, + { + "from": 768, + "to": 768, + "id": "0x0C" + }, + { + "from": 769, + "to": 769, + "id": "0x0C" + }, + { + "from": 770, + "to": 770, + "id": "0x0C" + }, + { + "from": 771, + "to": 772, + "id": "0x0D" + }, + { + "from": 773, + "to": 774, + "id": "0x0D" + }, + { + "from": 775, + "to": 776, + "id": "0x0E" + } + ], + "play.toServer.spectate": [ + { + "from": 735, + "to": 736, + "id": "0x2C" + }, + { + "from": 751, + "to": 754, + "id": "0x2D" + }, + { + "from": 755, + "to": 758, + "id": "0x2D" + }, + { + "from": 759, + "to": 759, + "id": "0x2F" + }, + { + "from": 760, + "to": 760, + "id": "0x30" + }, + { + "from": 761, + "to": 761, + "id": "0x30" + }, + { + "from": 762, + "to": 763, + "id": "0x30" + }, + { + "from": 764, + "to": 764, + "id": "0x33" + }, + { + "from": 765, + "to": 765, + "id": "0x34" + }, + { + "from": 766, + "to": 767, + "id": "0x37" + }, + { + "from": 768, + "to": 768, + "id": "0x39" + }, + { + "from": 769, + "to": 769, + "id": "0x3B" + }, + { + "from": 770, + "to": 770, + "id": "0x3D" + }, + { + "from": 771, + "to": 772, + "id": "0x3D" + }, + { + "from": 773, + "to": 774, + "id": "0x3D" + }, + { + "from": 775, + "to": 776, + "id": "0x40" + } + ], + "play.toServer.spectate_entity": [ + { + "from": 775, + "to": 776, + "id": "0x3E" + } + ], + "play.toServer.steer_boat": [ + { + "from": 735, + "to": 736, + "id": "0x17" + }, + { + "from": 751, + "to": 754, + "id": "0x17" + }, + { + "from": 755, + "to": 758, + "id": "0x16" + }, + { + "from": 759, + "to": 759, + "id": "0x18" + }, + { + "from": 760, + "to": 760, + "id": "0x19" + }, + { + "from": 761, + "to": 761, + "id": "0x18" + }, + { + "from": 762, + "to": 763, + "id": "0x19" + }, + { + "from": 764, + "to": 764, + "id": "0x1B" + }, + { + "from": 765, + "to": 765, + "id": "0x1C" + }, + { + "from": 766, + "to": 767, + "id": "0x1F" + }, + { + "from": 768, + "to": 768, + "id": "0x21" + }, + { + "from": 769, + "to": 769, + "id": "0x21" + }, + { + "from": 770, + "to": 770, + "id": "0x21" + }, + { + "from": 771, + "to": 772, + "id": "0x22" + }, + { + "from": 773, + "to": 774, + "id": "0x22" + }, + { + "from": 775, + "to": 776, + "id": "0x23" + } + ], + "play.toServer.steer_vehicle": [ + { + "from": 735, + "to": 736, + "id": "0x1D" + }, + { + "from": 751, + "to": 754, + "id": "0x1D" + }, + { + "from": 755, + "to": 758, + "id": "0x1C" + }, + { + "from": 759, + "to": 759, + "id": "0x1E" + }, + { + "from": 760, + "to": 760, + "id": "0x1F" + }, + { + "from": 761, + "to": 761, + "id": "0x1E" + }, + { + "from": 762, + "to": 763, + "id": "0x1F" + }, + { + "from": 764, + "to": 764, + "id": "0x22" + }, + { + "from": 765, + "to": 765, + "id": "0x23" + }, + { + "from": 766, + "to": 767, + "id": "0x26" + } + ], + "play.toServer.tab_complete": [ + { + "from": 735, + "to": 736, + "id": "0x06" + }, + { + "from": 751, + "to": 754, + "id": "0x06" + }, + { + "from": 755, + "to": 758, + "id": "0x06" + }, + { + "from": 759, + "to": 759, + "id": "0x08" + }, + { + "from": 760, + "to": 760, + "id": "0x09" + }, + { + "from": 761, + "to": 761, + "id": "0x08" + }, + { + "from": 762, + "to": 763, + "id": "0x09" + }, + { + "from": 764, + "to": 764, + "id": "0x0A" + }, + { + "from": 765, + "to": 765, + "id": "0x0A" + }, + { + "from": 766, + "to": 767, + "id": "0x0B" + }, + { + "from": 768, + "to": 768, + "id": "0x0D" + }, + { + "from": 769, + "to": 769, + "id": "0x0D" + }, + { + "from": 770, + "to": 770, + "id": "0x0D" + }, + { + "from": 771, + "to": 772, + "id": "0x0E" + }, + { + "from": 773, + "to": 774, + "id": "0x0E" + }, + { + "from": 775, + "to": 776, + "id": "0x0F" + } + ], + "play.toServer.teleport_confirm": [ + { + "from": 735, + "to": 736, + "id": "0x00" + }, + { + "from": 751, + "to": 754, + "id": "0x00" + }, + { + "from": 755, + "to": 758, + "id": "0x00" + }, + { + "from": 759, + "to": 759, + "id": "0x00" + }, + { + "from": 760, + "to": 760, + "id": "0x00" + }, + { + "from": 761, + "to": 761, + "id": "0x00" + }, + { + "from": 762, + "to": 763, + "id": "0x00" + }, + { + "from": 764, + "to": 764, + "id": "0x00" + }, + { + "from": 765, + "to": 765, + "id": "0x00" + }, + { + "from": 766, + "to": 767, + "id": "0x00" + }, + { + "from": 768, + "to": 768, + "id": "0x00" + }, + { + "from": 769, + "to": 769, + "id": "0x00" + }, + { + "from": 770, + "to": 770, + "id": "0x00" + }, + { + "from": 771, + "to": 772, + "id": "0x00" + }, + { + "from": 773, + "to": 774, + "id": "0x00" + }, + { + "from": 775, + "to": 776, + "id": "0x00" + } + ], + "play.toServer.test_instance_block_action": [ + { + "from": 770, + "to": 770, + "id": "0x3C" + }, + { + "from": 771, + "to": 772, + "id": "0x3E" + }, + { + "from": 773, + "to": 774, + "id": "0x3E" + }, + { + "from": 775, + "to": 776, + "id": "0x41" + } + ], + "play.toServer.tick_end": [ + { + "from": 768, + "to": 768, + "id": "0x0B" + }, + { + "from": 769, + "to": 769, + "id": "0x0B" + }, + { + "from": 770, + "to": 770, + "id": "0x0B" + }, + { + "from": 771, + "to": 772, + "id": "0x0C" + }, + { + "from": 773, + "to": 774, + "id": "0x0C" + }, + { + "from": 775, + "to": 776, + "id": "0x0D" + } + ], + "play.toServer.transaction": [ + { + "from": 735, + "to": 736, + "id": "0x07" + }, + { + "from": 751, + "to": 754, + "id": "0x07" + } + ], + "play.toServer.update_command_block": [ + { + "from": 735, + "to": 736, + "id": "0x25" + }, + { + "from": 751, + "to": 754, + "id": "0x26" + }, + { + "from": 755, + "to": 758, + "id": "0x26" + }, + { + "from": 759, + "to": 759, + "id": "0x28" + }, + { + "from": 760, + "to": 760, + "id": "0x29" + }, + { + "from": 761, + "to": 761, + "id": "0x29" + }, + { + "from": 762, + "to": 763, + "id": "0x29" + }, + { + "from": 764, + "to": 764, + "id": "0x2C" + }, + { + "from": 765, + "to": 765, + "id": "0x2D" + }, + { + "from": 766, + "to": 767, + "id": "0x30" + }, + { + "from": 768, + "to": 768, + "id": "0x32" + }, + { + "from": 769, + "to": 769, + "id": "0x34" + }, + { + "from": 770, + "to": 770, + "id": "0x34" + }, + { + "from": 771, + "to": 772, + "id": "0x35" + }, + { + "from": 773, + "to": 774, + "id": "0x35" + }, + { + "from": 775, + "to": 776, + "id": "0x36" + } + ], + "play.toServer.update_command_block_minecart": [ + { + "from": 735, + "to": 736, + "id": "0x26" + }, + { + "from": 751, + "to": 754, + "id": "0x27" + }, + { + "from": 755, + "to": 758, + "id": "0x27" + }, + { + "from": 759, + "to": 759, + "id": "0x29" + }, + { + "from": 760, + "to": 760, + "id": "0x2A" + }, + { + "from": 761, + "to": 761, + "id": "0x2A" + }, + { + "from": 762, + "to": 763, + "id": "0x2A" + }, + { + "from": 764, + "to": 764, + "id": "0x2D" + }, + { + "from": 765, + "to": 765, + "id": "0x2E" + }, + { + "from": 766, + "to": 767, + "id": "0x31" + }, + { + "from": 768, + "to": 768, + "id": "0x33" + }, + { + "from": 769, + "to": 769, + "id": "0x35" + }, + { + "from": 770, + "to": 770, + "id": "0x35" + }, + { + "from": 771, + "to": 772, + "id": "0x36" + }, + { + "from": 773, + "to": 774, + "id": "0x36" + }, + { + "from": 775, + "to": 776, + "id": "0x37" + } + ], + "play.toServer.update_jigsaw_block": [ + { + "from": 735, + "to": 736, + "id": "0x28" + }, + { + "from": 751, + "to": 754, + "id": "0x29" + }, + { + "from": 755, + "to": 758, + "id": "0x29" + }, + { + "from": 759, + "to": 759, + "id": "0x2B" + }, + { + "from": 760, + "to": 760, + "id": "0x2C" + }, + { + "from": 761, + "to": 761, + "id": "0x2C" + }, + { + "from": 762, + "to": 763, + "id": "0x2C" + }, + { + "from": 764, + "to": 764, + "id": "0x2F" + }, + { + "from": 765, + "to": 765, + "id": "0x30" + }, + { + "from": 766, + "to": 767, + "id": "0x33" + }, + { + "from": 768, + "to": 768, + "id": "0x35" + }, + { + "from": 769, + "to": 769, + "id": "0x37" + }, + { + "from": 770, + "to": 770, + "id": "0x37" + }, + { + "from": 771, + "to": 772, + "id": "0x38" + }, + { + "from": 773, + "to": 774, + "id": "0x38" + }, + { + "from": 775, + "to": 776, + "id": "0x3A" + } + ], + "play.toServer.update_sign": [ + { + "from": 735, + "to": 736, + "id": "0x2A" + }, + { + "from": 751, + "to": 754, + "id": "0x2B" + }, + { + "from": 755, + "to": 758, + "id": "0x2B" + }, + { + "from": 759, + "to": 759, + "id": "0x2D" + }, + { + "from": 760, + "to": 760, + "id": "0x2E" + }, + { + "from": 761, + "to": 761, + "id": "0x2E" + }, + { + "from": 762, + "to": 763, + "id": "0x2E" + }, + { + "from": 764, + "to": 764, + "id": "0x31" + }, + { + "from": 765, + "to": 765, + "id": "0x32" + }, + { + "from": 766, + "to": 767, + "id": "0x35" + }, + { + "from": 768, + "to": 768, + "id": "0x37" + }, + { + "from": 769, + "to": 769, + "id": "0x39" + }, + { + "from": 770, + "to": 770, + "id": "0x3A" + }, + { + "from": 771, + "to": 772, + "id": "0x3B" + }, + { + "from": 773, + "to": 774, + "id": "0x3B" + }, + { + "from": 775, + "to": 776, + "id": "0x3D" + } + ], + "play.toServer.update_structure_block": [ + { + "from": 735, + "to": 736, + "id": "0x29" + }, + { + "from": 751, + "to": 754, + "id": "0x2A" + }, + { + "from": 755, + "to": 758, + "id": "0x2A" + }, + { + "from": 759, + "to": 759, + "id": "0x2C" + }, + { + "from": 760, + "to": 760, + "id": "0x2D" + }, + { + "from": 761, + "to": 761, + "id": "0x2D" + }, + { + "from": 762, + "to": 763, + "id": "0x2D" + }, + { + "from": 764, + "to": 764, + "id": "0x30" + }, + { + "from": 765, + "to": 765, + "id": "0x31" + }, + { + "from": 766, + "to": 767, + "id": "0x34" + }, + { + "from": 768, + "to": 768, + "id": "0x36" + }, + { + "from": 769, + "to": 769, + "id": "0x38" + }, + { + "from": 770, + "to": 770, + "id": "0x38" + }, + { + "from": 771, + "to": 772, + "id": "0x39" + }, + { + "from": 773, + "to": 774, + "id": "0x39" + }, + { + "from": 775, + "to": 776, + "id": "0x3B" + } + ], + "play.toServer.use_entity": [ + { + "from": 735, + "to": 736, + "id": "0x0E" + }, + { + "from": 751, + "to": 754, + "id": "0x0E" + }, + { + "from": 755, + "to": 758, + "id": "0x0D" + }, + { + "from": 759, + "to": 759, + "id": "0x0F" + }, + { + "from": 760, + "to": 760, + "id": "0x10" + }, + { + "from": 761, + "to": 761, + "id": "0x0F" + }, + { + "from": 762, + "to": 763, + "id": "0x10" + }, + { + "from": 764, + "to": 764, + "id": "0x12" + }, + { + "from": 765, + "to": 765, + "id": "0x13" + }, + { + "from": 766, + "to": 767, + "id": "0x16" + }, + { + "from": 768, + "to": 768, + "id": "0x18" + }, + { + "from": 769, + "to": 769, + "id": "0x18" + }, + { + "from": 770, + "to": 770, + "id": "0x18" + }, + { + "from": 771, + "to": 772, + "id": "0x19" + }, + { + "from": 773, + "to": 774, + "id": "0x19" + }, + { + "from": 775, + "to": 776, + "id": "0x1A" + } + ], + "play.toServer.use_item": [ + { + "from": 735, + "to": 736, + "id": "0x2E" + }, + { + "from": 751, + "to": 754, + "id": "0x2F" + }, + { + "from": 755, + "to": 758, + "id": "0x2F" + }, + { + "from": 759, + "to": 759, + "id": "0x31" + }, + { + "from": 760, + "to": 760, + "id": "0x32" + }, + { + "from": 761, + "to": 761, + "id": "0x32" + }, + { + "from": 762, + "to": 763, + "id": "0x32" + }, + { + "from": 764, + "to": 764, + "id": "0x35" + }, + { + "from": 765, + "to": 765, + "id": "0x36" + }, + { + "from": 766, + "to": 767, + "id": "0x39" + }, + { + "from": 768, + "to": 768, + "id": "0x3B" + }, + { + "from": 769, + "to": 769, + "id": "0x3D" + }, + { + "from": 770, + "to": 770, + "id": "0x3F" + }, + { + "from": 771, + "to": 772, + "id": "0x40" + }, + { + "from": 773, + "to": 774, + "id": "0x40" + }, + { + "from": 775, + "to": 776, + "id": "0x43" + } + ], + "play.toServer.vehicle_move": [ + { + "from": 735, + "to": 736, + "id": "0x16" + }, + { + "from": 751, + "to": 754, + "id": "0x16" + }, + { + "from": 755, + "to": 758, + "id": "0x15" + }, + { + "from": 759, + "to": 759, + "id": "0x17" + }, + { + "from": 760, + "to": 760, + "id": "0x18" + }, + { + "from": 761, + "to": 761, + "id": "0x17" + }, + { + "from": 762, + "to": 763, + "id": "0x18" + }, + { + "from": 764, + "to": 764, + "id": "0x1A" + }, + { + "from": 765, + "to": 765, + "id": "0x1B" + }, + { + "from": 766, + "to": 767, + "id": "0x1E" + }, + { + "from": 768, + "to": 768, + "id": "0x20" + }, + { + "from": 769, + "to": 769, + "id": "0x20" + }, + { + "from": 770, + "to": 770, + "id": "0x20" + }, + { + "from": 771, + "to": 772, + "id": "0x21" + }, + { + "from": 773, + "to": 774, + "id": "0x21" + }, + { + "from": 775, + "to": 776, + "id": "0x22" + } + ], + "play.toServer.window_click": [ + { + "from": 735, + "to": 736, + "id": "0x09" + }, + { + "from": 751, + "to": 754, + "id": "0x09" + }, + { + "from": 755, + "to": 758, + "id": "0x08" + }, + { + "from": 759, + "to": 759, + "id": "0x0A" + }, + { + "from": 760, + "to": 760, + "id": "0x0B" + }, + { + "from": 761, + "to": 761, + "id": "0x0A" + }, + { + "from": 762, + "to": 763, + "id": "0x0B" + }, + { + "from": 764, + "to": 764, + "id": "0x0D" + }, + { + "from": 765, + "to": 765, + "id": "0x0D" + }, + { + "from": 766, + "to": 767, + "id": "0x0E" + }, + { + "from": 768, + "to": 768, + "id": "0x10" + }, + { + "from": 769, + "to": 769, + "id": "0x10" + }, + { + "from": 770, + "to": 770, + "id": "0x10" + }, + { + "from": 771, + "to": 772, + "id": "0x11" + }, + { + "from": 773, + "to": 774, + "id": "0x11" + }, + { + "from": 775, + "to": 776, + "id": "0x12" + } + ] + } } diff --git a/minecraft-protocol-fs/Spec/todo-allowlist.txt b/minecraft-protocol-fs/Spec/todo-allowlist.txt index 3a6e598..5a158c4 100644 --- a/minecraft-protocol-fs/Spec/todo-allowlist.txt +++ b/minecraft-protocol-fs/Spec/todo-allowlist.txt @@ -1,13 +1,11 @@ # Generated files allowed to contain TODO(codegen) stub branches (known codegen -# gaps: unions, entity metadata, map columns, FixedBytes, nested arrays). `gen` -# fails when any file outside this list gains a stub; remove entries as the gaps -# close. Paths are relative to the generation root, as printed by -# `dotnet run -- gen`. +# gaps: entity metadata sentinel arrays, map columns, conditional groups, +# FixedBytes, nested arrays). `gen` fails when any file outside this list gains a +# stub, so remove entries as the gaps close. Paths are relative to the generation +# root, as printed by `dotnet run -- gen`. Packets/Login/Serverbound/EncryptionResponsePacket.cs Packets/Play/Clientbound/EntityMetadataPacket.cs Packets/Play/Clientbound/MapPacket.cs -Packets/Play/Clientbound/TeamsPacket.cs -Types/EntityMetadataEntry.cs # FixedBytes n is in the AST but has no renderer yet Packets/Play/Serverbound/ChatCommandSignedPacket.cs Types/ArgumentSignature.cs diff --git a/sandbox/McProtoNet.Sandbox.Console/Program.cs b/sandbox/McProtoNet.Sandbox.Console/Program.cs index ab8ee91..8fb67f6 100644 --- a/sandbox/McProtoNet.Sandbox.Console/Program.cs +++ b/sandbox/McProtoNet.Sandbox.Console/Program.cs @@ -6,6 +6,8 @@ using McProtoNet.Protocol.Packets.Status.Clientbound; using McProtoNet.Protocol.Packets.Status.Serverbound; using McProtoNet.Serialization; +using UseEntityPacket = McProtoNet.Protocol.Packets.Play.Serverbound.UseEntityPacket; +using McProtoNet.NBT; int version = MinecraftVersion.LatestProtocol; @@ -31,6 +33,61 @@ static void Assert(bool condition, [System.Runtime.CompilerServices.CallerArgume Console.WriteLine($" read {back} round-trips: {v == back}\n"); } +// --- LpVec3: hand-written runtime primitive, quantized with a transmitted scale (773+) --- +{ + var zero = new LpVec3(0d, 0d, 0d); + var wz = new MinecraftPrimitiveWriter(); + zero.Write(wz, version); + var zeroBytes = wz.ToArray(); + Assert(Hex(zeroBytes) == "00"); + + // Both vectors and their wire bytes come from the protocol documentation's own samples. + foreach (var (v, expected) in new[] + { + (new LpVec3(1.0d, 0.0d, -1.0d), "F1FF0000FFFF"), + (new LpVec3(10.0d, 0.2d, -5.0d), "F6FF4001051F02"), + }) + { + var w = new MinecraftPrimitiveWriter(); + v.Write(w, version); + var bytes = w.ToArray(); + Assert(Hex(bytes) == expected); + + var r = new MinecraftPrimitiveReader(bytes); + var back = LpVec3.Read(ref r, version); + double step = Math.Ceiling(Math.Max(Math.Abs(v.X), Math.Max(Math.Abs(v.Y), Math.Abs(v.Z)))) * 2d / 32766d; + Assert(Math.Abs(back.X - v.X) <= step && Math.Abs(back.Y - v.Y) <= step && Math.Abs(back.Z - v.Z) <= step); + + Console.WriteLine($"LpVec3 {v}"); + Console.WriteLine($" wire {Hex(bytes)} ({bytes.Length} bytes)"); + Console.WriteLine($" read {back}"); + Console.WriteLine(); + } + + var rng = new Random(776); + for (int i = 0; i < 2000; i++) + { + var v = new LpVec3( + (rng.NextDouble() - 0.5d) * Math.Pow(10d, rng.Next(-4, 6)), + (rng.NextDouble() - 0.5d) * Math.Pow(10d, rng.Next(-4, 6)), + (rng.NextDouble() - 0.5d) * Math.Pow(10d, rng.Next(-4, 6))); + + var w = new MinecraftPrimitiveWriter(); + v.Write(w, version); + var bytes = w.ToArray(); + Assert(bytes.Length == 1 || bytes.Length >= 6); + + var r = new MinecraftPrimitiveReader(bytes); + var back = LpVec3.Read(ref r, version); + double scale = Math.Ceiling(Math.Max(Math.Abs(v.X), Math.Max(Math.Abs(v.Y), Math.Abs(v.Z)))); + double step = Math.Max(scale, 1d) * 2d / 32766d; + Assert(Math.Abs(back.X - v.X) <= step && Math.Abs(back.Y - v.Y) <= step && Math.Abs(back.Z - v.Z) <= step); + } + + Console.WriteLine("LpVec3 2000 random vectors round-trip within one quantization step"); + Console.WriteLine(); +} + // --- Vec3i: varint-encoded --- { var v = new Vec3i(300, -1, 42); @@ -115,17 +172,24 @@ static void Assert(bool condition, [System.Runtime.CompilerServices.CallerArgume Console.WriteLine($" wire {Hex(bytes)} ({bytes.Length} bytes) round-trips: {same}\n"); } -// --- UpdateTimePacket: MULTIVERSION — 2 fields @763, 3 fields @772 --- +// --- UpdateTimePacket: MULTIVERSION - time+tickDayTime through 774, clock list from 775 --- { - var pkt = new UpdateTimePacket(6000, 13000, V768_Last: new(true)); - foreach (var v in new[] { 763, 772 }) + var cases = new (int Version, UpdateTimePacket Packet)[] + { + (763, new UpdateTimePacket(6000, VUntil767: new(13000))), + (772, new UpdateTimePacket(6000, V768_774: new(13000, true))), + (776, new UpdateTimePacket(6000, V775_Last: new(new[] { new ClockUpdate(0, 13000, 0.25f, 1f) }))), + }; + + foreach (var (v, pkt) in cases) { var w = new MinecraftPrimitiveWriter(); pkt.Write(w, v); var bytes = w.ToArray(); var r = new MinecraftPrimitiveReader(bytes); var back = UpdateTimePacket.Read(ref r, v); - Console.WriteLine($"UpdateTimePacket @{v}: {bytes.Length} bytes, age/time ok: {back.Age == 6000 && back.Time == 13000}, tickDayTime={back.V768_Last?.TickDayTime}"); + Assert(back.Age == 6000); + Console.WriteLine($"UpdateTimePacket @{v}: {bytes.Length} bytes, clocks={back.V775_Last?.ClockUpdates.Length.ToString() ?? "-"}, tickDayTime={back.V768_774?.TickDayTime.ToString() ?? "-"}"); } Console.WriteLine(); } @@ -253,24 +317,195 @@ static void Assert(bool condition, [System.Runtime.CompilerServices.CallerArgume Console.WriteLine(); } -// --- SpawnPositionPacket: MULTIVERSION — position only @754, +angle f32 @755 --- +// --- SpawnPositionPacket: MULTIVERSION - position @754, +angle @755, RespawnData @773 --- { - var pkt = new SpawnPositionPacket(new Position(10, 64, -20), V755_Last: new(90f)); - foreach (var v in new[] { 754, 772 }) + var loc = new Position(10, 64, -20); + var cases = new (int Version, SpawnPositionPacket Packet)[] + { + (754, new SpawnPositionPacket(VUntil754: new(loc))), + (772, new SpawnPositionPacket(V755_772: new(loc, 90f))), + (776, new SpawnPositionPacket(V773_Last: new(new RespawnData(new GlobalPos("minecraft:overworld", loc), 90f, -12.5f)))), + }; + + foreach (var (v, pkt) in cases) { var w = new MinecraftPrimitiveWriter(); pkt.Write(w, v); var bytes = w.ToArray(); var r = new MinecraftPrimitiveReader(bytes); var back = SpawnPositionPacket.Read(ref r, v); - var ok = back.Location == pkt.Location && (back.V755_Last?.Angle ?? 0f) == (v >= 755 ? 90f : 0f); - Console.WriteLine($"SpawnPositionPacket @{v}: {bytes.Length} bytes, roundtrip: {ok}, loc={back.Location}"); + var readLoc = back.VUntil754?.Location ?? back.V755_772?.Location ?? back.V773_Last!.Value.RespawnData.GlobalPos.Location; + Assert(readLoc == loc); + Console.WriteLine($"SpawnPositionPacket @{v}: {bytes.Length} bytes, loc={readLoc}"); } Assert(SpawnPositionPacket.GetPacketId(735) == 0x42); Assert(SpawnPositionPacket.GetPacketId(772) == 0x5A); Console.WriteLine(); } +// --- UseEntityPacket: union era @774 (interact_at arm), flat era @776 (LpVec3) --- +{ + var w764 = new MinecraftPrimitiveWriter(); + var atPacket = new UseEntityPacket(42, true, VUntil774: new(new InteractAction.InteractAt(0.5f, 1.25f, -0.75f, 1))); + atPacket.Write(w764, 774); + var bytes764 = w764.ToArray(); + var r764 = new MinecraftPrimitiveReader(bytes764); + var back764 = UseEntityPacket.Read(ref r764, 774); + var at = back764.VUntil774!.Value.Action as InteractAction.InteractAt; + Assert(back764.Target == 42 && back764.Sneaking); + Assert(at is not null && at.X == 0.5f && at.Y == 1.25f && at.Z == -0.75f && at.Hand == 1); + Assert(bytes764[1] == 2); + + var again = new MinecraftPrimitiveWriter(); + back764.Write(again, 774); + Assert(Hex(again.ToArray()) == Hex(bytes764)); + + var w776 = new MinecraftPrimitiveWriter(); + var flat = new UseEntityPacket(42, false, V775_Last: new(0, new LpVec3(0.25d, -0.5d, 1.0d))); + flat.Write(w776, 776); + var bytes776 = w776.ToArray(); + var r776 = new MinecraftPrimitiveReader(bytes776); + var back776 = UseEntityPacket.Read(ref r776, 776); + var loc = back776.V775_Last!.Value.Location; + Assert(back776.VUntil774 is null && Math.Abs(loc.Z - 1.0d) <= 2d / 32766d); + + Console.WriteLine($"UseEntityPacket @774: {bytes764.Length} bytes, discriminator={bytes764[1]}, case={at!.GetType().Name}"); + Console.WriteLine($"UseEntityPacket @776: {bytes776.Length} bytes, location={loc}"); + Console.WriteLine(); +} + +// --- TeamAction: a dunet union behind TeamsPacket — string era @764, nbt era @772 --- +{ + // the mode field is wire-only: the model carries the case, the packet derives the byte + var created = new TeamAction.CreatedVUntil764( + "Reds", 1, "always", "never", 4, "[", "]", new[] { "Steve", "Alex" }); + Assert(created.Discriminator(764) == 0); + + var w = new MinecraftPrimitiveWriter(); + new TeamsPacket("reds", created).Write(w, 764); + var bytes = w.ToArray(); + // "reds" is one length byte plus four chars, so the mode byte sits at index 5 + Assert(bytes[5] == 0x00); + + var r = new MinecraftPrimitiveReader(bytes); + var back = TeamsPacket.Read(ref r, 764); + Assert(back.TeamName == "reds"); + var backCreated = back.Action as TeamAction.CreatedVUntil764; + Assert(backCreated is not null); + Assert(backCreated!.Name == "Reds" && backCreated.FriendlyFire == 1 && backCreated.Prefix == "[" + && backCreated.Players.Length == 2 && backCreated.Players[1] == "Alex"); + Console.WriteLine($"TeamsPacket @764: {bytes.Length} bytes, mode={bytes[5]}, case={back.Action.GetType().Name}"); + + // one arm, two keys: the read accepts 3 and 4, the write picks the first + var changed = new TeamAction.PlayersChanged(new[] { "Steve" }); + Assert(changed.Discriminator(772) == 3); + var w2 = new MinecraftPrimitiveWriter(); + new TeamsPacket("reds", changed).Write(w2, 772); + var changedBytes = w2.ToArray(); + Assert(changedBytes[5] == 0x03); + changedBytes[5] = 0x04; + var r2 = new MinecraftPrimitiveReader(changedBytes); + var back2 = TeamsPacket.Read(ref r2, 772); + Assert(back2.Action is TeamAction.PlayersChanged { Players.Length: 1 }); + Console.WriteLine($"TeamsPacket @772: modes 3 and 4 both read as {back2.Action.GetType().Name}"); + + // the 771 layer swaps the text fields to nbt, so Created is a second case, not the same one + var teamFlags = new TeamFlags(FriendlyFire: true, SeeFriendlyInvisible: false); + var created772 = new TeamAction.CreatedV771_Last( + new NbtCompound().With("text", new NbtString("Reds")), teamFlags, 0, 1, 4, + new NbtCompound().With("text", new NbtString("[")), + new NbtCompound().With("text", new NbtString("]")), new[] { "Steve" }); + var w3 = new MinecraftPrimitiveWriter(); + new TeamsPacket("reds", created772).Write(w3, 772); + var nbtBytes = w3.ToArray(); + var r3 = new MinecraftPrimitiveReader(nbtBytes); + var back3 = TeamsPacket.Read(ref r3, 772); + var backNbt = back3.Action as TeamAction.CreatedV771_Last; + Assert(backNbt is not null); + Assert(((NbtCompound)backNbt!.Name).Items["text"] is NbtString { Value: "Reds" }); + Assert(backNbt.Flags == teamFlags); + var w4 = new MinecraftPrimitiveWriter(); + back3.Write(w4, 772); + Assert(Hex(w4.ToArray()) == Hex(nbtBytes)); + Console.WriteLine($"TeamsPacket @772: {nbtBytes.Length} bytes, re-write byte-identical, case={back3.Action.GetType().Name}"); + + // the flags bits are one u8 either way, so modelling them moved no wire byte: clearing both + // keeps the length and changes exactly the byte the old spec used to write as zero + var w5 = new MinecraftPrimitiveWriter(); + new TeamsPacket("reds", created772 with { Flags = new TeamFlags(false, false) }).Write(w5, 772); + var clearedBytes = w5.ToArray(); + Assert(clearedBytes.Length == nbtBytes.Length); + Assert(clearedBytes.Zip(nbtBytes).Count(p => p.First != p.Second) == 1); + Console.WriteLine($"TeamAction @772: flags travel as one u8 (friendly_fire, see_friendly_invisible)"); + + // a case whose layer does not cover the version must fail, not invent a shape + try + { + new TeamsPacket("reds", created).Write(new MinecraftPrimitiveWriter(), 772); + Assert(false); + } + catch (NotSupportedException) + { + } + + var kind = back3.Action.Match( + createdVUntil764: _ => "created", removed: _ => "removed", updatedVUntil764: _ => "updated", + playersAdded: _ => "playersAdded", playersRemoved: _ => "playersRemoved", + createdV771_Last: _ => "created", updatedV771_Last: _ => "updated", + playersChanged: _ => "playersChanged"); + Assert(kind == "created"); + Console.WriteLine($"TeamAction.Match -> {kind}\n"); +} + +// --- UnionShapeProbe: the union shapes EntityMetadataValue is built from --- +// EntityMetadataValue itself cannot compile here yet (its arms read Slot, Particle and the +// registry variants, none of them modelled), so its three risky shapes are compiled and +// round-tripped through a probe union instead: keyword-named cases (Byte/Int/String), a case +// carrying a same-named type (Rotations), and a case carrying an array of one (Vec3f). +{ + var probes = new UnionShapeProbe[] + { + new UnionShapeProbe.Byte(-3), + new UnionShapeProbe.Int(300), + new UnionShapeProbe.String("hello"), + new UnionShapeProbe.Rotations(new Rotations(1f, 2f, 3f)), + new UnionShapeProbe.Vec3f(new[] { new Vec3f(1f, 2f, 3f), new Vec3f(-1f, 0f, 0.5f) }), + }; + + foreach (var probe in probes) + { + var w = new MinecraftPrimitiveWriter(); + probe.Write(w, version); + var bytes = w.ToArray(); + var r = new MinecraftPrimitiveReader(bytes); + var back = UnionShapeProbe.Read(ref r, version, probe.Discriminator(version)); + Assert(back.GetType() == probe.GetType()); + + // record equality compares array references, so the wire is the equality check + var w2 = new MinecraftPrimitiveWriter(); + back.Write(w2, version); + Assert(Hex(w2.ToArray()) == Hex(bytes)); + } + + var arrayWire = WireOf(probes[4]); + var arrayReader = new MinecraftPrimitiveReader(arrayWire); + var arrayBack = (UnionShapeProbe.Vec3f)UnionShapeProbe.Read(ref arrayReader, version, 4); + Assert(arrayBack.Value.Length == 2 && arrayBack.Value[1] == new Vec3f(-1f, 0f, 0.5f)); + + var kinds = probes.Select(p => p.Match( + @byte: _ => "byte", @int: _ => "int", @string: _ => "string", + @rotations: _ => "rotations", @vec3f: _ => "vec3f")); + Assert(string.Join(",", kinds) == "byte,int,string,rotations,vec3f"); + Console.WriteLine($"UnionShapeProbe: {probes.Length} cases round-trip byte-identical, Match binds every case\n"); + + static byte[] WireOf(UnionShapeProbe probe) + { + var w = new MinecraftPrimitiveWriter(); + probe.Write(w, MinecraftVersion.LatestProtocol); + return w.ToArray(); + } +} + // --- GetPacketId: numeric ids from the McProtoFacts manifest --- { Assert(SetProtocolPacket.GetPacketId(772) == 0x00); diff --git a/sandbox/McProtoNet.Sandbox/McProtoNet.Sandbox.csproj b/sandbox/McProtoNet.Sandbox/McProtoNet.Sandbox.csproj index 9d31d20..c527e2c 100644 --- a/sandbox/McProtoNet.Sandbox/McProtoNet.Sandbox.csproj +++ b/sandbox/McProtoNet.Sandbox/McProtoNet.Sandbox.csproj @@ -9,41 +9,29 @@ + What stays excluded references a C# type the sandbox has no model for (Slot, Particle, + the registry variants) or a still-stubbed wire shape. Unions compile here now, so + TeamAction and its packet are in; EntityMetadataValue is not, because its arms read + Slot and Particle. Its three risky shapes — keyword-named cases, a case carrying a + same-named type, a case carrying an array of one — are compiled and round-tripped + through Unions/UnionShapeProbe.cs until those types exist. --> + ..\..\generated-csharp\Packets\Play\Clientbound\LoginPacket.cs; + ..\..\generated-csharp\Packets\Play\Serverbound\WindowClickPacket.cs" + Link="Generated\%(RecursiveDir)%(Filename)%(Extension)" /> + + + diff --git a/sandbox/McProtoNet.Sandbox/Runtime.cs b/sandbox/McProtoNet.Sandbox/Runtime.cs index 71ee280..b7eddda 100644 --- a/sandbox/McProtoNet.Sandbox/Runtime.cs +++ b/sandbox/McProtoNet.Sandbox/Runtime.cs @@ -91,7 +91,7 @@ public WrongLayerException(string packetName, int protocolVersion, string expect public static class MinecraftVersion { public const int StartProtocol = 735; // 1.16 - public const int LatestProtocol = 772; // 1.21.7 / 1.21.8 + public const int LatestProtocol = 776; // 26.2 } public static class ThrowHelper @@ -131,10 +131,116 @@ public readonly void Write(MinecraftPrimitiveWriter writer, int protocolVersion) writer.WriteSignedLong(v); } } + + // Hand-written runtime primitive (mirrors McProtoNet): quantized velocity vector, protocol 773+. + // 1 byte for zero; otherwise 48 bits carrying scale (2 low bits), a continuation flag and three + // 15-bit components, with the rest of the scale following as a VarInt when the flag is set. + // Referenced from specs as Named "LpVec3", never generated. + public readonly partial record struct LpVec3(double X, double Y, double Z) : IProtocolType + { + private const double MaxQuantized = 32766.0; + private const double AbsMax = 1.7179869183E10; + private const double AbsMin = 3.051944088384301E-5; + + public static LpVec3 Read(ref MinecraftPrimitiveReader reader, int protocolVersion) + { + uint first = reader.ReadUnsignedByte(); + if (first == 0) return new LpVec3(0d, 0d, 0d); + + uint second = reader.ReadUnsignedByte(); + ulong packed = ((ulong)reader.ReadUnsignedInt() << 16) | ((ulong)second << 8) | first; + + long scale = (long)(first & 3); + if ((first & 4) != 0) scale |= (long)(uint)reader.ReadVarInt() << 2; + + return new LpVec3( + Unpack(packed >> 3) * scale, + Unpack(packed >> 18) * scale, + Unpack(packed >> 33) * scale); + } + + public readonly void Write(MinecraftPrimitiveWriter writer, int protocolVersion) + { + double x = Clamp(X), y = Clamp(Y), z = Clamp(Z); + double max = Math.Max(Math.Abs(x), Math.Max(Math.Abs(y), Math.Abs(z))); + + if (max < AbsMin) + { + writer.WriteUnsignedByte(0); + return; + } + + long scale = (long)Math.Ceiling(max); + double inv = 1d / scale; + bool continued = (scale & 3) != scale; + + ulong packed = + (ulong)(scale & 3) + | (continued ? 4UL : 0UL) + | (Pack(x * inv) << 3) + | (Pack(y * inv) << 18) + | (Pack(z * inv) << 33); + + writer.WriteUnsignedByte((byte)(packed & 0xFF)); + writer.WriteUnsignedByte((byte)((packed >> 8) & 0xFF)); + writer.WriteUnsignedInt((uint)(packed >> 16)); + + if (continued) writer.WriteVarInt((int)(scale >> 2)); + } + + private static double Unpack(ulong packed) => + Math.Min(packed & 0x7FFF, MaxQuantized) * 2d / MaxQuantized - 1d; + + // Java's Math.round is floor(v + 0.5); C# Math.Round would bank on .5 and shift bytes. + private static ulong Pack(double value) => + (ulong)(long)Math.Floor((value * 0.5d + 0.5d) * MaxQuantized + 0.5d); + + private static double Clamp(double value) => + double.IsNaN(value) ? 0d : Math.Clamp(value, -AbsMax, AbsMax); + } +} + +namespace McProtoNet.NBT +{ + // Sandbox model of McProtoNet's NBT surface. It exists so generated types that carry + // nbt/anonymousNbt (TeamAction from 771 is the first union that does) can compile and + // round-trip here at all. Only the scalar tags and compounds are modelled; a tag id outside + // that set throws, because a half-read tag would shift every following field on the wire. + public abstract record NbtTag + { + public string? Name { get; init; } + } + + public sealed record NbtByte(sbyte Value) : NbtTag; + + public sealed record NbtShort(short Value) : NbtTag; + + public sealed record NbtInt(int Value) : NbtTag; + + public sealed record NbtLong(long Value) : NbtTag; + + public sealed record NbtFloat(float Value) : NbtTag; + + public sealed record NbtDouble(double Value) : NbtTag; + + public sealed record NbtString(string Value) : NbtTag; + + public sealed record NbtCompound(Dictionary Items) : NbtTag + { + public NbtCompound() : this(new Dictionary()) { } + + public NbtCompound With(string name, NbtTag tag) + { + Items[name] = tag; + return this; + } + } } namespace McProtoNet.Serialization { + using McProtoNet.NBT; + // Contract every generated protocol type implements. Static abstract members give // ReadType/WriteType zero-reflection dispatch: `T.Read(...)` compiles to a direct // (devirtualized for structs) call. @@ -249,6 +355,51 @@ public byte[] ReadRestBytes() return b; } + // NBT. `readRootTag` says the root tag carries a name (classic root) — false is the + // nameless network root. A TAG_End id means "no tag at all", which is how an absent root + // travels. Signature copied from the real MinecraftPrimitiveReader. + public NbtTag? ReadNbtTag(bool readRootTag) + { + byte id = Next(); + if (id == 0) return null; + string? name = readRootTag ? ReadNbtName() : null; + return ReadNbtPayload(id) with { Name = name }; + } + + // Tag names are length-prefixed by a big-endian ushort, unlike protocol strings. + private string ReadNbtName() + { + int len = ReadUnsignedShort(); + var s = Encoding.UTF8.GetString(_data, _pos, len); + _pos += len; + return s; + } + + private NbtTag ReadNbtPayload(byte id) => id switch + { + 1 => new NbtByte(ReadSignedByte()), + 2 => new NbtShort(ReadSignedShort()), + 3 => new NbtInt(ReadSignedInt()), + 4 => new NbtLong(ReadSignedLong()), + 5 => new NbtFloat(ReadFloat()), + 6 => new NbtDouble(ReadDouble()), + 8 => new NbtString(ReadNbtName()), + 10 => ReadNbtCompound(), + _ => throw new NotSupportedException($"sandbox NBT: tag id {id} is not modelled.") + }; + + private NbtTag ReadNbtCompound() + { + var items = new Dictionary(); + while (true) + { + byte id = Next(); + if (id == 0) return new NbtCompound(items); + string name = ReadNbtName(); + items[name] = ReadNbtPayload(id) with { Name = name }; + } + } + // Nested named-type dispatch without reflection: static abstract interface member. public T ReadType(int protocolVersion) where T : IProtocolType => T.Read(ref this, protocolVersion); @@ -330,6 +481,64 @@ public void WriteByteArray(byte[] v) public void WriteRestBytes(byte[] v) => _buf.AddRange(v); + // Signature copied from the real MinecraftPrimitiveWriter, null rejection included: the + // sandbox only answers "does the generated code compile and round-trip against the real + // surface" while it accepts exactly what the real surface accepts. The default keeps both + // generated call shapes working: `WriteNbt(tag)` for the nameless network root, + // `WriteNbt(tag, true)` for the named one. + public void WriteNbt(NbtTag value, bool writeRootTag = false) + { + ArgumentNullException.ThrowIfNull(value); + _buf.Add(NbtId(value)); + if (writeRootTag) WriteNbtName(value.Name ?? ""); + WriteNbtPayload(value); + } + + private static byte NbtId(NbtTag tag) => tag switch + { + NbtByte => 1, + NbtShort => 2, + NbtInt => 3, + NbtLong => 4, + NbtFloat => 5, + NbtDouble => 6, + NbtString => 8, + NbtCompound => 10, + _ => throw new NotSupportedException($"sandbox NBT: {tag.GetType().Name} is not modelled.") + }; + + private void WriteNbtName(string s) + { + var bytes = Encoding.UTF8.GetBytes(s); + WriteUnsignedShort((ushort)bytes.Length); + _buf.AddRange(bytes); + } + + private void WriteNbtPayload(NbtTag tag) + { + switch (tag) + { + case NbtByte v: WriteSignedByte(v.Value); break; + case NbtShort v: WriteSignedShort(v.Value); break; + case NbtInt v: WriteSignedInt(v.Value); break; + case NbtLong v: WriteSignedLong(v.Value); break; + case NbtFloat v: WriteFloat(v.Value); break; + case NbtDouble v: WriteDouble(v.Value); break; + case NbtString v: WriteNbtName(v.Value); break; + case NbtCompound c: + foreach (var (name, child) in c.Items) + { + _buf.Add(NbtId(child)); + WriteNbtName(name); + WriteNbtPayload(child); + } + + _buf.Add(0); + break; + default: throw new NotSupportedException($"sandbox NBT: {tag.GetType().Name} is not modelled."); + } + } + // Mirror of MinecraftPrimitiveReader.ReadType: direct interface dispatch, no reflection. public void WriteType(T value, int protocolVersion) where T : IProtocolType => value.Write(this, protocolVersion); diff --git a/scripts/deliver-to-mcprotonet.ps1 b/scripts/deliver-to-mcprotonet.ps1 index d89c514..b1532ab 100644 --- a/scripts/deliver-to-mcprotonet.ps1 +++ b/scripts/deliver-to-mcprotonet.ps1 @@ -11,34 +11,85 @@ if (-not $McProtoNetRoot -or -not (Test-Path $McProtoNetRoot)) { $repoRoot = Split-Path -Parent $PSScriptRoot $staging = Join-Path ([IO.Path]::GetTempPath()) "mcproto-gen-$([guid]::NewGuid().ToString('N'))" -# Packets whose generated code doesn't compile yet (union/metadata codegen gaps). +# Packets whose generated code doesn't compile yet (metadata codegen gaps, missing types). # Keep in sync with the Exclude list in sandbox/McProtoNet.Sandbox/McProtoNet.Sandbox.csproj; # the sandbox's NBT-only excludes (RespawnPacket, Configuration DisconnectPacket) are NOT # carried over here — real McProtoNet has NBT support, so those are deliverable. +# +# Unions ship now: McProtoNet.Protocol references Dunet, and its version gate is source-generated +# (McProtoNet.SourceGenerator emits IsSupportedVersion per type), so nothing reflects over the +# union marker at run time and PrivateAssets="all" there is safe. The sandbox is the opposite case: +# its ThrowHelper reflects, so its Dunet reference must stay plain. +# EntityMetadataValue.cs and its entry stay held back until Slot, Particle and the registry +# variants are modelled; ExplosionParticleEntry/Info join them because they carry Particle. +# UnionShapeProbe.cs is a codegen fixture, not protocol, and is never delivered. Once it is referenced, drop TeamAction.cs, +# TeamsPacket.cs and EntityMetadataEntry.cs from this list — they compile in the sandbox today. +# EntityMetadataValue.cs stays until Slot, Particle and the registry variants are modelled. +# UnionShapeProbe.cs is a codegen fixture, not protocol: it exists so the sandbox compiles the +# union shapes EntityMetadataValue is built from. It is never delivered. $exclude = @( - 'TeamsPacket.cs', 'EntityMetadataPacket.cs', 'ExplosionPacket.cs', - 'MapPacket.cs', 'WindowClickPacket.cs', 'EntityMetadataEntry.cs' + 'EntityMetadataPacket.cs', 'ExplosionPacket.cs', 'ExplosionParticleEntry.cs', + 'ExplosionParticleInfo.cs', 'MapPacket.cs', 'WindowClickPacket.cs', + 'EntityMetadataEntry.cs', 'EntityMetadataValue.cs', 'UnionShapeProbe.cs' ) +# One generated file declares one type, named after the file, so an excluded file name is the +# name of a type the delivered set must never mention. Returns file -> type pairs to report. +function Find-DanglingReferences { + param([IO.FileInfo[]]$Delivered, [IO.FileInfo[]]$Held, [string]$Root) + + $heldTypes = $Held | + ForEach-Object { [IO.Path]::GetFileNameWithoutExtension($_.Name) } | + Sort-Object -Unique + + if (-not $heldTypes) { return @() } + + $pattern = '\b(' + (($heldTypes | ForEach-Object { [regex]::Escape($_) }) -join '|') + ')\b' + + foreach ($file in $Delivered) { + $hits = ([regex]::Matches((Get-Content -Raw $file.FullName), $pattern) | + ForEach-Object { $_.Value } | Sort-Object -Unique) + foreach ($hit in $hits) { + [pscustomobject]@{ + File = $file.FullName.Substring($Root.Length + 1) + Type = $hit + } + } + } +} + # Finding 1: wrap body in try/finally to ensure staging dir is cleaned up on any failure try { dotnet run --project (Join-Path $repoRoot 'minecraft-protocol-fs') -- gen --out $staging if ($LASTEXITCODE -ne 0) { throw "generation failed" } + $generated = @(Get-ChildItem -Recurse -File $staging -Filter *.cs) + $held = @($generated | Where-Object { $exclude -contains $_.Name }) + $shipped = @($generated | Where-Object { $exclude -notcontains $_.Name }) + + # A partial delivery that does not compile is worse than no delivery: refuse before the + # target directory is touched, so a broken set leaves McProtoNet exactly as it was. + $dangling = @(Find-DanglingReferences -Delivered $shipped -Held $held -Root $staging) + if ($dangling.Count -gt 0) { + $lines = $dangling | ForEach-Object { " {0} references {1}" -f $_.File, $_.Type } + throw ( + "delivery refused: $($dangling.Count) reference(s) in the delivered set point at " + + "excluded file(s), so McProtoNet would not compile:`n" + ($lines -join "`n") + + "`nEither stop excluding those files or stop generating the references.") + } + $target = Join-Path $McProtoNetRoot 'src\McProtoNet.Protocol\Generated' if (Test-Path $target) { Remove-Item -Recurse -Force $target } New-Item -ItemType Directory -Force $target | Out-Null $delivered = 0 - Get-ChildItem -Recurse -File $staging -Filter *.cs | - Where-Object { $exclude -notcontains $_.Name } | - ForEach-Object { - $rel = $_.FullName.Substring($staging.Length + 1) - $dst = Join-Path $target $rel - New-Item -ItemType Directory -Force (Split-Path $dst) | Out-Null - Copy-Item $_.FullName $dst - $delivered++ - } + foreach ($file in $shipped) { + $rel = $file.FullName.Substring($staging.Length + 1) + $dst = Join-Path $target $rel + New-Item -ItemType Directory -Force (Split-Path $dst) | Out-Null + Copy-Item $file.FullName $dst + $delivered++ + } Write-Host "Delivered $delivered generated source file(s) to $target" } finally {