-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpackets.i.ts
3121 lines (3117 loc) · 83.6 KB
/
packets.i.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/* eslint-disable @typescript-eslint/no-empty-interface */
export * from './packetTypes.i'
import {
bool,
i32,
LoginTokens,
PlayStatusTypes,
TexturePackInfos,
BehaviorPackInfos,
ResourcePackIdVersions,
Experiments,
ResourcePackClientResponseStatus,
ResourcePackIds,
TextType,
zigzag32,
zigzag64,
varint64,
GameMode,
vec3f,
vec2f,
li16,
BlockCoordinates,
lf32,
varint,
GameRules,
li32,
StartGameMovementAuth,
li64,
BlockProperties,
Itemstates,
uuid,
MetadataDictionary,
Links,
Item,
EntityAttributes,
u8,
Rotation,
MovePlayerMode,
MovePlayerTeleport,
UpdateBlockFlags,
LevelEventEvent,
BlockEventType,
EntityEventEventId,
PlayerAttributes,
Transaction,
WindowID,
InteractActionId,
lu64,
Action,
Link,
SetSpawnPositionType,
AnimateActionId,
WindowType,
WindowIDVarint,
ItemStacks,
Recipes,
PotionTypeRecipes,
PotionContainerChangeRecipes,
CraftingEventRecipeType,
AdventureFlags,
AdventureCommandPermission,
ActionPermissions,
AdventurePermission,
nbt,
ByteArray,
PlayerRecords,
EventType,
UpdateMapFlags,
ClientBoundMapItemDataTracked,
ClientBoundMapItemDataTexture,
BossEventType,
AvailableCommandsEnum,
AvailableCommandsData,
DynamicEnum,
EnumConstraint,
CommandOrigin,
CommandBlockUpdateMode,
CommandOutputType,
CommandOutputOutput,
lu32,
ResourcePackDataType,
lu16,
SetTitleType,
StructureBlockSettings,
Skin,
BookEditType,
NPCRequestType,
NPCRequestActionType,
SetScoreAction,
ScoreEntry,
LabTableAction,
vec3u,
UpdateBlockSyncType,
DeltaMoveFlags,
ScoreboardIdentityAction,
ScoreboardIdentityEntry,
SoundType,
nbtLoop,
vec3i,
StructureTemplateData,
StructureTemplateType,
MultiplayerSettingsType,
CompletedUsingItemMethod,
u16,
InputFlag,
PlayerAuthInputMode,
PlayerAuthInputTransaction,
ItemStackRequest,
PlayerAuthInputBlockAction,
CreativeContentItem,
EnchantOption,
ItemStackResponses,
ArmorDamageType,
PositionTrackingAction,
PacketViolationSeverity,
CameraShakeAction,
ItemComponentList,
DebugRendererType,
SimulationTypeType,
NPCDialogueType,
} from "./packetTypes.i"
/**
* All Packets Combined
*
* `Warn`: Some of the bindings may be incorrect/outdated
*/
export enum Packets {
/**
* `Bound To Server`
* ___
* Sent by the client when the client initially tries to join the server.
*
* It is the first packet sent and contains a chain of tokens with data specific to the player.
*/
Login = "login",
/**
* `Bound To Client`
* ___
* Sent by the server after the login packet is sent.
* It will contain a status stating either the login was successful or what went wrong.
*/
PlayStatus = "play_status",
/**
* `Bound To Client`
* ___
* Sent by the server asking for a handshake with a token containing the needed "salt" to start packet encryption.
*/
ServerToClientHandshake = "server_to_client_handshake",
/**
* `Bound To Server`
* ___
* Sent by the client once the client has successfully started encryption.
*
* This packet should be the first encrypted packet sent to the server and all following packets should be encrypted aswell.
*/
ClientToServerHandshake = "client_to_server_handshake",
/**
* `Bound To Client`
* ___
* Sent by the server when the client is disconnected containing information about the disconnection.
*/
Disconnect = "disconnect",
/**
* `Bound To Client`
* ___
* Sent by the server containing info of all resource packs applied.
*
* This packet can be used to download the packs on the server.
*
* If you are just trying to join the server however just send a `ResourcePackClientResponse` with a status of `completed` and ignore the info on this packet completly.
*/
ResourcePacksInfo = "resource_packs_info",
/**
* `Bound To Client`
* ___
* Similar to `ResourcePacksInfo`
*
* Send `ResourcePackClientResponse` with a status of `completed` to continue past this packet.
*/
ResourcePacksStack = "resource_pack_stack",
/**
* `Bound To Server`
* ___
* Sent by the client stating its response to the packets `ResourcePacksInfo` and or `ResourcePacksStack`
*/
ResourcePackClientResponse = "resource_pack_client_response",
/**
* `Bound To Server & Client`
* ___
* Sent by the client to send chat messages.
*
* Sent by the server to forward messages, popups, tips, json, etc.
*/
Text = "text",
/**
* `Bound To Client`
* ___
* Sent by the server to update the current time client-side. The client actually advances time
* client-side by itself, so this packet does not need to be sent each tick. It is merely a means
* of synchronizing time between server and client.
*/
SetTime = "set_time",
/**
* `Bound To Client`
* ___
* Sent by the server to send information about the world the player will be spawned in.
*/
StartGame = "start_game",
/**
* `Bound To Client`
* ___
* Sent by the server to add a new client for an individual client. It is one of the few entities that cannot be added via the `AddEntity` packet.
*/
AddPlayer = "add_player",
/**
* `Bound To Client`
* ___
* Sent by the server to add a client-sided entity. It is used for every entity except other players, paintings and items,
* for which the `AddPlayer`, `AddPainting`, and `AddItemEntity` packets are used.
*/
AddEntity = "add_entity",
/**
* `Bound To Client`
* ___
* Sent by the server to remove an entity that currently exists in the world from the client-side.
*
* Sending this packet if the client cannot already see this entity will have no effect
*/
RemoveEntity = "remove_entity",
/**
* `Bound To Client`
* ___
* Sent by the server to add a dropped item client-side. It is one of the few entities that cannot be added via the `AddEntity` packet.
*/
AddItemEntity = "add_item_entity",
/**
* `Bound To Client`
* ___
* Sent by the serer when a player picks up an item to remove it from the client-side.
*
* It will remove the item entity then play the pickup animation.
*/
TakeItemEntity = "take_item_entity",
/**
* `Bound To Server & Client`
* ___
* Sent by the server to move an entity to an absolute position.
*
* This packet is typically used for movements where high accuracy is not needed, such as long range teleporting.
*
* Sent by the client when riding a mountable.
*/
MoveEntity = "move_entity",
/**
* `Bound To Server & Client`
* ___
* Sent by client to send their movement to the server.
*
* Sent by the server to update the movement for other clients
* ___
* `Developers Notes`
*
* The client can use this for a teleporting cheat unless the server has some form of movement correction enabled.
*/
MovePlayer = "move_player",
/**
* `Bound To Server & Client`
* ___
* Sent by the client when it jumps while riding an entity that has the WASDControlled entity flag set, for example when riding a horse.
*
* According to MiNET this can also be sent from the server to the client, but details on this are unknown.
*/
RiderJump = "rider_jump",
/**
* `Bound To Client`
* ___
* Sent by the server to update a block client-side without resending the entire chunk that the block is located in. It is particularly useful for small modifications like block breaking/placing.
*/
UpdateBlock = "update_block",
/**
* `Bound To Client`
* ___
* Similar to `AddEntity` except its for adding a painting.
*
* ¯\\\_(ツ)\_/¯
*/
AddPainting = "add_painting",
/**
* `Bound To Server & Client`
* ___
* Sent by the client and the server to maintain a synchronized server-authoritative tick between the client and the server. The client sends this packet first, and the server should reply with another one of these packets including the response time. This send/response loop should be set at an interval to maintain synchronization.
*/
TickSync = "tick_sync",
/**
* `Bound To Server & Client`
* ___
* Client communicates to server it made a sound server does same back.
*/
LevelSoundEventOld = "level_sound_event_old",
/**
* `Bound To Client`
* ___
* Instead of player sending it made a sound to the server like `LevelSoundEventOld`. The server controls all sounds now.
*/
LevelEvent = "level_event",
/**
* `Bound To Client`
* ___
* Has something to do with block state change and/or blocks the cause a sound event.
*/
BlockEvent = "block_event",
/**
* `Bound To Server & Client`
* ___
* Something to do with triggering an entities events. EG: when two mobs make a baby it emits an event that causes heart particles.
*/
EntityEvent = "entity_event",
/**
* `Bound To Client`
* ___
* Sent by server to tell client-side to start emitting a paricle effect from an entity.
*/
MobEffect = "mob_effect",
/**
* `Bound To Client`
* ___
* Sent by server to update the clients arributes. I assume this has to do with potion effects.
*/
UpdateAttributes = "update_attributes",
/**
* `Bound To Server & Client`
* ___
* InventoryTransaction is a packet sent by the client. It essentially exists out of multiple sub-packets,
* each of which have something to do with the inventory in one way or another. Some of these sub-packets
* directly relate to the inventory, others relate to interaction with the world that could potentially
* result in a change in the inventory.
*
* It is sent by the server to assumably sync the players inventory with what the server believes is your inventory,
* however this could be wrong and it is only used so the server can add/remove/update items in the clients inventory.
* ___
* `Developers Notes`
*
* This could be heavily exploited for things such as duplicating items, giving items, updating items nbt, enchanting items, editing item attributes, etc.
*/
InventoryTransaction = "inventory_transaction",
/**
* `Bound To Server & Client`
* ___
* Used to update a mobs equipment. EG: Zombie has sword.
*/
MobEquipment = "mob_equipment",
/**
* `Bound To Server & Client`
* ___
* Used to update a armor. EG: Zombie with helmet.
*/
MobArmorEquipment = "mob_armor_equipment",
/**
* `Bound To Server & Client`
* ___
* Interact is sent by the client when it interacts with another entity in some way. It used to be used for
* normal entity and block interaction, but this is no longer the case now.
*/
Interact = "interact",
/**
* `Bound To Server`
* ___
* Used when client uses the pick block binding to switch to the picked block or request a transaction for the picked block.
*/
BlockPickRequest = "block_pick_request",
/**
* `Bound To Server`
* ___
* Similar to `BlockPickRequest` except for an entity instead of a block.
*/
EntityPickRequest = "entity_pick_request",
/**
* `Bound To Server`
* ___
* PlayerAction is sent by the client when it executes any action, for example starting to sprint, swim,
* starting the breaking of a block, dropping an item, etc.
*/
PlayerAction = "player_action",
/**
* `Bound To Client`
* ___
* Presumably sent when armor is damaged to update its damage value.
*/
HurtArmor = "hurt_armor",
/**
* `Bound To Server & Client`
* ___
* Used to update an entities metadata.
*/
SetEntityData = "set_entity_data",
/**
* `Bound To Server & Client`
* ___
* Sent by the server to change the client-side velocity of an entity. It is usually used
* in combination with server-side movement calculation.
*
* Apparently the client can send something in regards to this aswell. What it is used for it unknown.
*/
SetEntityMotion = "set_entity_motion",
/**
* `Bound To Client`
* ___
* Sent by the server to initiate an entity link client-side, meaning one entity will start
* riding another.
*/
SetEntityLink = "set_entity_link",
/**
* `Bound To Client`
* ___
* Sent by the server to set the health of the client.
* This packet should no longer be used. Instead, the health attribute should be used so that the health and maximum health may be changed directly.
*/
SetHealth = "set_health",
/**
* `Bound To Client`
* ___
* Sent by server when client spawn position is set.
*/
SetSpawnPosition = "set_spawn_position",
/**
* `Bound To Server & Client`
* ___
* Sent by the server to send a client animation from one client to all viewers of that client.
* Sent by the client to tell the server it has started an animation.
*/
Animate = "animate",
/**
* `Bound To Server & Client`
* ___
* Sent when a player needs to respawn. Exact usage for client & server is unclear.
*/
Respawn = "respawn",
/**
* `Bound To Client`
* ___
* Sent by the server to open a container client-side. This container must be physically
* present in the world, for the packet to have any effect. Unlike Java Edition, Bedrock Edition requires that
* chests for example must be present and in range to open its inventory.
*/
ContainerOpen = "container_open",
/**
* `Bound To Server & Client`
* ___
* Sent by the server to close a container the player currently has opened, which was opened
* using the ContainerOpen packet, or by the client to tell the server it closed a particular container, such
* as the crafting grid.
*/
ContainerClose = "container_close",
/**
* `Bound To Server & Client`
* ___
* Sent by the server to the client. It used to be used to link hot bar slots of the player to
* actual slots in the inventory, but as of 1.2, this was changed and hot bar slots are no longer a free
* floating part of the inventory.
* Since 1.2, the packet has been re-purposed, but its new functionality is not clear.
*/
PlayerHotbar = "player_hotbar",
/**
* `Bound To Server & Client`
* ___
* Sent by the server to update the full content of a particular inventory. It is usually
* sent for the main inventory of the player, but also works for other inventories that are currently opened
* by the player.
*/
InventoryContent = "inventory_content",
/**
* `Bound To Server & Client`
* ___
* Sent by the server to update a single slot in one of the inventory windows that the client
* currently has opened. Usually this is the main inventory, but it may also be the off hand or, for example,
* a chest inventory.
*/
InventorySlot = "inventory_slot",
/**
* `Bound To Client`
* ___
* Sent by the server to update specific data of a single container, meaning a block such
* as a furnace or a brewing stand. This data is usually used by the client to display certain features
* client-side.
*/
ContainerSetData = "container_set_data",
/**
* `Bound To Client`
* ___
* Presumably sent by the server describing all recipes. Exact usage unknown.
*/
CraftingData = "crafting_data",
/**
* `Bound To Server & Client`
* ___
* Sent by the client when it crafts a particular item. Note that this packet may be fully
* ignored, as the InventoryTransaction packet provides all the information required.
*
* Unknown when or why it is sent by server
*/
CraftingEvent = "crafting_event",
/**
* `Bound To Client`
* ___
* Sent by the server to make the client 'select' a hot bar slot. It currently appears to
* be broken however, and does not actually set the selected slot to the hot bar slot set in the packet.
*/
GUIDataPickItem = "gui_data_pick_item",
/**
* `Bound To Server & Client`
* ___
* Sent by the server to update game-play related features, in particular permissions to
* access these features for the client. It includes allowing the player to fly, build and mine, and attack
* entities. Most of these flags should be checked server-side instead of using this packet only.
* The client may also send this packet to the server when it updates one of these settings through the
* in-game settings interface. The server should verify if the player actually has permission to update those
* settings.
*/
AdventureSettings = "adventure_settings",
/**
* `Bound To Server & Client`
* ___
* Presumably sent by the server & client to update a blocks nbt.
*/
BlockEntityData = "block_entity_data",
/**
* `Bound To Server`
* ___
* Seems like an more precise version of `MovePlayer`. It appears to be a way to tell the server the current input.
*
* EG: Moving 0.5x will continue moving you at 0.5x until another packet is sent saying client is now moving at 0x
*/
PlayerInput = "player_input",
/**
* `Bound To Client`
* ___
* Sent by the server to provide the client with a chunk of a world data (16xYx16 blocks).
* Typically a certain amount of chunks is sent to the client before sending it the spawn PlayStatus packet,
* so that the client spawns in a loaded world.
*/
LevelChunk = "level_chunk",
/**
* `Bound To Client`
* ___
* Sent by server to tell client whether or not to render all commands client-side.
*/
SetCommandsEnabled = "set_commands_enabled",
/**
* `Bound To Client`
* ___
* Sent by server to tell client currently difficulty presumably.
*/
SetDifficulty = "set_difficulty",
/**
* `Bound To Client`
* ___
* Sent by server to tell client currently dimension presumably.
*/
ChangeDimension = "change_dimension",
/**
* `Bound To Server & Client`
* ___
* Sent by the server to update the game type (game mode) of the player.
*
* Can also be sent by client to request a gamemode update. Server should verify client has the correct permissions to do so first.
*/
SetPlayerGameType = "set_player_game_type",
/**
* `Bound To Client`
* ___
* Sent by server containing an array of all the current players. Usually used by client to display all users in a playerlist in the pause menu.
*/
PlayerList = "player_list",
/**
* `Bound To Client`
* ___
* Sent by the server to send an event. It is typically sent to the client for
* telemetry reasons.
*/
SimpleEvent = "simple_event",
/**
* `Bound To Client`
* ___
* Sent by the server to send an event with additional data. It is typically sent to the client for
* telemetry reasons.
*/
Event = "event",
/**
* `Bound To Client`
* ___
* Sent by the server to summon and render a exp orb client-side.
*/
SpawnExperienceOrb = "spawn_experience_orb",
/**
* `Bound To Client`
* ___
* Sent by the server to the client to update the data of a map shown to the client.
* It is sent with a combination of flags that specify what data is updated.
* The `ClientBoundMapItemData` packet may be used to update specific parts of the map only. It is not required
* to send the entire map each time when updating one part.
*/
ClientboundMapItemData = "clientbound_map_item_data",
/**
* `Bound To Server & Client`
* ___
* Used to request the data of a map.
*/
MapInfoRequest = "map_info_request",
/**
* `Bound To Server & Client`
* ___
* Sent by the client to the server to update the server on the chunk view radius that
* it has set in the settings. The server may respond with a `ChunkRadiusUpdated` packet with either the chunk
* radius requested, or a different chunk radius if the server chooses so.
*/
RequestChunkRadius = "request_chunk_radius",
/**
* `Bound To Client`
* ___
* Sent by the server in response to a `RequestChunkRadius` packet. It defines the chunk
* radius that the server allows the client to have. This may be lower than the chunk radius requested by the
* client in the RequestChunkRadius packet.
*/
ChunkRadiusUpdate = "chunk_radius_update",
/**
* `Bound To Server & Client`
* ___
* Sent when an item in an item frame is dropped presumably.
*/
ItemFrameDropItem = "item_frame_drop_item",
/**
* `Bound To Client`
* ___
* Sent by server to update game rules client side.
*/
GameRulesChanged = "game_rules_changed",
/**
* `Bound To Client`
* ___
* Sent by the server to use an Education Edition camera on a player. It produces an image client-side.
*/
Camera = "camera",
/**
* `Bound To Server & Client`
* ___
* Used to set boss event data.
* Sent by the server to presumably update the client and vice-versa.
*/
BossEvent = "boss_event",
/**
* `Bound To Client`
* ___
* Send by server to show the client the credits screen.
*/
ShowCredits = "show_credits",
/**
* `Bound To Client`
* ___
* Sends a list of commands to the client. Commands can have
* arguments, and some of those arguments can have 'enum' values, which are a list of possible
* values for the argument. The serialization is rather complex and involves palettes like chunks.
*/
AvailableCommands = "available_commands",
/**
* `Bound To Server`
* ___
* Sent by the client to request the execution of a server-side command. Although some
* servers support sending commands using the Text packet, this packet is guaranteed to have the correct
* result.
*/
CommandRequest = "command_request",
/**
* `Bound To Server`
* ___
* Sent by the client to update a command block at a specific position. The command
* block may be either a physical block or an entity.
*/
CommandBlockUpdate = "command_block_update",
/**
* `Bound To Client`
* ___
* Sent by the server containing the results of a command executed.
* It is assumed this includes all commands executed even if not by the client listening for outputs,
* however, this is unknown.
*/
CommandOutput = "command_output",
/**
* `Bound To Client`
* ___
* Sent by the server to update the trades offered by a villager to a player. It is sent at the
* moment that a player interacts with a villager.
*/
UpdateTrade = "update_trade",
/**
* `Bound To Client`
* ___
* Sent by the server to the client upon opening a horse inventory. It is used to set the
* content of the inventory and specify additional properties, such as the items that are allowed to be put
* in slots of the inventory.
*/
UpdateEquipment = "update_equipment",
/**
* `Bound To Client`
* ___
* Sent by the server to the client to inform the client about the data contained in
* one of the resource packs that are about to be sent.
*/
ResourcePackDataInfo = "resource_pack_data_info",
/**
* `Bound To Client`
* ___
* Sent to the client so that the client can download the resource pack. Each packet
* holds a chunk of the compressed resource pack, of which the size is defined in the `ResourcePackDataInfo`
* packet sent before.
*/
ResourcePackChunkData = "resource_pack_chunk_data",
/**
* `Bound To Server`
* ___
* Sent by the client to request a chunk of data from a particular resource pack,
* that it has obtained information about in a `ResourcePackDataInfo` packet.
*/
ResourcePackChunkRequest = "resource_pack_chunk_request",
/**
* `Bound To Client`
* ___
* Sent by server to transfer client to another server.
*/
Transfer = "transfer",
/**
* `Bound To Client`
* ___
* Sent by server to start playing a sound client-side.
*/
PlaySound = "play_sound",
/**
* `Bound To Client`
* ___
* Sent by server to stop playing a sound client-side.
*/
StopSound = "stop_sound",
/**
* `Bound To Client`
* ___
* Sent by the server to make a title, subtitle or action bar shown to a player. It has several
* fields that allow setting the duration of the titles.
*/
SetTitle = "set_title",
/**
* `Bound To Client`
* ___
* Packet usage is unknown.
*/
AddBehaviorTree = "add_behavior_tree",
/**
* `Bound To Client`
* ___
* Sent by the client when it updates a structure block using the in-game UI. The
* data it contains depends on the type of structure block that it is. In Minecraft Bedrock Edition v1.11,
* there is only the Export structure block type, but in v1.13 the ones present in Java Edition will,
* according to the wiki, be added too.
*/
StructureBlockUpdate = "structure_block_update",
/**
* `Bound To Client`
* ___
* Sent by the server to show a Marketplace store offer to a player. It opens a window
* client-side that displays the item.
* The `ShowStoreOffer` packet only works on the partnered servers: Servers that are not partnered will not have
* store buttons show up in the in-game pause menu and will, as a result, not be able to open store offers
* a store buttons show up in the in-game pause menu and will, as a result, not be able to open store offers
* with the domain of one of the partnered servers.
*/
ShowStoreOffer = "show_store_offer",
/**
* `Bound To Server`
* ___
* Sent by the client to the server to notify the server it purchased an item from the
* Marketplace store that was offered by the server. The packet is only used for partnered servers.
*/
PurchaseReceipt = "purchase_receipt",
/**
* `Bound To Server & Client`
* ___
* Presumably sent by both sides to update a clients skin.
*/
PlayerSkin = "player_skin",
/**
* `Bound To Client`
* ___
* Sent when a sub-client joins the server while another client is already connected to it.
* The packet is sent as a result of split-screen game play, and allows up to four players to play using the
* same network connection. After an initial Login packet from the 'main' client, each sub-client that
* connects sends a `SubClientLogin` to request their own login.
*/
SubClientLogin = "sub_client_login",
/**
* `Bound To Client`
* ___
* Is used to make the client connect to a custom websocket server. Websockets have the ability to execute commands on behalf of the client
* along with listening to a handful of events that get fired on the client side.
*/
InitiateWebSocketConnection = "initiate_web_socket_connection",
/**
* `Bound To Client`
* ___
* Sent by the server to let the client know what entity type it was last hurt by. At this
* moment, the packet is useless and should not be used. There is no behaviour that depends on if this
* packet is sent or not.
*/
SetLastHurtBy = "set_last_hurt_by",
/**
* `Bound To Server & Client`
* ___
* Sent by the client when it edits a book. It is sent each time a modification was made and the
* player stops its typing 'session', rather than simply after closing the book.
*/
BookEdit = "book_edit",
/**
* `Bound To Server & Client`
* ___
* Sent by the client when it interacts with an NPC.
* The packet is specifically made for Education Edition, where NPCs are available to use.
* As of recent update NPCs are now available in the production build of mcbe.
*/
NPCRequest = "npc_request",
/**
* `Bound To Client`
* ___
* Sent by the server to transfer a photo (image) file to the client. It is typically used
* to transfer photos so that the client can display it in a portfolio in Education Edition.
* While previously usable in the default Bedrock Edition, the displaying of photos in books was disabled and
* the packet now has little use anymore.
*/
PhotoTransfer = "photo_transfer",
/**
* `Bound To Client`
* ___
* Sent by the server to make the client open a form. This form may be either a modal form
* which has two options, a menu form for a selection of options and a custom form for properties.
*/
ModalFormRequest = "modal_form_request",
/**
* `Bound To Server`
* ___
* Sent by the client in response to a `ModalFormRequest`, after the player has submitted
* the form sent. It contains the options/properties selected by the player, or a JSON encoded 'null' if
* the form was closed by clicking the X at the top right corner of the form.
*/
ModalFormResponse = "modal_form_response",
/**
* `Bound To Server`
* ___
* Sent by the client to request the settings specific to the server. These settings
* are shown in a separate tab client-side, and have the same structure as a custom form.
* `ServerSettingsRequest` has no fields.
*/
ServerSettingsRequest = "server_settings_request",
/**
* `Bound To Client`
* ___
* Sent by the server in response to a `ServerSettingsRequest` from the
* client. It is structured the same as a `ModalFormRequest` packet, and if filled out correctly, will show
* a specific tab for the server in the settings of the client. A `ModalFormResponse` packet is sent by the
* client in response to a ServerSettingsResponse, when the client fills out the settings and closes the
* settings again.
*/
ServerSettingsResponse = "server_settings_response",
/**
* `Bound To Client`
* ___
* Sent by the server to show the XBOX Live profile of one player to another.
*/
ShowProfile = "show_profile",
/**
* `Bound To Server & Client`
* ___
* Sent by the client when it toggles the default game type in the settings UI, and is
* sent by the server when it actually changes the default game type, resulting in the toggle being changed
* in the settings UI.
*/
SetDefaultGameType = "set_default_game_type",
/**
* `Bound To Client`
* ___
* Sent by the server to remove a scoreboard objective. It is used to stop showing a
* scoreboard to a player.
*/
RemoveObjective = "remove_objective",
/**
* `Bound To Client`
* ___
* Sent by the server to display an object as a scoreboard to the player. Once sent,
* it should be followed up by a `SetScore` packet to set the lines of the packet.
*/
SetDisplayObjective = "set_display_objective",
/**
* `Bound To Client`
* ___
* Sent by the server to send the contents of a scoreboard to the player. It may be used to either
* add, remove or edit entries on the scoreboard.
*/
SetScore = "set_score",
/**
* `Bound To Server & Client`
* ___
* Sent by the client to let the server know it started a chemical reaction in Education Edition,
* and is sent by the server to other clients to show the effects.
* The packet is only functional if Education features are enabled.
*/
LabTable = "lab_table",
/**
* `Bound To Client`
* ___
* Sent by the server to synchronise the falling of a falling block entity with the
* transitioning back and forth from and to a solid block. It is used to prevent the entity from flickering,
* and is used in places such as the pushing of blocks with pistons.
*/
UpdateBlockSynced = "update_block_synced",
/**
* `Bound To Client`
* ___
* Sent by the server to move an entity. The packet is specifically optimised to save as
* much space as possible, by only writing non-zero fields.
* As of 1.16.100, this packet no longer actually contains any deltas.
*/
MoveEntityDelta = "move_entity_delta",
/**
* `Bound To Client`
* ___
* Sent by the server to change the identity type of one of the entries on a
* scoreboard. This is used to change, for example, an entry pointing to a player, to a fake player when it
* leaves the server, and to change it back to a real player when it joins again.
* In non-vanilla situations, the packet is quite useless.
*/
SetScoreboardIdentity = "set_scoreboard_identity",
/**
* `Bound To Server`
* ___
* Sent by the client in response to a PlayStatus packet with the status set
* to spawn. The packet marks the moment at which the client is fully initialised and can receive any packet
* without discarding it.
*/
SetLocalPlayerAsInitialized = "set_local_player_as_initialized",
/**
* `Bound To Client`
* ___
* Packet usage is unknown.
*/
UpdateSoftEnum = "update_soft_enum",
/**
* `Bound To Server & Client`
* ___
* Sent by the server (and the client, on development builds) to measure the latency
* over the entire Minecraft stack, rather than the RakNet latency. It has other usages too, such as the
* ability to be used as some kind of acknowledgement packet, to know when the client has received a certain
* other packet.
*/
NetworkStackLatency = "network_stack_latency",
/**
* `Bound To Server & Client`
* ___
* Sent by both the client and the server. It is a way to let scripts communicate with
* the server, so that the client can let the server know it triggered an event, or the other way around.
* It is essentially an RPC kind of system.
*/
ScriptCustomEvent = "script_custom_event",
/**
* `Bound To Client`
* ___
* Sent by the server to spawn a particle effect client-side. Unlike other packets that
* result in the appearing of particles, this packet can show particles that are not hardcoded in the client.
* They can be added and changed through behaviour packs to implement custom particles.
*/
SpawnParticleEffect = "spawn_particle_effect",
/**
* `Bound To Client`
* ___
* Sent by the server at the start of the game to let the client know all
* entities that are available on the server.
*/
AvailableEntityIdentifiers = "available_entity_identifiers",
/**
* `Bound To Server & Client`
* ___
* Not used. Use `LevelSoundEvent`
*/
LevelSoundEventV2 = "level_sound_event_v2",
/**
* `Bound To Client`
* ___
* Sent by the server to change the point around which chunks are and remain
* loaded. This is useful for mini-game servers, where only one area is ever loaded, in which case the
* `NetworkChunkPublisherUpdate` packet can be sent in the middle of it, so that no chunks ever need to be
* additionally sent during the course of the game.
* In reality, the packet is not extraordinarily useful, and most servers just send it constantly at the
* position of the player.
* If the packet is not sent at all, no chunks will be shown to the player, regardless of where they are sent.
*/