Skip to content

Commit 6c67a70

Browse files
oswaldolbyshroff-devYash Shroff
authored
Protocol for 21_u7 NetworkProtocolVersion 785 (#19)
* Protocol for r/21_u7 Network Protocol Version 785 * Update changelog with bullets and enum changes section * Update README --------- Co-authored-by: Yash Shroff <[email protected]> Co-authored-by: Yash Shroff <[email protected]>
1 parent a27d6bb commit 6c67a70

36 files changed

+1041
-905
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
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.
44
Protocol is subject to change release over release.
55

6-
Current Release - r/21_u6
6+
Current Release - r/21_u7

changelog_785_2_24_25.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Minecraft Network Protocol Docs 2/24/25
2+
For r21_u7, Network Protocol Version 785
3+
## New Packets
4+
5+
UpdateClientOptions
6+
* Added mGraphicsMode (std::optional<GraphicsMode>) [enum definition in New Enums]
7+
8+
PlayerVideoCapturePacket
9+
* Added action (bool)
10+
* Added mFrameRate (unsigned int)
11+
* Added mFilePrefix (std::string)
12+
13+
PlayerUpdateEntityOverridesPacket
14+
* Added Target Id (ActorUniqueId)
15+
* Added mPropertyIndex (uint32_t)
16+
* Added mUpdateTupe (UpdateType) [enum definition in New Enums]
17+
* Added mValue (std::variant<int, float>)
18+
19+
## Removed Packets
20+
21+
LevelSoundEventV1
22+
LevelSoundEventV2
23+
24+
25+
## Other Changes in Types
26+
27+
* Added entity unique ID field in LevelSoundEventPacket, can be set to -1 for no entity
28+
* Update SetHudPacket fields to use enum varInt serialization
29+
* Modified the internal JSON structure used by ModalFormRequestPacket
30+
31+
## Enum Changes
32+
33+
ActorFlags:
34+
* Added BODY_ROTATION_AXIS_ALIGNED (120) []
35+
* Added COLLIDABLE (121) []
36+
* Added WASD_AIR_CONTROLLED (122) []
37+
* Displaced Count
38+
39+
## New Enums
40+
41+
GraphicsMode:
42+
* Added Simple (0)
43+
* Added Fancy (1)
44+
* Added Advanced (2)
45+
* Added RayTraced(3)
46+
47+
UpdateType:
48+
* Added ClearOverrides (0)
49+
* Added RemoveOverride (1)
50+
* Added SetIntOverride (2)
51+
* Added SetFloatOverride (3)

dot/ActorDataFlagComponent.dot

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
digraph "ActorDataFlagComponent" {
2-
rankdir = LR
3-
2
4-
2 -> 3
5-
3 -> 7
6-
7-
2 [label="ActorDataFlagComponent",comment="name: \"ActorDataFlagComponent\", typeName: \"\", id: 2, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
8-
3 [label="Actor Flag Bitset Data",comment="name: \"Actor Flag Bitset Data\", typeName: \"std::bitset<120>\", id: 3, branchId: 0, recurseId: -1, attributes: 256, notes: \"Bitset where the bits are indexed by ActorFlags, see ActorFlagsBitset\""];
9-
7 [label="std::bitset<120>",comment="name: \"std::bitset<120>\", typeName: \"\", id: 7, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
10-
{ rank = max;7}
11-
12-
}
1+
digraph "ActorDataFlagComponent" {
2+
rankdir = LR
3+
2
4+
2 -> 3
5+
3 -> 7
6+
7+
2 [label="ActorDataFlagComponent",comment="name: \"ActorDataFlagComponent\", typeName: \"\", id: 2, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
8+
3 [label="Actor Flag Bitset Data",comment="name: \"Actor Flag Bitset Data\", typeName: \"std::bitset<123>\", id: 3, branchId: 0, recurseId: -1, attributes: 256, notes: \"Bitset where the bits are indexed by ActorFlags, see ActorFlagsBitset\""];
9+
7 [label="std::bitset<123>",comment="name: \"std::bitset<123>\", typeName: \"\", id: 7, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
10+
{ rank = max;7}
11+
12+
}
Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,28 @@
1-
digraph "ClientMovementPredictionSyncPacket" {
2-
rankdir = LR
3-
0
4-
0 -> 1
5-
1 -> 8
6-
0 -> 9
7-
9 -> 17
8-
0 -> 18
9-
18 -> 32
10-
0 -> 33
11-
33 -> 34
12-
13-
0 [label="ClientMovementPredictionSyncPacket",comment="name: \"ClientMovementPredictionSyncPacket\", typeName: \"\", id: 0, branchId: 322, recurseId: -1, attributes: 0, notes: \"\""];
14-
1 [label="Actor Data Flag",comment="name: \"Actor Data Flag\", typeName: \"ActorDataFlagComponent\", id: 1, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
15-
8 [label="ActorDataFlagComponent",comment="name: \"ActorDataFlagComponent\", typeName: \"\", id: 8, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
16-
9 [label="Actor Bounding Box",comment="name: \"Actor Bounding Box\", typeName: \"ActorDataBoundingBoxComponent\", id: 9, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
17-
17 [label="ActorDataBoundingBoxComponent",comment="name: \"ActorDataBoundingBoxComponent\", typeName: \"\", id: 17, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
18-
18 [label="Movement Attributes",comment="name: \"Movement Attributes\", typeName: \"MovementAttributesComponent\", id: 18, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
19-
32 [label="MovementAttributesComponent",comment="name: \"MovementAttributesComponent\", typeName: \"\", id: 32, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
20-
33 [label="Actor Unique ID",comment="name: \"Actor Unique ID\", typeName: \"ActorUniqueID\", id: 33, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
21-
34 [label="ActorUniqueID",comment="name: \"ActorUniqueID\", typeName: \"\", id: 34, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
22-
{ rank = max;8;17;32;34}
23-
24-
}
1+
digraph "ClientMovementPredictionSyncPacket" {
2+
rankdir = LR
3+
0
4+
0 -> 1
5+
1 -> 8
6+
0 -> 9
7+
9 -> 17
8+
0 -> 18
9+
18 -> 32
10+
0 -> 33
11+
33 -> 34
12+
0 -> 35
13+
35 -> 39
14+
15+
0 [label="ClientMovementPredictionSyncPacket",comment="name: \"ClientMovementPredictionSyncPacket\", typeName: \"\", id: 0, branchId: 322, recurseId: -1, attributes: 0, notes: \"\""];
16+
1 [label="Actor Data Flag",comment="name: \"Actor Data Flag\", typeName: \"ActorDataFlagComponent\", id: 1, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
17+
8 [label="ActorDataFlagComponent",comment="name: \"ActorDataFlagComponent\", typeName: \"\", id: 8, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
18+
9 [label="Actor Bounding Box",comment="name: \"Actor Bounding Box\", typeName: \"ActorDataBoundingBoxComponent\", id: 9, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
19+
17 [label="ActorDataBoundingBoxComponent",comment="name: \"ActorDataBoundingBoxComponent\", typeName: \"\", id: 17, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
20+
18 [label="Movement Attributes",comment="name: \"Movement Attributes\", typeName: \"MovementAttributesComponent\", id: 18, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
21+
32 [label="MovementAttributesComponent",comment="name: \"MovementAttributesComponent\", typeName: \"\", id: 32, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
22+
33 [label="Actor Unique ID",comment="name: \"Actor Unique ID\", typeName: \"ActorUniqueID\", id: 33, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
23+
34 [label="ActorUniqueID",comment="name: \"ActorUniqueID\", typeName: \"\", id: 34, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
24+
35 [label="Actor Flying State",comment="name: \"Actor Flying State\", typeName: \"bool\", id: 35, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
25+
39 [label="bool",comment="name: \"bool\", typeName: \"\", id: 39, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
26+
{ rank = max;8;17;32;34;39}
27+
28+
}

dot/ItemComponentPacket.dot

Lines changed: 0 additions & 24 deletions
This file was deleted.

dot/LevelSoundEventPacket.dot

Lines changed: 36 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,36 @@
1-
digraph "LevelSoundEventPacket" {
2-
rankdir = LR
3-
0
4-
0 -> 1
5-
1 -> 2
6-
0 -> 3
7-
3 -> 4
8-
0 -> 5
9-
5 -> 6
10-
0 -> 7
11-
7 -> 8
12-
0 -> 9
13-
9 -> 10
14-
0 -> 11
15-
11 -> 12
16-
17-
0 [label="LevelSoundEventPacket",comment="name: \"LevelSoundEventPacket\", typeName: \"\", id: 0, branchId: 123, recurseId: -1, attributes: 0, notes: \"\""];
18-
1 [label="Event ID",comment="name: \"Event ID\", typeName: \"\", id: 1, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
19-
2 [label="unsigned varint",comment="name: \"unsigned varint\", typeName: \"\", id: 2, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
20-
3 [label="Position",comment="name: \"Position\", typeName: \"Vec3\", id: 3, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
21-
4 [label="Vec3",comment="name: \"Vec3\", typeName: \"\", id: 4, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
22-
5 [label="Data",comment="name: \"Data\", typeName: \"\", id: 5, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
23-
6 [label="varint",comment="name: \"varint\", typeName: \"\", id: 6, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
24-
7 [label="Actor Identifier",comment="name: \"Actor Identifier\", typeName: \"\", id: 7, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
25-
8 [label="string",comment="name: \"string\", typeName: \"\", id: 8, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
26-
9 [label="Is Baby Mob",comment="name: \"Is Baby Mob\", typeName: \"\", id: 9, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
27-
10 [label="bool",comment="name: \"bool\", typeName: \"\", id: 10, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
28-
11 [label="Is Global",comment="name: \"Is Global\", typeName: \"\", id: 11, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
29-
12 [label="bool",comment="name: \"bool\", typeName: \"\", id: 12, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
30-
{ rank = max;2;4;6;8;10;12}
31-
32-
}
1+
digraph "LevelSoundEventPacket" {
2+
rankdir = LR
3+
0
4+
0 -> 1
5+
1 -> 2
6+
0 -> 3
7+
3 -> 4
8+
0 -> 5
9+
5 -> 6
10+
0 -> 7
11+
7 -> 8
12+
0 -> 9
13+
9 -> 10
14+
0 -> 11
15+
11 -> 12
16+
0 -> 13
17+
13 -> 14
18+
19+
0 [label="LevelSoundEventPacket",comment="name: \"LevelSoundEventPacket\", typeName: \"\", id: 0, branchId: 123, recurseId: -1, attributes: 0, notes: \"\""];
20+
1 [label="Event ID",comment="name: \"Event ID\", typeName: \"\", id: 1, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
21+
2 [label="unsigned varint",comment="name: \"unsigned varint\", typeName: \"\", id: 2, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
22+
3 [label="Position",comment="name: \"Position\", typeName: \"Vec3\", id: 3, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
23+
4 [label="Vec3",comment="name: \"Vec3\", typeName: \"\", id: 4, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
24+
5 [label="Data",comment="name: \"Data\", typeName: \"\", id: 5, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
25+
6 [label="varint",comment="name: \"varint\", typeName: \"\", id: 6, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
26+
7 [label="Actor Identifier",comment="name: \"Actor Identifier\", typeName: \"\", id: 7, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
27+
8 [label="string",comment="name: \"string\", typeName: \"\", id: 8, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
28+
9 [label="Is Baby",comment="name: \"Is Baby\", typeName: \"\", id: 9, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
29+
10 [label="bool",comment="name: \"bool\", typeName: \"\", id: 10, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
30+
11 [label="Is Global",comment="name: \"Is Global\", typeName: \"\", id: 11, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
31+
12 [label="bool",comment="name: \"bool\", typeName: \"\", id: 12, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
32+
13 [label="Actor Unique Id",comment="name: \"Actor Unique Id\", typeName: \"\", id: 13, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
33+
14 [label="int64",comment="name: \"int64\", typeName: \"\", id: 14, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
34+
{ rank = max;2;4;6;8;10;12;14}
35+
36+
}

dot/LevelSoundEventPacketV1.dot

Lines changed: 0 additions & 32 deletions
This file was deleted.

dot/LevelSoundEventPacketV2.dot

Lines changed: 0 additions & 32 deletions
This file was deleted.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
digraph "PlayerUpdateEntityOverridesPacket" {
2+
rankdir = LR
3+
0
4+
0 -> 1
5+
1 -> 2
6+
0 -> 3
7+
3 -> 4
8+
0 -> 5
9+
5 -> 6
10+
0 -> 7
11+
7 -> 8
12+
8 -> 9
13+
9 -> 10
14+
7 -> 11
15+
11 -> 12
16+
12 -> 13
17+
7 -> 14
18+
14 -> 15
19+
20+
0 [label="PlayerUpdateEntityOverridesPacket",comment="name: \"PlayerUpdateEntityOverridesPacket\", typeName: \"\", id: 0, branchId: 325, recurseId: -1, attributes: 0, notes: \"\""];
21+
1 [label="Target ID",comment="name: \"Target ID\", typeName: \"ActorUniqueID\", id: 1, branchId: 0, recurseId: -1, attributes: 256, notes: \"\""];
22+
2 [label="ActorUniqueID",comment="name: \"ActorUniqueID\", typeName: \"\", id: 2, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
23+
3 [label="Property Index",comment="name: \"Property Index\", typeName: \"\", id: 3, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
24+
4 [label="unsigned varint",comment="name: \"unsigned varint\", typeName: \"\", id: 4, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
25+
5 [label="Update Type",comment="name: \"Update Type\", typeName: \"\", id: 5, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
26+
6 [label="byte",comment="name: \"byte\", typeName: \"\", id: 6, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
27+
7 [label="Dependency on 'Value Type'",shape=note,comment="name: \"Dependency on 'Value Type'\", typeName: \"\", id: 7, branchId: 0, recurseId: -1, attributes: 2, notes: \"\""];
28+
8 [label="Set Int Override",shape=diamond,comment="name: \"Set Int Override\", typeName: \"\", id: 8, branchId: 0, recurseId: -1, attributes: 4, notes: \"\""];
29+
9 [label="Int Value",comment="name: \"Int Value\", typeName: \"\", id: 9, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
30+
10 [label="int",comment="name: \"int\", typeName: \"\", id: 10, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
31+
11 [label="Set Float Override",shape=diamond,comment="name: \"Set Float Override\", typeName: \"\", id: 11, branchId: 1, recurseId: -1, attributes: 4, notes: \"\""];
32+
12 [label="Float Value",comment="name: \"Float Value\", typeName: \"\", id: 12, branchId: 0, recurseId: -1, attributes: 0, notes: \"\""];
33+
13 [label="float",comment="name: \"float\", typeName: \"\", id: 13, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
34+
14 [label="Default",shape=diamond,comment="name: \"Default\", typeName: \"\", id: 14, branchId: 2, recurseId: -1, attributes: 4, notes: \"\""];
35+
15 [label="[No Data]",comment="name: \"[No Data]\", typeName: \"\", id: 15, branchId: 0, recurseId: -1, attributes: 512, notes: \"\""];
36+
{ rank = max;2;4;6;10;13;15}
37+
38+
}

0 commit comments

Comments
 (0)