Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Protocol for r/21_u1 NetworkProtocolVersion 705 #11

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
We share our Network Protocol with server partners so they can write their own Minecraft servers with their own code. This documentation compiles a series of tree diagrams that define the structure of the packets used by the Protocol, as well as related classes and enums.
Protocol is subject to change release over release.

Current Release - r/21
Current Release - r/21_u1
99 changes: 99 additions & 0 deletions changelog_705_06_13_24.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
# Minecraft Network Protocol Docs 06/13/2024
For r21_u1, Network Protocol Version 705


## New Packets

ClientboundCloseFormPacket:
* No properties

JigsawStructureDataPacket:
* Added mJigsawStructureDataTag (CompoundTag)

ServerboundLoadingScreenPacket:
* Added mServerboundLoadingScreenPacketType (enum ServerboundLoadingScreenPacketType) [enum description below]
* Added mLoadingScreenId.value (brstd::optional<uint32_t>)


## Deprecated Packets

* TickSyncPacket


## Packet Changes

ChangeDimensionPacket:
* Added mLoadingScreenId.value (brstd::optional<uint32_t>)

DisconnectPacket:
* Added mFilteredMessage.value_or(Util::EMPTY_STRING) (std::string)

EditorNetworkPacket:
* Added mRouteToManager (bool)

MobArmorEquipmentPacket:
* Added mBody (NetworkItemStackDescriptor)

SetTitlePacket:
* Added mFilteredTitleText.value_or(Util::EMPTY_STRING) (std::string)

StopSoundPacket:
* Added mStopMusicLegacy (bool)


## Other File Changes

ActorLink:
* Added link.mVehicleAngularVelocity (float)

CameraPreset:
* Added mViewOffset (brstd::optional<Vec2>)
* Added mListener (brstd::optional<AudioListener>)

PacketItemUseLegacyInventoryTransaction:
* Added mTargetBlockId (BlockRuntimeId)
* Added mClientPredictedResult(ItemUseInventoryTransaction::PredictedResult) [enum description below]


## New Enums

ItemUseInventoryTransaction::PredictedResult:
* Added Failure(0)
* Added Success(1)

ServerboundLoadingScreenPacketType:
* Added Unknown(0)
* Added StartLoadingScreen(1)
* Added EndLoadingScreen(2)


## Enum Changes

ActorFlags:
* Removed Unknown

ItemStackRequestActionType:
* Added PlaceInItemContainer_DEPRECATED(7)
* Added TakeFromItemContainer_DEPRECATED(8)
* Removed PlaceInItemContainer
* Removed TakeFromItemContainer

MinecraftPacketIds:
* Added BlockPalette_deprecated(116)
* Added TitleSpecificPacketsStart(200)
* Added TitleSpecificPacketsEnd(299)
* Added ClientboundCloseScreen(310)
* Added ClientboundLoadingScreenPacket_Deprecated(311)
* Added ServerboundLoadingScreenPacket(312)
* Added JigsawStructureDataPacket(313)
* Changed EndId from 310 to 314
* Removed BlockPalette

SerializedAbilitiesData::SerializedAbilitiesLayer:
* Added LoadingScreen(5)

StructureTemplateRequestOperation:
* Removed Import

StructureTemplateResponseType:
* Removed Import
6 changes: 5 additions & 1 deletion dot/ActorLink.dot
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ rankdir = LR
117 -> 118
110 -> 119
119 -> 120
110 -> 121
121 -> 122

110 [label="ActorLink",comment="name: \"ActorLink\", typeName: \"\", id: 110, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
111 [label="Actor Unique ID - A",comment="name: \"Actor Unique ID - A\", typeName: \"ActorUniqueID\", id: 111, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
Expand All @@ -23,6 +25,8 @@ rankdir = LR
118 [label="bool",comment="name: \"bool\", typeName: \"\", id: 118, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
119 [label="Passenger Initiated",comment="name: \"Passenger Initiated\", typeName: \"\", id: 119, branchId: 0, recurseId: -1, attributes: 0, notes: \"Whether the link was changed by the passenger\""];
120 [label="bool",comment="name: \"bool\", typeName: \"\", id: 120, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;112;114;116;118;120}
121 [label="Vehicle Angular Velocity",comment="name: \"Vehicle Angular Velocity\", typeName: \"\", id: 121, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
122 [label="float",comment="name: \"float\", typeName: \"\", id: 122, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;112;114;116;118;120;122}

}
18 changes: 9 additions & 9 deletions dot/AddPlayerPacket.dot
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,11 @@ rankdir = LR
106 -> 107
105 -> 108
108 -> 109
109 -> 121
0 -> 122
122 -> 123
109 -> 123
0 -> 124
124 -> 125
0 -> 126
126 -> 127

0 [label="AddPlayerPacket",comment="name: \"AddPlayerPacket\", typeName: \"\", id: 0, branchId: 12, recurseId: -1, attributes: 0, notes: \"\""];
1 [label="UUID",comment="name: \"UUID\", typeName: \"mce::UUID\", id: 1, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
Expand Down Expand Up @@ -80,11 +80,11 @@ rankdir = LR
107 [label="unsigned varint",comment="name: \"unsigned varint\", typeName: \"\", id: 107, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
108 [label="example element",style=dotted,comment="name: \"example element\", typeName: \"\", id: 108, branchId: 0, recurseId: -1, attributes: 16, notes: \"\""];
109 [label="Link",comment="name: \"Link\", typeName: \"ActorLink\", id: 109, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
121 [label="ActorLink",comment="name: \"ActorLink\", typeName: \"\", id: 121, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
122 [label="Device Id",comment="name: \"Device Id\", typeName: \"\", id: 122, branchId: 0, recurseId: -1, attributes: 0, notes: \"A unique device id obtained from the connection request.\""];
123 [label="string",comment="name: \"string\", typeName: \"\", id: 123, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
124 [label="Build Platform",comment="name: \"Build Platform\", typeName: \"\", id: 124, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
125 [label="int",comment="name: \"int\", typeName: \"\", id: 125, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;2;4;6;8;10;12;14;16;45;47;56;59;78;104;107;121;123;125}
123 [label="ActorLink",comment="name: \"ActorLink\", typeName: \"\", id: 123, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
124 [label="Device Id",comment="name: \"Device Id\", typeName: \"\", id: 124, branchId: 0, recurseId: -1, attributes: 0, notes: \"A unique device id obtained from the connection request.\""];
125 [label="string",comment="name: \"string\", typeName: \"\", id: 125, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
126 [label="Build Platform",comment="name: \"Build Platform\", typeName: \"\", id: 126, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
127 [label="int",comment="name: \"int\", typeName: \"\", id: 127, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;2;4;6;8;10;12;14;16;45;47;56;59;78;104;107;123;125;127}

}
20 changes: 14 additions & 6 deletions dot/CameraPreset.dot
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,11 @@ rankdir = LR
8 -> 26
26 -> 30
8 -> 31
31 -> 35
31 -> 32
8 -> 33
33 -> 37
8 -> 38
38 -> 42

8 [label="CameraPreset",comment="name: \"CameraPreset\", typeName: \"\", id: 8, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
9 [label="Name",comment="name: \"Name\", typeName: \"\", id: 9, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
Expand All @@ -35,10 +39,14 @@ rankdir = LR
23 [label="std::optional<float>",comment="name: \"std::optional<float>\", typeName: \"\", id: 23, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
24 [label="Rot Y",comment="name: \"Rot Y\", typeName: \"std::optional<float>\", id: 24, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
25 [label="std::optional<float>",comment="name: \"std::optional<float>\", typeName: \"\", id: 25, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
26 [label="Listener",comment="name: \"Listener\", typeName: \"std::optional<enum CameraPreset::AudioListener>\", id: 26, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
30 [label="std::optional<enum CameraPreset::AudioListener>",comment="name: \"std::optional<enum CameraPreset::AudioListener>\", typeName: \"\", id: 30, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
31 [label="Player Effects",comment="name: \"Player Effects\", typeName: \"std::optional<bool>\", id: 31, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
35 [label="std::optional<bool>",comment="name: \"std::optional<bool>\", typeName: \"\", id: 35, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;10;12;17;19;21;23;25;30;35}
26 [label="View Offset",comment="name: \"View Offset\", typeName: \"std::optional<class Vec2>\", id: 26, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
30 [label="std::optional<class Vec2>",comment="name: \"std::optional<class Vec2>\", typeName: \"\", id: 30, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
31 [label="Radius",comment="name: \"Radius\", typeName: \"std::optional<float>\", id: 31, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
32 [label="std::optional<float>",comment="name: \"std::optional<float>\", typeName: \"\", id: 32, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
33 [label="Listener",comment="name: \"Listener\", typeName: \"std::optional<enum CameraPreset::AudioListener>\", id: 33, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
37 [label="std::optional<enum CameraPreset::AudioListener>",comment="name: \"std::optional<enum CameraPreset::AudioListener>\", typeName: \"\", id: 37, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
38 [label="Player Effects",comment="name: \"Player Effects\", typeName: \"std::optional<bool>\", id: 38, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
42 [label="std::optional<bool>",comment="name: \"std::optional<bool>\", typeName: \"\", id: 42, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;10;12;17;19;21;23;25;30;32;37;42}

}
6 changes: 3 additions & 3 deletions dot/CameraPresets.dot
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ rankdir = LR
4 -> 5
3 -> 6
6 -> 7
7 -> 36
7 -> 43

2 [label="CameraPresets",comment="name: \"CameraPresets\", typeName: \"\", id: 2, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
3 [label="Presets",comment="name: \"Presets\", typeName: \"\", id: 3, branchId: 0, recurseId: -1, attributes: 8, notes: \"\""];
4 [label="Array Size",comment="name: \"Array Size\", typeName: \"\", id: 4, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
5 [label="unsigned varint",comment="name: \"unsigned varint\", typeName: \"\", id: 5, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
6 [label="example element",style=dotted,comment="name: \"example element\", typeName: \"\", id: 6, branchId: 0, recurseId: -1, attributes: 16, notes: \"\""];
7 [label="Camera Preset",comment="name: \"Camera Preset\", typeName: \"CameraPreset\", id: 7, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
36 [label="CameraPreset",comment="name: \"CameraPreset\", typeName: \"\", id: 36, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;5;36}
43 [label="CameraPreset",comment="name: \"CameraPreset\", typeName: \"\", id: 43, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;5;43}

}
6 changes: 3 additions & 3 deletions dot/CameraPresetsPacket.dot
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ digraph "CameraPresetsPacket" {
rankdir = LR
0
0 -> 1
1 -> 37
1 -> 44

0 [label="CameraPresetsPacket",comment="name: \"CameraPresetsPacket\", typeName: \"\", id: 0, branchId: 198, recurseId: -1, attributes: 0, notes: \"\""];
1 [label="Camera Presets",comment="name: \"Camera Presets\", typeName: \"CameraPresets\", id: 1, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
37 [label="CameraPresets",comment="name: \"CameraPresets\", typeName: \"\", id: 37, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;37}
44 [label="CameraPresets",comment="name: \"CameraPresets\", typeName: \"\", id: 44, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;44}

}
6 changes: 5 additions & 1 deletion dot/ChangeDimensionPacket.dot
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ rankdir = LR
3 -> 4
0 -> 5
5 -> 6
0 -> 7
7 -> 11

0 [label="ChangeDimensionPacket",comment="name: \"ChangeDimensionPacket\", typeName: \"\", id: 0, branchId: 61, recurseId: -1, attributes: 0, notes: \"\""];
1 [label="Dimension ID",comment="name: \"Dimension ID\", typeName: \"\", id: 1, branchId: 0, recurseId: -1, attributes: 0, notes: \"Currently supported: (0 -> Overworld, 1 -> Nether, 2 -> The End, 3 -> Undefined)\""];
Expand All @@ -15,6 +17,8 @@ rankdir = LR
4 [label="Vec3",comment="name: \"Vec3\", typeName: \"\", id: 4, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
5 [label="Respawn",comment="name: \"Respawn\", typeName: \"\", id: 5, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
6 [label="bool",comment="name: \"bool\", typeName: \"\", id: 6, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;2;4;6}
7 [label="Loading Screen Id",comment="name: \"Loading Screen Id\", typeName: \"std::optional<unsigned int>\", id: 7, branchId: 0, recurseId: -1, attributes: 256, notes: \"Leave empty if there is no loading screen expected on the client. This id needs to be unique and not conflict with any other active loading screens. This is implemented with an unsigned integer incrementing forever, and that is expected to not have collisions when it wraps around back to 0 if that could be a possibility.\""];
11 [label="std::optional<unsigned int>",comment="name: \"std::optional<unsigned int>\", typeName: \"\", id: 11, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;2;4;6;11}

}
8 changes: 8 additions & 0 deletions dot/ClientboundCloseFormPacket.dot
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
digraph "ClientboundCloseFormPacket" {
rankdir = LR
0

0 [label="ClientboundCloseFormPacket",comment="name: \"ClientboundCloseFormPacket\", typeName: \"\", id: 0, branchId: 310, recurseId: -1, attributes: 0, notes: \"\""];
{ rank = max}

}
4 changes: 2 additions & 2 deletions dot/CodeBuilderSourcePacket.dot
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ rankdir = LR
2 [label="byte",comment="name: \"byte\", typeName: \"\", id: 2, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
3 [label="Category",comment="name: \"Category\", typeName: \"\", id: 3, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
4 [label="byte",comment="name: \"byte\", typeName: \"\", id: 4, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
5 [label="CodeStatus",comment="name: \"CodeStatus\", typeName: \"\", id: 5, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
6 [label="byte",comment="name: \"byte\", typeName: \"\", id: 6, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
5 [label="CodeStatus",comment="name: \"CodeStatus\", typeName: \"\", id: 5, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
6 [label="byte",comment="name: \"byte\", typeName: \"\", id: 6, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;2;4;6}

}
14 changes: 7 additions & 7 deletions dot/ContainerClosePacket.dot
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@ rankdir = LR
1 -> 2
0 -> 3
3 -> 4
0 -> 5
5 -> 6
0 -> 5
5 -> 6

0 [label="ContainerClosePacket",comment="name: \"ContainerClosePacket\", typeName: \"\", id: 0, branchId: 47, recurseId: -1, attributes: 0, notes: \"\""];
1 [label="Container ID",comment="name: \"Container ID\", typeName: \"\", id: 1, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
2 [label="byte",comment="name: \"byte\", typeName: \"\", id: 2, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
3 [label="Container Type",comment="name: \"Container Type\", typeName: \"\", id: 3, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
4 [label="byte",comment="name: \"byte\", typeName: \"\", id: 4, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
5 [label="Server Initiated Close",comment="name: \"Server Initiated Close\", typeName: \"\", id: 5, branchId: 0, recurseId: -1, attributes: 0, notes: \"True if the server initiated the closing\""];
6 [label="bool",comment="name: \"bool\", typeName: \"\", id: 6, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;2;4;6}
3 [label="Container Type",comment="name: \"Container Type\", typeName: \"\", id: 3, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
4 [label="byte",comment="name: \"byte\", typeName: \"\", id: 4, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
5 [label="Server Initiated Close",comment="name: \"Server Initiated Close\", typeName: \"\", id: 5, branchId: 0, recurseId: -1, attributes: 0, notes: \"True if the server initiated the closing\""];
6 [label="bool",comment="name: \"bool\", typeName: \"\", id: 6, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;2;4;6}

}
12 changes: 8 additions & 4 deletions dot/DisconnectPacket.dot
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@ rankdir = LR
5 -> 6
6 -> 7
7 -> 8
5 -> 9
6 -> 9
9 -> 10
5 -> 11
11 -> 12

0 [label="DisconnectPacket",comment="name: \"DisconnectPacket\", typeName: \"\", id: 0, branchId: 5, recurseId: -1, attributes: 0, notes: \"\""];
1 [label="Reason",comment="name: \"Reason\", typeName: \"\", id: 1, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
Expand All @@ -21,8 +23,10 @@ rankdir = LR
6 [label="if (0)",shape=diamond,comment="name: \"if (0)\", typeName: \"\", id: 6, branchId: 0, recurseId: -1, attributes: 4, notes: \"\""];
7 [label="Message",comment="name: \"Message\", typeName: \"\", id: 7, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
8 [label="string",comment="name: \"string\", typeName: \"\", id: 8, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
9 [label="if (1)",shape=diamond,comment="name: \"if (1)\", typeName: \"\", id: 9, branchId: 1, recurseId: -1, attributes: 4, notes: \"\""];
10 [label="[No Data]",comment="name: \"[No Data]\", typeName: \"\", id: 10, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;2;4;8;10}
9 [label="Filtered Message",comment="name: \"Filtered Message\", typeName: \"\", id: 9, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
10 [label="string",comment="name: \"string\", typeName: \"\", id: 10, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
11 [label="if (1)",shape=diamond,comment="name: \"if (1)\", typeName: \"\", id: 11, branchId: 1, recurseId: -1, attributes: 4, notes: \"\""];
12 [label="[No Data]",comment="name: \"[No Data]\", typeName: \"\", id: 12, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;2;4;8;10;12}

}
10 changes: 7 additions & 3 deletions dot/EditorNetworkPacket.dot
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,14 @@ rankdir = LR
0
0 -> 1
1 -> 2
0 -> 3
3 -> 4

0 [label="EditorNetworkPacket",comment="name: \"EditorNetworkPacket\", typeName: \"\", id: 0, branchId: 190, recurseId: -1, attributes: 0, notes: \"\""];
1 [label="Binary Payload",comment="name: \"Binary Payload\", typeName: \"CompoundTag\", id: 1, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
2 [label="CompoundTag",comment="name: \"CompoundTag\", typeName: \"\", id: 2, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;2}
1 [label="Route To Manager",comment="name: \"Route To Manager\", typeName: \"\", id: 1, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
2 [label="bool",comment="name: \"bool\", typeName: \"\", id: 2, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
3 [label="Binary Payload",comment="name: \"Binary Payload\", typeName: \"CompoundTag\", id: 3, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
4 [label="CompoundTag",comment="name: \"CompoundTag\", typeName: \"\", id: 4, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;2;4}

}
Loading