Skip to content

Protocol for r/21_u3 NetworkProtocolVersion 729 #13

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

Merged
merged 1 commit into from
Sep 25, 2024
Merged
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
Jump to file
Failed to load files.
Loading
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_u2
Current Release - r/21_u3
177 changes: 177 additions & 0 deletions changelog_729_8_20_24.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
# Minecraft Network Protocol Docs 08/20/2024
For r21u3, Network Protocol Version 729


## New Packets

CameraAimAssist:
* Added mViewAngle (Vec2)
* Added mDistance (float)
* Added mTargetMode (enum CameraAimAssist::TargetMode)
* Added mAction (enum CameraAimAssist::Action)

ContainerRegistryCleanup:
* Added mRemovedContainers (std::vector<FullContainerName>)


## Packet Changes

EmotePacket:
* Added mEmoteTicks (uint32_t)

InventoryContentPacket:
* Added mFullContainerName (FullContainerName)
* Added mDynamicContainerSize (uint32_t)
* Removed mDynamicContainerId (uint32_t)

InventorySlotPacket:
* Added mFullContainerName (FullContainerName)
* Added mDynamicContainerSize (uint32_t)
* Removed mDynamicContainerId (uint32_t)

ResourcePacksInfoPacket:
* Removed mHasExceptions (bool)
* Removed mForceServerPacksEnabled (bool)
* Removed mBehaviorPacks (std::vector<PackInfoData>)

TransferPacket:
* Added mReloadWorld (bool)

UpdateAttributesPacket:
* Added mDefaultMinValue (float)
* Added mDefaultMaxValue (float)


## Additional Types Added

std::optional<Vec3>


## Additional Types Changed

CameraPreset:
* Added mCameraRotationSpeed (brstd::optional<float>)
* Added mSnapToTarget (brstd::optional<bool>)
* Added mEntityOffset (std::optional<Vec3>)

FullContainerName:
* Added mDynamicId (brstd::optional<uint32_t>)
* Removed mDynamicId (DynamicId)


## New Enums

CameraAimAssistPacket::Action:
* Added Set(0)
* Added Clear(1)

CameraAimAssistPacket::TargetMode:
* Added Angle(0)
* Added Distance(1)


## Enum Changes

ActorDamageCause:
* Added MaceSmash(34)
* Displaced All

Connection::DisconnectFailReason:
* Added DeepLinkTryingToOpenDemoWorldWhileSignedIn(117)

ContainerID:
* Added CONTAINER_ID_REGISTRY(125)
* Added CONTAINER_ID_REGISTRY_INVENTORY(126)

Enchant::Type:
* Enum names have changed, but not necessarily their behavior.
* Added Protection(0)
* Added FireProtection(1)
* Added FeatherFalling(2)
* Added BlastProtection(3)
* Added ProjectileProtection(4)
* Added Thorns(5)
* Added Respiration(6)
* Added DepthStrider(7)
* Added AquaAffinity(8)
* Added Sharpness(9)
* Added Smite(10)
* Added BaneOfArthropods(11)
* Added Knockback(12)
* Added FireAspect(13)
* Added Looting(14)
* Added Efficiency(15)
* Added SilkTouch(16)
* Added Unbreaking(17)
* Added Fortune(18)
* Added Power(19)
* Added Punch(20)
* Added Flame(21)
* Added Infinity(22)
* Added LuckOfTheSea(23)
* Added Lure(24)
* Added CurseOfBinding(27)
* Added CurseOfVanishing(28)
* Added Impaling(29)
* Added Riptide(30)
* Added Loyalty(31)
* Added Channeling(32)
* Added Multishot(33)
* Added Piercing(34)
* Added QuickCharge(35)
* Removed ArmorAll
* Removed ArmorFire
* Removed ArmorFall
* Removed ArmorExplosive
* Removed ArmorProjectile
* Removed ArmorThorns
* Removed WaterBreath
* Removed WaterSpeed
* Removed WaterAffinity
* Removed WeaponDamage
* Removed WeaponUndead
* Removed WeaponArthropod
* Removed WeaponKnockback
* Removed WeaponFire
* Removed WeaponLoot
* Removed MiningEfficiency
* Removed MiningSilkTouch
* Removed MiningDurability
* Removed MiningLoot
* Removed BowDamage
* Removed BowKnockback
* Removed BowFire
* Removed BowInfinity
* Removed FishingLoot
* Removed FishingLure
* Removed CurseBinding
* Removed CurseVanishing
* Removed TridentImpaling
* Removed TridentRiptide
* Removed TridentLoyalty
* Removed TridentChanneling
* Removed CrossbowMultishot
* Removed CrossbowPiercing
* Removed CrossbowQuickCharge

MinecraftPacketIds:
* Added CameraAimAssist(316)
* Added ContainerRegistryCleanup(317)
* Displaced EndId

PlayerActionType:
* Added DEPRECATED_StartSpinAttack(23)
* Removed StartSpinAttack

PlayerAuthInputPacket::InputData:
* Added HorizontalCollision(49)
* Added VerticalCollision(50)
* Added DownLeft(51)
* Added DownRight(52)
* Displaced INPUT_NUM

Rotation:
* Added Clockwise90(Rotate90)
* Added Clockwise180(Rotate180)
* Added CounterClockwise90(Rotate270)

24 changes: 24 additions & 0 deletions dot/CameraAimAssistPacket.dot
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
digraph "CameraAimAssistPacket" {
rankdir = LR
0
0 -> 1
1 -> 2
0 -> 3
3 -> 4
0 -> 5
5 -> 6
0 -> 7
7 -> 8

0 [label="CameraAimAssistPacket",comment="name: \"CameraAimAssistPacket\", typeName: \"\", id: 0, branchId: 316, recurseId: -1, attributes: 0, notes: \"\""];
1 [label="View Angle",comment="name: \"View Angle\", typeName: \"Vec2\", id: 1, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
2 [label="Vec2",comment="name: \"Vec2\", typeName: \"\", id: 2, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
3 [label="Distance",comment="name: \"Distance\", typeName: \"\", id: 3, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
4 [label="float",comment="name: \"float\", typeName: \"\", id: 4, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
5 [label="Target Mode",comment="name: \"Target Mode\", 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: \"\""];
7 [label="Action",comment="name: \"Action\", typeName: \"\", id: 7, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
8 [label="byte",comment="name: \"byte\", typeName: \"\", id: 8, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;2;4;6;8}

}
36 changes: 24 additions & 12 deletions dot/CameraPreset.dot
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,19 @@ rankdir = LR
8 -> 24
24 -> 25
8 -> 26
26 -> 30
8 -> 31
31 -> 32
26 -> 27
8 -> 28
28 -> 32
8 -> 33
33 -> 37
8 -> 38
38 -> 42
8 -> 43
43 -> 44
8 -> 45
45 -> 49
8 -> 50
50 -> 51

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 @@ -39,14 +45,20 @@ 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="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}
26 [label="Rotation Speed",comment="name: \"Rotation Speed\", typeName: \"std::optional<float>\", id: 26, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
27 [label="std::optional<float>",comment="name: \"std::optional<float>\", typeName: \"\", id: 27, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
28 [label="Snap to Target",comment="name: \"Snap to Target\", typeName: \"std::optional<bool>\", id: 28, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
32 [label="std::optional<bool>",comment="name: \"std::optional<bool>\", typeName: \"\", id: 32, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
33 [label="View Offset",comment="name: \"View Offset\", typeName: \"std::optional<class Vec2>\", id: 33, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
37 [label="std::optional<class Vec2>",comment="name: \"std::optional<class Vec2>\", typeName: \"\", id: 37, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
38 [label="Entity Offset",comment="name: \"Entity Offset\", typeName: \"std::optional<class Vec3>\", id: 38, branchId: 0, recurseId: -1, attributes: 256, notes: \"Changing the camera's pivot point from the center of the entity\""];
42 [label="std::optional<class Vec3>",comment="name: \"std::optional<class Vec3>\", typeName: \"\", id: 42, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
43 [label="Radius",comment="name: \"Radius\", typeName: \"std::optional<float>\", id: 43, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
44 [label="std::optional<float>",comment="name: \"std::optional<float>\", typeName: \"\", id: 44, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
45 [label="Listener",comment="name: \"Listener\", typeName: \"std::optional<enum CameraPreset::AudioListener>\", id: 45, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
49 [label="std::optional<enum CameraPreset::AudioListener>",comment="name: \"std::optional<enum CameraPreset::AudioListener>\", typeName: \"\", id: 49, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
50 [label="Player Effects",comment="name: \"Player Effects\", typeName: \"std::optional<bool>\", id: 50, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
51 [label="std::optional<bool>",comment="name: \"std::optional<bool>\", typeName: \"\", id: 51, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;10;12;17;19;21;23;25;27;32;37;42;44;49;51}

}
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 -> 43
7 -> 52

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: \"\""];
43 [label="CameraPreset",comment="name: \"CameraPreset\", typeName: \"\", id: 43, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;5;43}
52 [label="CameraPreset",comment="name: \"CameraPreset\", typeName: \"\", id: 52, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;5;52}

}
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 -> 44
1 -> 53

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: \"\""];
44 [label="CameraPresets",comment="name: \"CameraPresets\", typeName: \"\", id: 44, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;44}
53 [label="CameraPresets",comment="name: \"CameraPresets\", typeName: \"\", id: 53, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;53}

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

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 @@ -18,7 +18,7 @@ rankdir = LR
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: \"\""];
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 [label="std::optional<unsigned int>",comment="name: \"std::optional<unsigned int>\", typeName: \"\", id: 8, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;2;4;6;8}

}
20 changes: 20 additions & 0 deletions dot/ContainerRegistryCleanupPacket.dot
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
digraph "ContainerRegistryCleanupPacket" {
rankdir = LR
0
0 -> 1
1 -> 2
2 -> 3
1 -> 4
4 -> 5
5 -> 6

0 [label="ContainerRegistryCleanupPacket",comment="name: \"ContainerRegistryCleanupPacket\", typeName: \"\", id: 0, branchId: 317, recurseId: -1, attributes: 0, notes: \"\""];
1 [label="Removed Containers",comment="name: \"Removed Containers\", typeName: \"\", id: 1, branchId: 0, recurseId: -1, attributes: 8, notes: \"\""];
2 [label="Array Size",comment="name: \"Array Size\", typeName: \"\", id: 2, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
3 [label="unsigned varint",comment="name: \"unsigned varint\", typeName: \"\", id: 3, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
4 [label="example element",style=dotted,comment="name: \"example element\", typeName: \"\", id: 4, branchId: 0, recurseId: -1, attributes: 16, notes: \"\""];
5 [label="Full Container Name",comment="name: \"Full Container Name\", typeName: \"FullContainerName\", id: 5, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
6 [label="FullContainerName",comment="name: \"FullContainerName\", typeName: \"\", id: 6, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;3;6}

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

0 [label="EmotePacket",comment="name: \"EmotePacket\", typeName: \"\", id: 0, branchId: 138, recurseId: -1, attributes: 0, notes: \"\""];
1 [label="Actor Runtime Id",comment="name: \"Actor Runtime Id\", typeName: \"ActorRuntimeID\", id: 1, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
2 [label="ActorRuntimeID",comment="name: \"ActorRuntimeID\", typeName: \"\", id: 2, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
3 [label="Emote Id",comment="name: \"Emote Id\", typeName: \"\", id: 3, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
4 [label="string",comment="name: \"string\", typeName: \"\", id: 4, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
5 [label="Xuid",comment="name: \"Xuid\", typeName: \"\", id: 5, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
6 [label="string",comment="name: \"string\", typeName: \"\", id: 6, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
7 [label="PlatformId",comment="name: \"PlatformId\", typeName: \"\", id: 7, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
5 [label="Emote Length Ticks",comment="name: \"Emote Length Ticks\", typeName: \"\", id: 5, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
6 [label="unsigned varint",comment="name: \"unsigned varint\", typeName: \"\", id: 6, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
7 [label="Xuid",comment="name: \"Xuid\", 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="Flags",comment="name: \"Flags\", typeName: \"\", id: 9, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
10 [label="byte",comment="name: \"byte\", typeName: \"\", id: 10, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;2;4;6;8;10}
9 [label="PlatformId",comment="name: \"PlatformId\", 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="Flags",comment="name: \"Flags\", typeName: \"\", id: 11, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
12 [label="byte",comment="name: \"byte\", typeName: \"\", id: 12, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;2;4;6;8;10;12}

}
22 changes: 11 additions & 11 deletions dot/FullContainerName.dot
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
digraph "FullContainerName" {
rankdir = LR
101
101 -> 102
102 -> 103
101 -> 104
104 -> 105
10
10 -> 11
11 -> 12
10 -> 13
13 -> 17

101 [label="FullContainerName",comment="name: \"FullContainerName\", typeName: \"\", id: 101, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
102 [label="Container Name",comment="name: \"Container Name\", typeName: \"\", id: 102, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
103 [label="byte",comment="name: \"byte\", typeName: \"\", id: 103, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
104 [label="ID if container is dynamic, 0 otherwise.",comment="name: \"ID if container is dynamic, 0 otherwise.\", typeName: \"\", id: 104, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
105 [label="unsigned int",comment="name: \"unsigned int\", typeName: \"\", id: 105, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;103;105}
10 [label="FullContainerName",comment="name: \"FullContainerName\", typeName: \"\", id: 10, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
11 [label="Container Name",comment="name: \"Container Name\", typeName: \"\", id: 11, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
12 [label="byte",comment="name: \"byte\", typeName: \"\", id: 12, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
13 [label="Optional Dynamic Container ID",comment="name: \"Optional Dynamic Container ID\", typeName: \"std::optional<unsigned int>\", id: 13, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
17 [label="std::optional<unsigned int>",comment="name: \"std::optional<unsigned int>\", typeName: \"\", id: 17, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;12;17}

}
Loading