Skip to content

Commit

Permalink
Protocol for r/21 NetworkProtocolVersion 685
Browse files Browse the repository at this point in the history
  • Loading branch information
Yash Shroff authored and Yash Shroff committed May 7, 2024
1 parent ebba866 commit 11e5e7d
Show file tree
Hide file tree
Showing 40 changed files with 2,969 additions and 2,271 deletions.
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/20_u8
Current Release - r/21
133 changes: 133 additions & 0 deletions changelog_685_04_29_24.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
# Minecraft Network Protocol Docs 04/29/2024
For r21, Network Protocol Version 685

## New Packets

AwardAchievementPacket
* Added mAchievementID (int)


## Packet Changes

CodeBuilderSourcePacket:
* Removed mValue
* Added mCodeStatus (enum CodeBuilderExecutionState::CodeStatus) [Details below]

LegacyTelemetryEventPacket:
* Added new branch case for enum conditional "Event Type": Type::ItemUsedEvent and subsequent data:
- Added mEventData.ItemUsedEvent.mItemId (short)
- Added mEventData.ItemUsedEvent.mItemAux (int)
- Added mEventData.ItemUsedEvent.mUseMethod (int)
- Added mEventData.ItemUsedEvent.mCount (int)

ShapedRecipe:
* Added recipe.getUnlockingRequirement() (RecipeUnlockingRequirement) [Details below]

ShapelessRecipe:
* Added recipe.getUnlockingRequirement() (RecipeUnlockingRequirement) [Details below]

UpdateSubChunkBlocksPacket
* Changed mBlocksChanged.mStandards from NetworkBlockInfo::NetworkBlockInfo to struct UpdateSubChunkNetworkBlockInfo [Member variables are the same]
* Changed mBlocksChanged.mExtras from NetworkBlockInfo::NetworkBlockInfo to struct UpdateSubChunkNetworkBlockInfo [Member variables are the same]


## Packet Fixes

SetScorePacket:
* Moved data.mIdentityType outside of conditional "Is Change Type"


## Deprecated Packets

TickSyncPacket (TickSync_deprecated)


## New Files

RecipeUnlockingRequirement
* Added requirement.getUnlockingContext() (enum RecipeUnlockingRequirement::UnlockingContext) [Details below]
* Added branching condition: requirement.getUnlockingContext() == RecipeUnlockingRequirement::UnlockingContext::None
- If true:
- Added vector list requirement.getUnlockingIngredients() (std::vector<RecipeIngredient>)
- Added ingredient (RecipeIngredient)


## New Enums

CodeBuilderExecutionState::CodeStatus:
* Added None(0)
* Added NotStarted(1)
* Added InProgress(2)
* Added Paused(3)
* Added Error(4)
* Added Succeeded(5)

RecipeUnlockingRequirement::UnlockingContext:
* Added None(0)
* Added AlwaysUnlocked(1)
* Added PlayerInWater(2)
* Added PlayerHasManyItems(3)


## Enum Changes

ActorDataIDs:
* Added RESERVED_009(9)
* Added DATA_SPAWN_TIME_deprecated(96)
* Added VISIBLE_MOB_EFFECTS(131)
* Changed Count from 131 to 132
* Removed EFFECT_AMBIENCE
* Removed DATA_SPAWN_TIME

ActorType:
* Displaced Bogged
* Added OminousItemSpawner(145)

CommandRegistry::HardNonTerminal:
* Added CodeBuilderArg(0x100058)
* Added CodeBuilderArgs(0x100059)
* Added CodeBuilderSelectParam(0x10005a)
* Added CodeBuilderSelector(0x10005b)

Connection::DisconnectFailReason:
* Added RealmsSessionNotFound_DEPRECATED(89)
* Removed RealmsSessionNotFound

Enchant::Type:
* Added WindBurst(38)
* Added Density(39)
* Added Breach(40)
* Displaced NumEnchantments
* Displaced InvalidEnchantment

ItemUseMethod:
* Added OpenedVault(16)
* Displaced _Count

LegacyTelemetryEventPacket::Type:
* Added ItemUsedEvent(31)

LevelEvent:
* Added 9800(3619)
* Added ParticlesTrialSpawnerDetectionCharged(3615)
* Added ParticlesTrialSpawnerBecomeCharged(3616)
* Changed AllPlayersSleeping from 3615 to 3617
* Changed deprecated from 3616 to 3618
* Added AnimationSpawnCobweb(9814)
* Added ParticleSmashAttackGroundDust(9815)

MinecraftPacketIds:
* Added TickSync_deprecated(23)
* Added AwardAchievementPacket(309)
* Changed EndId from 309 to 310
* Removed TickSync

ParticleType:
* Added OminousItemSpawner(93)
* Displaced _count

PlayerAuthInputPacket::InputData:
* Added NorthJump_DEPRECATED(2)
* Added BlockBreakingDelayEnabled(48)
* Changed INPUT_NUM from 48 to 49
* Removed NorthJump
12 changes: 12 additions & 0 deletions dot/AwardAchievementPacket.dot
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
digraph "AwardAchievementPacket" {
rankdir = LR
0
0 -> 1
1 -> 2

0 [label="AwardAchievementPacket",comment="name: \"AwardAchievementPacket\", typeName: \"\", id: 0, branchId: 309, recurseId: -1, attributes: 0, notes: \"\""];
1 [label="AchievementID",comment="name: \"AchievementID\", typeName: \"\", id: 1, branchId: 0, recurseId: -1, attributes: 0, notes: \"Achievement ID\""];
2 [label="int",comment="name: \"int\", typeName: \"\", id: 2, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;2}

}
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="Value",comment="name: \"Value\", 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: \"\""];
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}

}
10 changes: 7 additions & 3 deletions dot/ContainerClosePacket.dot
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,16 @@ rankdir = LR
1 -> 2
0 -> 3
3 -> 4
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="Server Initiated Close",comment="name: \"Server Initiated Close\", typeName: \"\", id: 3, branchId: 0, recurseId: -1, attributes: 0, notes: \"True if the server initiated the closing\""];
4 [label="bool",comment="name: \"bool\", typeName: \"\", id: 4, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;2;4}
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}

}
30 changes: 15 additions & 15 deletions dot/ItemData.dot
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
digraph "ItemData" {
rankdir = LR
174
174 -> 175
175 -> 176
174 -> 177
177 -> 178
174 -> 179
179 -> 180
180
180 -> 181
181 -> 182
180 -> 183
183 -> 184
180 -> 185
185 -> 186

174 [label="ItemData",comment="name: \"ItemData\", typeName: \"\", id: 174, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
175 [label="Item Name",comment="name: \"Item Name\", typeName: \"\", id: 175, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
176 [label="string",comment="name: \"string\", typeName: \"\", id: 176, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
177 [label="Item Id",comment="name: \"Item Id\", typeName: \"\", id: 177, branchId: 0, recurseId: -1, attributes: 0, notes: \"Block id's < 256 (can be negative); Item id's > 257\""];
178 [label="short",comment="name: \"short\", typeName: \"\", id: 178, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
179 [label="Is Component Based",comment="name: \"Is Component Based\", typeName: \"\", id: 179, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
180 [label="bool",comment="name: \"bool\", typeName: \"\", id: 180, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;176;178;180}
180 [label="ItemData",comment="name: \"ItemData\", typeName: \"\", id: 180, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
181 [label="Item Name",comment="name: \"Item Name\", typeName: \"\", id: 181, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
182 [label="string",comment="name: \"string\", typeName: \"\", id: 182, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
183 [label="Item Id",comment="name: \"Item Id\", typeName: \"\", id: 183, branchId: 0, recurseId: -1, attributes: 0, notes: \"Block id's < 256 (can be negative); Item id's > 257\""];
184 [label="short",comment="name: \"short\", typeName: \"\", id: 184, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
185 [label="Is Component Based",comment="name: \"Is Component Based\", typeName: \"\", id: 185, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
186 [label="bool",comment="name: \"bool\", typeName: \"\", id: 186, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;182;184;186}

}
20 changes: 19 additions & 1 deletion dot/LegacyTelemetryEventPacket.dot
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,15 @@ rankdir = LR
151 -> 152
7 -> 153
153 -> 154
7 -> 155
155 -> 156
156 -> 157
155 -> 158
158 -> 159
155 -> 160
160 -> 161
155 -> 162
162 -> 163

0 [label="LegacyTelemetryEventPacket",comment="name: \"LegacyTelemetryEventPacket\", typeName: \"\", id: 0, branchId: 65, recurseId: -1, attributes: 0, notes: \"\""];
1 [label="Target Actor ID",comment="name: \"Target Actor ID\", typeName: \"ActorUniqueID\", id: 1, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
Expand Down Expand Up @@ -311,6 +320,15 @@ rankdir = LR
152 [label="[No Data]",comment="name: \"[No Data]\", typeName: \"\", id: 152, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
153 [label="if (30)",shape=diamond,comment="name: \"if (30)\", typeName: \"\", id: 153, branchId: 30, recurseId: -1, attributes: 4, notes: \"\""];
154 [label="[No Data]",comment="name: \"[No Data]\", typeName: \"\", id: 154, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;2;4;6;10;13;15;17;19;21;24;27;29;32;34;36;38;40;42;45;47;49;52;54;56;58;61;63;65;68;70;72;74;76;78;80;83;85;87;89;91;94;96;98;100;103;105;108;110;113;116;119;121;123;125;127;129;132;135;137;140;143;146;148;150;152;154}
155 [label="if (31)",shape=diamond,comment="name: \"if (31)\", typeName: \"\", id: 155, branchId: 31, recurseId: -1, attributes: 4, notes: \"\""];
156 [label="Item Id",comment="name: \"Item Id\", typeName: \"\", id: 156, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
157 [label="short",comment="name: \"short\", typeName: \"\", id: 157, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
158 [label="Item Aux",comment="name: \"Item Aux\", typeName: \"\", id: 158, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
159 [label="int",comment="name: \"int\", typeName: \"\", id: 159, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
160 [label="Use Method",comment="name: \"Use Method\", typeName: \"\", id: 160, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
161 [label="int",comment="name: \"int\", typeName: \"\", id: 161, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
162 [label="Use Count",comment="name: \"Use Count\", typeName: \"\", id: 162, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
163 [label="int",comment="name: \"int\", typeName: \"\", id: 163, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;2;4;6;10;13;15;17;19;21;24;27;29;32;34;36;38;40;42;45;47;49;52;54;56;58;61;63;65;68;70;72;74;76;78;80;83;85;87;89;91;94;96;98;100;103;105;108;110;113;116;119;121;123;125;127;129;132;135;137;140;143;146;148;150;152;154;157;159;161;163}

}
14 changes: 13 additions & 1 deletion dot/LevelSettings.dot
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,12 @@ rankdir = LR
135 -> 136
23 -> 137
137 -> 138
23 -> 139
139 -> 140
23 -> 141
141 -> 142
23 -> 143
143 -> 144

23 [label="LevelSettings",comment="name: \"LevelSettings\", typeName: \"\", id: 23, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
24 [label="Seed",comment="name: \"Seed\", typeName: \"\", id: 24, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
Expand Down Expand Up @@ -195,6 +201,12 @@ rankdir = LR
136 [label="byte",comment="name: \"byte\", typeName: \"\", id: 136, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
137 [label="DisablePlayerInteractions ?",comment="name: \"DisablePlayerInteractions ?\", typeName: \"\", id: 137, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
138 [label="bool",comment="name: \"bool\", typeName: \"\", id: 138, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;25;34;36;38;40;42;51;53;55;57;59;61;63;65;67;69;71;73;75;77;79;81;83;85;87;89;91;93;95;97;99;101;103;105;107;109;111;113;115;117;119;121;123;125;132;134;136;138}
139 [label="Server Identifier",comment="name: \"Server Identifier\", typeName: \"\", id: 139, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
140 [label="string",comment="name: \"string\", typeName: \"\", id: 140, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
141 [label="World Identifier from the server.",comment="name: \"World Identifier from the server.\", typeName: \"\", id: 141, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
142 [label="string",comment="name: \"string\", typeName: \"\", id: 142, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
143 [label="Scenario Identifier from the server.",comment="name: \"Scenario Identifier from the server.\", typeName: \"\", id: 143, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
144 [label="string",comment="name: \"string\", typeName: \"\", id: 144, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;25;34;36;38;40;42;51;53;55;57;59;61;63;65;67;69;71;73;75;77;79;81;83;85;87;89;91;93;95;97;99;101;103;105;107;109;111;113;115;117;119;121;123;125;132;134;136;138;140;142;144}

}
14 changes: 7 additions & 7 deletions dot/NetworkPermissions.dot
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
digraph "NetworkPermissions" {
rankdir = LR
199
199 -> 200
200 -> 201
205
205 -> 206
206 -> 207

199 [label="NetworkPermissions",comment="name: \"NetworkPermissions\", typeName: \"\", id: 199, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
200 [label="serverAuthSoundEnabled",comment="name: \"serverAuthSoundEnabled\", typeName: \"\", id: 200, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
201 [label="bool",comment="name: \"bool\", typeName: \"\", id: 201, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;201}
205 [label="NetworkPermissions",comment="name: \"NetworkPermissions\", typeName: \"\", id: 205, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
206 [label="serverAuthSoundEnabled",comment="name: \"serverAuthSoundEnabled\", typeName: \"\", id: 206, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
207 [label="bool",comment="name: \"bool\", typeName: \"\", id: 207, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;207}

}
4 changes: 2 additions & 2 deletions dot/PlayerListPacket.dot
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ rankdir = LR
3 [label="Dependency on 'Action'",shape=note,comment="name: \"Dependency on 'Action'\", typeName: \"\", id: 3, branchId: 0, recurseId: -1, attributes: 2, notes: \"\""];
4 [label="if (0)",shape=diamond,comment="name: \"if (0)\", typeName: \"\", id: 4, branchId: 0, recurseId: -1, attributes: 4, notes: \"\""];
5 [label="Add Player List",comment="name: \"Add Player List\", typeName: \"\", id: 5, branchId: 0, recurseId: -1, attributes: 8, notes: \"\""];
6 [label="Array Size",comment="name: \"Array Size\", typeName: \"\", id: 6, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
6 [label="Entries Count",comment="name: \"Entries Count\", typeName: \"\", id: 6, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
7 [label="unsigned varint",comment="name: \"unsigned varint\", typeName: \"\", id: 7, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
8 [label="example element",style=dotted,comment="name: \"example element\", typeName: \"\", id: 8, branchId: 0, recurseId: -1, attributes: 16, notes: \"\""];
9 [label="UUID",comment="name: \"UUID\", typeName: \"mce::UUID\", id: 9, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
Expand All @@ -72,7 +72,7 @@ rankdir = LR
121 [label="bool",comment="name: \"bool\", typeName: \"\", id: 121, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
122 [label="if (1)",shape=diamond,comment="name: \"if (1)\", typeName: \"\", id: 122, branchId: 1, recurseId: -1, attributes: 4, notes: \"\""];
123 [label="Remove Player List",comment="name: \"Remove Player List\", typeName: \"\", id: 123, branchId: 0, recurseId: -1, attributes: 8, notes: \"\""];
124 [label="Array Size",comment="name: \"Array Size\", typeName: \"\", id: 124, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
124 [label="Entries Count",comment="name: \"Entries Count\", typeName: \"\", id: 124, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
125 [label="unsigned varint",comment="name: \"unsigned varint\", typeName: \"\", id: 125, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
126 [label="example element",style=dotted,comment="name: \"example element\", typeName: \"\", id: 126, branchId: 0, recurseId: -1, attributes: 16, notes: \"\""];
127 [label="UUID",comment="name: \"UUID\", typeName: \"mce::UUID\", id: 127, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
Expand Down
32 changes: 32 additions & 0 deletions dot/RecipeUnlockingRequirement.dot
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
digraph "RecipeUnlockingRequirement" {
rankdir = LR
54
54 -> 55
55 -> 56
54 -> 57
57 -> 58
58 -> 59
57 -> 60
60 -> 61
61 -> 62
62 -> 63
61 -> 64
64 -> 65
65 -> 66

54 [label="RecipeUnlockingRequirement",comment="name: \"RecipeUnlockingRequirement\", typeName: \"\", id: 54, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
55 [label="Unlocking Context",comment="name: \"Unlocking Context\", typeName: \"\", id: 55, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
56 [label="byte",comment="name: \"byte\", typeName: \"\", id: 56, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
57 [label="Dependency on 'Unlocking context is None?'",shape=note,comment="name: \"Dependency on 'Unlocking context is None?'\", typeName: \"\", id: 57, branchId: 0, recurseId: -1, attributes: 2, notes: \"\""];
58 [label="if (0)",shape=diamond,comment="name: \"if (0)\", typeName: \"\", id: 58, branchId: 0, recurseId: -1, attributes: 4, notes: \"\""];
59 [label="[No Data]",comment="name: \"[No Data]\", typeName: \"\", id: 59, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
60 [label="if (1)",shape=diamond,comment="name: \"if (1)\", typeName: \"\", id: 60, branchId: 1, recurseId: -1, attributes: 4, notes: \"\""];
61 [label="Unlocking Ingredients",comment="name: \"Unlocking Ingredients\", typeName: \"\", id: 61, branchId: 0, recurseId: -1, attributes: 8, notes: \"\""];
62 [label="Array Size",comment="name: \"Array Size\", typeName: \"\", id: 62, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
63 [label="unsigned varint",comment="name: \"unsigned varint\", typeName: \"\", id: 63, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
64 [label="example element",style=dotted,comment="name: \"example element\", typeName: \"\", id: 64, branchId: 0, recurseId: -1, attributes: 16, notes: \"\""];
65 [label="Ingredient",comment="name: \"Ingredient\", typeName: \"RecipeIngredient\", id: 65, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
66 [label="RecipeIngredient",comment="name: \"RecipeIngredient\", typeName: \"\", id: 66, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
{ rank = max;56;59;63;66}

}
Loading

0 comments on commit 11e5e7d

Please sign in to comment.