# libmc A lightweight minecraft client-side protocol library and related library, including `rcon client`, `motd ping`, `nbt parser`. All module require `kotlin-stdlib`, `libmc-protocol` require `kotlin-stdlib` and `kotlinx-coroutines` # Supported targets - JVM 1.8 - MingwX64 - LinuxArm64 - LinuxX64 - MacosArm64 # libmc-protocol --- # Minecraft Protocol Library Status & Roadmap ## Implementation details - [x] **Online Mode Authentication & Encryption**: See [Implement Encryption](docs/implement-encryption.md) - [ ] **Structured `TextComponent` Parser**: Rich Chat Component AST decoder (currently falling back to raw `NBTCompound`). - [ ] **Command Tree Parser (0x10)**: Full binary graph decoder for brigadier nodes, argument types, and suggestions. - [ ] **Recipe Book & Recipe Data (0x3F, 0x4A, 0x4B, 0x4C, 0x85)**: Recipe layout declarations and client-side recipe settings. - [ ] **Chunk & World Data (0x2D)**: Level Chunk Data with Light decoder (Bitsets, Paletted Containers, Direct/Indirect Palettes). - [ ] **Light Engine Update (0x30)**: Sky & Block light nibble array parser. - [ ] **Explosion Event Decoder (0x24)**: Knockback vectors and destroyed block offsets array. - [ ] **Debug Packets Parsing (0x1A - 0x1E)**: Debug subs, block/entity states, and game performance sample events. - [ ] **Particle Parsing** - [ ] **Slot Data Parsing** --- ## Protocol Packet Codecs Mapping
Click to expand ### 1. Status Stage #### Clientbound - [x] `0x00` Status Response (`ClientboundStatusResponsePacket`) - [x] `0x01` Pong Response (`ClientboundPongResponsePacket`) #### Serverbound - [x] `0x00` Status Request (`ServerboundStatusRequestPacket`) - [x] `0x01` Ping Request (`ServerboundPingRequestPacket`) --- ### 2. Handshake Stage #### Serverbound - [x] `0x00` Handshake (`ServerboundHandshakePacket`) --- ### 3. Login Stage #### Clientbound - [x] `0x00` Disconnect (`ClientboundDisconnectLoginPacket`) - [x] `0x01` Encryption Request (`ClientboundHelloPacket`) - [x] `0x02` Login Success (`ClientboundLoginSuccessPacket`) - [x] `0x03` Set Compression (`ClientboundSetCompressionPacket`) - [x] `0x04` Login Plugin Request (`ClientboundCustomQueryPacket`) - [x] `0x05` Cookie Request (`ClientboundCookieRequestPacket`) #### Serverbound - [x] `0x00` Login Start (`ServerboundLoginStartPacket`) - [x] `0x01` Encryption Response (`ServerboundKeyPacket`) - [x] `0x02` Login Plugin Response (`ServerboundCustomQueryAnswerPacket`) - [x] `0x03` Login Acknowledged (`ServerboundLoginAcknowledgedPacket`) - [x] `0x04` Cookie Response (`ServerboundCookieResponsePacket`) --- ### 4. Configuration Stage #### Clientbound - [x] `0x00` Cookie Request (`ClientboundCookieRequestPacket`) - [x] `0x01` Custom Payload (`ClientboundCustomPayloadPacket`) - [x] `0x02` Disconnect (`ClientboundDisconnectConfigurationPacket`) - [x] `0x03` Finish Configuration (`ClientboundFinishConfigurationPacket`) - [x] `0x04` Keep Alive (`ClientboundKeepAliveConfigurationPacket`) - [x] `0x05` Ping (`ClientboundPingConfigurationPacket`) - [x] `0x06` Reset Chat (`ClientboundResetChatPacket`) - [x] `0x07` Registry Data (`ClientboundRegistryDataPacket`) - [x] `0x08` Remove Resource Pack (`ClientboundRemoveResourcePackPacket`) - [x] `0x09` Add Resource Pack (`ClientboundAddResourcePackPacket`) - [x] `0x0A` Store Cookie (`ClientboundStoreCookiePacket`) - [x] `0x0B` Transfer (`ClientboundTransferPacket`) - [x] `0x0C` Update Enabled Features (`ClientboundUpdateEnabledFeaturesPacket`) - [x] `0x0D` Update Tags (`ClientboundUpdateTagsPacket`) - [x] `0x0E` Select Known Packs (`ClientboundSelectKnownPacksPacket`) - [x] `0x0F` Custom Report Details (`ClientboundCustomReportDetailsPacket`) - [x] `0x10` Server Links (`ClientboundServerLinksPacket`) - [x] `0x11` Clear Dialog (`ClientboundClearDialogPacket`) - [x] `0x12` Show Dialog (`ClientboundConfigurationShowDialogPacket`) - [x] `0x13` Code Of Conduct (`ClientboundCodeOfConductPacket`) #### Serverbound - [x] `0x00` Client Information (`ServerboundCookieResponsePacket`) - [x] `0x01` Cookie Response (`ServerboundCookieResponsePacket`) - [x] `0x02` Plugin Message (`ServerboundCustomPayloadPacket`) - [x] `0x03` Finish Configuration Acknowledged (`ServerboundAckFinishConfigurationPacket`) - [x] `0x04` Keep Alive Response (`ServerboundKeepAliveConfigurationPacket`) - [x] `0x05` Pong Response (`ServerboundPongConfigurationPacket`) - [x] `0x07` Select Known Packs (`ServerboundSelectKnownPacksPacket`) - [x] `0x08` Custom Click Action (`ServerboundCustomClickActionPacket`) - [x] `0x09` Accept Code Of Conduct (`ServerboundAcceptCodeOfConductPacket`) --- ### 5. Play Stage #### Clientbound - [x] `0x00` Delimiter (`ClientboundDelimiterPacket`) - [x] `0x01` Spawn Entity (`ClientboundSpawnEntityPacket`) - [x] `0x02` Entity Animation (`ClientboundEntityAnimationPacket`) - [x] `0x03` Award Statistics (`ClientboundAwardStatisticsPacket`) - [x] `0x04` Acknowledge Block Change (`ClientboundAcknowledgeBlockChangePacket`) - [x] `0x05` Block Destruction (`ClientboundBlockDestructionPacket`) - [x] `0x06` Block Entity Data (`ClientboundBlockEntityDataPacket`) - [x] `0x07` Block Event (`ClientboundBlockEventPacket`) - [x] `0x08` Block Update (`ClientboundBlockUpdatePacket`) - [x] `0x09` Boss Event (`ClientboundBossEventPacket`) - [x] `0x0A` Change Difficulty (`ClientboundChangeDifficultyPacket`) - [x] `0x0B` Chunk Batch Finished (`ClientboundChunkBatchFinishedPacket`) - [x] `0x0C` Chunk Batch Start (`ClientboundChunkBatchStartPacket`) - [x] `0x0D` Chunks Biomes (`ClientboundChunksBiomesPacket`) - [x] `0x0E` Clear Titles (`ClientboundClearTitlesPacket`) - [x] `0x0F` Command Suggestions (`ClientboundCommandSuggestionsPacket`) - [ ] `0x10` Commands (`ClientboundCommandsPacket`) - [x] `0x11` Container Close (`ClientboundContainerClosePacket`) - [ ] `0x12` Container Set Content (`ClientboundContainerSetContentPacket`) - [x] `0x13` Container Set Data (`ClientboundContainerSetDataPacket`) - [ ] `0x14` Container Set Slot (`ClientboundContainerSetSlotPacket`) - [x] `0x15` Cookie Request (`ClientboundCookieRequestPacket`) - [x] `0x16` Cooldown (`ClientboundCooldownPacket`) - [x] `0x17` Custom Chat Completions (`ClientboundCustomChatCompletionsPacket`) - [x] `0x18` Custom Payload (`ClientboundCustomPayloadPacket`) - [x] `0x19` Damage Event (`ClientboundDamageEventPacket`) - [ ] `0x1A` Debug Block Value (`ClientboundDebugBlockValuePacket`) - [ ] `0x1B` Debug Chunk Value (`ClientboundDebugChunkValuePacket`) - [ ] `0x1C` Debug Entity Value (`ClientboundDebugEntityValuePacket`) - [ ] `0x1D` Debug Event (`ClientboundDebugEventPacket`) - [ ] `0x1E` Debug Sample (`ClientboundDebugSamplePacket`) - [x] `0x1F` Delete Chat (`ClientboundDeleteChatPacket`) - [x] `0x20` Disconnect (`ClientboundDisconnectPlayPacket`) - [x] `0x21` Disguised Chat Message (`ClientboundDisguisedChatMessagePacket`) - [x] `0x22` Entity Event (`ClientboundEntityEventPacket`) - [x] `0x23` Teleport Entity (`ClientboundTeleportEntityPacket`) - [ ] `0x24` Explode (`ClientboundExplodePacket`) - [x] `0x25` Unload Chunk (`ClientboundUnloadChunkPacket`) - [x] `0x26` Game Event (`ClientboundGameEventPacket`) - [x] `0x27` Game Rule Values (`ClientboundGameRuleValuesPacket`) - [x] `0x28` Test Highlight Position (`ClientboundTestHighlightPositionPacket`) - [x] `0x29` Open Horse Screen (`ClientboundOpenHorseScreenPacket`) - [x] `0x2A` Hurt Animation (`ClientboundHurtAnimationPacket`) - [x] `0x2B` Initialize World Border (`ClientboundInitializeWorldBorderPacket`) - [x] `0x2C` Keep Alive (`ClientboundKeepAlivePlayPacket`) - [ ] `0x2D` Level Chunk Update With Light (`ClientboundLevelChunkUpdateWithLightPacket`) - [x] `0x2E` Level Event (`ClientboundLevelEventPacket`) - [ ] `0x2F` Particle (`ClientboundParticlePacket`) - [ ] `0x30` Light Update (`ClientboundLightUpdatePacket`) - [x] `0x31` Login Play (`ClientboundLoginPlayPacket`) - [x] `0x32` Low Disk Space Warning (`ClientboundLowDiskSpaceWarningPacket`) - [ ] `0x33` Map Item Data (`ClientboundMapItemDataPacket`) - [ ] `0x34` Merchant Offers (`ClientboundMerchantOffersPacket`) - [x] `0x35` Update Entity Position (`ClientboundUpdateEntityPositionPacket`) - [x] `0x36` Update Entity Position and Rotation (`ClientboundUpdateEntityPositionAndRotationPacket`) - [x] `0x37` Move Minecart Along Track (`ClientboundMoveMinecartAlongTrackPacket`) - [x] `0x38` Update Entity Rotation (`ClientboundUpdateEntityRotationPacket`) - [x] `0x39` Move Vehicle (`ClientboundMoveVehiclePacket`) - [x] `0x3A` Open Book (`ClientboundOpenBookPacket`) - [x] `0x3B` Open Screen (`ClientboundOpenScreenPacket`) - [x] `0x3C` Open Sign Editor (`ClientboundOpenSignEditorPacket`) - [x] `0x3D` Ping (`ClientboundPingPacket`) - [x] `0x3E` Pong Response (`ClientboundPongResponsePacket`) - [ ] `0x3F` Place Ghost Recipe (`ClientboundPlaceGhostRecipePacket`) - [x] `0x40` Player Abilities (`ClientboundPlayerAbilitiesPacket`) - [x] `0x41` Player Chat Message (`ClientboundPlayerChatMessagePacket`) - [x] `0x42` Player End Combat (`ClientboundPlayerEndCombatPacket`) - [x] `0x43` Player Enter Combat (`ClientboundPlayerEnterCombatPacket`) - [x] `0x44` Player Combat Death (`ClientboundPlayerCombatDeathPacket`) - [x] `0x45` Player Info Remove (`ClientboundPlayerInfoRemovePacket`) - [ ] `0x46` Player Info Update (`ClientboundPlayerInfoUpdatePacket`) - [x] `0x47` Player Look At (`ClientboundPlayerLookAtPacket`) - [x] `0x48` Synchronize Player Position (`ClientboundSynchronizePlayerPositionPacket`) - [x] `0x49` Player Rotation (`ClientboundPlayerRotationPacket`) - [ ] `0x4A` Recipe Book Add (`ClientboundRecipeBookAddPacket`) - [ ] `0x4B` Recipe Book Remove (`ClientboundRecipeBookRemovePacket`) - [ ] `0x4C` Recipe Book Settings (`ClientboundRecipeBookSettingsPacket`) - [x] `0x4D` Remove Entities (`ClientboundRemoveEntitiesPacket`) - [x] `0x4E` Remove Entity Effect (`ClientboundRemoveEntityEffectPacket`) - [x] `0x4F` Reset Score (`ClientboundResetScorePacket`) - [x] `0x50` Remove Resource Pack (`ClientboundRemoveResourcePackPacket`) - [x] `0x51` Add Resource Pack (`ClientboundAddResourcePackPacket`) - [x] `0x52` Respawn (`ClientboundRespawnPacket`) - [x] `0x53` Set Head Rotation (`ClientboundSetHeadRotationPacket`) - [x] `0x54` Update Section Block (`ClientboundUpdateSectionBlockPacket`) - [x] `0x55` Select Advancements Tab (`ClientboundSelectAdvancementsTabPacket`) - [x] `0x56` Server Data (`ClientboundServerDataPacket`) - [x] `0x57` Set Action Bar Text (`ClientboundSetActionBarTextPacket`) - [x] `0x58` Set Border Center (`ClientboundSetBorderCenterPacket`) - [x] `0x59` Set Border Leap Size (`ClientboundSetBorderLeapSizePacket`) - [x] `0x5A` Set Border Size (`ClientboundSetBorderSizePacket`) - [x] `0x5B` Set Border Warning Delay (`ClientboundSetBorderWarningDelayPacket`) - [x] `0x5C` Set Border Warning Distance (`ClientboundSetBorderWarningDistancePacket`) - [x] `0x5D` Set Camera (`ClientboundSetCameraPacket`) - [x] `0x5E` Set Center Chunk (`ClientboundSetCenterChunkPacket`) - [x] `0x5F` Set Render Distance (`ClientboundSetRenderDistancePacket`) - [ ] `0x60` Set Cursor Item (`ClientboundSetCursorItemPacket`) - [x] `0x61` Set Default Spawn Position (`ClientboundSetDefaultSpawnPositionPacket`) - [x] `0x62` Set Display Objective (`ClientboundSetDisplayObjectivePacket`) - [ ] `0x63` Set Entity Metadata (`ClientboundSetEntityMetadataPacket`) - [x] `0x64` Link Entities (`ClientboundLinkEntitiesPacket`) - [x] `0x65` Set Entity Velocity (`ClientboundSetEntityVelocityPacket`) - [ ] `0x66` Set Equipment (`ClientboundSetEquipmentPacket`) - [x] `0x67` Set Experience (`ClientboundSetExperiencePacket`) - [x] `0x68` Set Health (`ClientboundSetHealthPacket`) - [x] `0x69` Set Carried Item (`ClientboundSetCarriedItemPacket`) - [x] `0x6A` Update Objective (`ClientboundUpdateObjectivePacket`) - [x] `0x6B` Set Passengers (`ClientboundSetPassengersPacket`) - [ ] `0x6C` Set Player Inventory Slot (`ClientboundSetPlayerInventorySlotPacket`) - [ ] `0x6D` Set Player Team (`ClientboundSetPlayerTeamPacket`) - [x] `0x6E` Update Score (`ClientboundUpdateScorePacket`) - [x] `0x6F` Set Simulation Distance (`ClientboundSetSimulationDistancePacket`) - [x] `0x70` Set Subtitle Text (`ClientboundSetSubtitleTextPacket`) - [x] `0x71` Set Time (`ClientboundSetTimePacket`) - [x] `0x72` Set Title Text (`ClientboundSetTitleTextPacket`) - [x] `0x73` Set Title Animation Times (`ClientboundSetTitleAnimationTimesPacket`) - [x] `0x74` Entity Sound Effect (`ClientboundEntitySoundEffectPacket`) - [x] `0x75` Sound Effect (`ClientboundSoundEffectPacket`) - [x] `0x76` Start Configuration (`ClientboundStartConfigurationPacket`) - [x] `0x77` Stop Sound (`ClientboundStopSoundPacket`) - [x] `0x78` Store Cookie (`ClientboundStoreCookiePacket`) - [x] `0x79` System Chat Message (`ClientboundSystemChatMessagePacket`) - [x] `0x7A` Set Tab List Header And Footer (`ClientboundSetTabListHeaderAndFooterPacket`) - [x] `0x7B` Tag Query Response (`ClientboundTagQueryResponsePacket`) - [x] `0x7C` Pickup Item (`ClientboundPickupItemPacket`) - [x] `0x7D` Synchronize Vehicle Position (`ClientboundSynchronizeVehiclePositionPacket`) - [x] `0x7E` Test Instance Block Status (`ClientboundTestInstanceBlockStatusPacket`) - [x] `0x7F` Set Ticking State (`ClientboundSetTickingStatePacket`) - [x] `0x80` Step Tick (`ClientboundStepTickPacket`) - [x] `0x81` Transfer (`ClientboundTransferPacket`) - [ ] `0x82` Update Advancements (`ClientboundUpdateAdvancementsPacket`) - [x] `0x83` Update Attributes (`ClientboundUpdateAttributesPacket`) - [x] `0x84` Entity Effect (`ClientboundEntityEffectPacket`) - [ ] `0x85` Update Recipes (`ClientboundUpdateRecipesPacket`) - [x] `0x86` Update Tags (`ClientboundUpdateTagsPacket`) - [x] `0x87` Projectile Power (`ClientboundProjectilePowerPacket`) - [x] `0x88` Custom Report Details (`ClientboundCustomReportDetailsPacket`) - [x] `0x89` Server Links (`ClientboundServerLinksPacket`) - [ ] `0x8A` Waypoint (`ClientboundWaypointPacket`) - [x] `0x8B` Clear Dialog (`ClientboundClearDialogPacket`) - [x] `0x8C` Show Dialog (`ClientboundShowDialogPacket`) #### Serverbound - [x] `0x00` Accept Teleportation (`ServerboundAcceptTeleportationPacket`) - [x] `0x01` Attack Action (`ServerboundAttackActionPacket`) - [x] `0x02` Query Block Entity Tag (`ServerboundQueryBlockEntityTagPacket`) - [x] `0x03` Bundle Item Selected (`ServerboundBundleItemSelectedPacket`) - [x] `0x04` Change Difficulty (`ServerboundChangeDifficultyPacket`) - [x] `0x05` Change Game Mode (`ServerboundChangeGameModePacket`) - [x] `0x06` Acknowledge Chat Message (`ServerboundAcknowledgeChatMessagePacket`) - [x] `0x07` Chat Command (`ServerboundChatCommandPacket`) - [x] `0x08` Signed Chat Command (`ServerboundSignedChatCommandPacket`) - [x] `0x09` Chat Message (`ServerboundChatMessagePacket`) - [x] `0x0A` Update Chat Session (`ServerboundUpdateChatSessionPacket`) - [x] `0x0B` Chunk Batch Received (`ServerboundChunkBatchReceivedPacket`) - [x] `0x0C` Client Command (`ServerboundClientCommandPacket`) - [x] `0x0D` Client Tick End (`ServerboundClientTickEndPacket`) - [x] `0x0E` Client Information (`ServerboundClientInformationPacket`) - [x] `0x0F` Command Suggestion Request (`ServerboundCommandSuggestionRequestPacket`) - [x] `0x10` Configuration Acknowledged (`ServerboundConfigurationAcknowledgedPacket`) - [x] `0x11` Container Click Button (`ServerboundContainerClickButtonPacket`) - [x] `0x12` Container Click (`ServerboundContainerClickPacket`) - [x] `0x13` Container Close (`ServerboundContainerClosePacket`) - [x] `0x14` Change Container Slot State (`ServerboundChangeContainerSlotStatePacket`) - [x] `0x15` Cookie Response (`ServerboundCookieResponsePacket`) - [x] `0x16` Custom Payload (`ServerboundCustomPayloadPacket`) - [ ] `0x17` Debug Subscription Request (`ServerboundDebugSubscriptionRequestPacket`) - [x] `0x18` Edit Book (`ServerboundEditBookPacket`) - [x] `0x19` Query Entity Tag (`ServerboundQueryEntityTagPacket`) - [x] `0x1A` Interact (`ServerboundInteractPacket`) - [x] `0x1B` Jigsaw Generate (`ServerboundJigsawGeneratePacket`) - [x] `0x1C` Keep Alive (`ServerboundKeepAlivePlayPacket`) - [x] `0x1D` Lock Difficulty (`ServerboundLockDifficultyPacket`) - [x] `0x1E` Set Player Position (`ServerboundSetPlayerPositionPacket`) - [x] `0x1F` Set Player Position and Rotation (`ServerboundSetPlayerPositionAndRotationPacket`) - [x] `0x20` Set Player Rotation (`ServerboundSetPlayerRotationPacket`) - [x] `0x21` Set Player Movement Flag (`ServerboundSetPlayerMovementFlagPacket`) - [x] `0x22` Move Vehicle (`ServerboundMoveVehiclePacket`) - [x] `0x23` Paddle Boat (`ServerboundPaddleBoatPacket`) - [x] `0x24` Pick Item From Block (`ServerboundPickItemFromBlockPacket`) - [x] `0x25` Pick Item From Entity (`ServerboundPickItemFromEntityPacket`) - [x] `0x26` Ping Request (`ServerboundPingRequestPacket`) - [x] `0x27` Place Recipe (`ServerboundPlaceRecipePacket`) - [x] `0x28` Player Abilities (`ServerboundPlayerAbilitiesPacket`) - [x] `0x29` Player Action (`ServerboundPlayerActionPacket`) - [x] `0x2A` Player Command (`ServerboundPlayerCommandPacket`) - [x] `0x2B` Player Input (`ServerboundPlayerInputPacket`) - [x] `0x2C` Player Loaded (`ServerboundPlayerLoadedPacket`) - [x] `0x2D` Pong (`ServerboundPongPlayPacket`) - [x] `0x2E` Recipe Book Change Settings (`ServerboundRecipeBookChangeSettingsPacket`) - [x] `0x2F` Recipe Book Seen Recipe (`ServerboundRecipeBookSeenRecipePacket`) - [x] `0x30` Rename Item (`ServerboundRenameItemPacket`) - [x] `0x31` Resource Pack Response (`ServerboundResourcePackResponsePacket`) - [x] `0x32` Seen Advancements (`ServerboundSeenAdvancementsPacket`) - [x] `0x33` Select Trade (`ServerboundSelectTradePacket`) - [x] `0x34` Set Beacon (`ServerboundSetBeaconPacket`) - [x] `0x35` Set Carried Item (`ServerboundSetCarriedItemPacket`) - [x] `0x36` Set Command Block (`ServerboundSetCommandBlockPacket`) - [x] `0x37` Set Command Minecart (`ServerboundSetCommandMinecartPacket`) - [x] `0x38` Set Creative Mode Slot (`ServerboundSetCreativeModeSlotPacket`) - [x] `0x39` Set Game Rule (`ServerboundSetGameRulePacket`) - [x] `0x3A` Set Jigsaw Block (`ServerboundSetJigsawBlockPacket`) - [x] `0x3B` Set Structure Block (`ServerboundSetStructureBlockPacket`) - [x] `0x3C` Set Test Block (`ServerboundSetTestBlockPacket`) - [x] `0x3D` Sign Update (`ServerboundSignUpdatePacket`) - [x] `0x3E` Spectator Action (`ServerboundSpectatorActionPacket`) - [x] `0x3F` Swing (`ServerboundSwingPacket`) - [x] `0x40` Teleport To Entity (`ServerboundTeleportToEntityPacket`) - [x] `0x41` Test Instance Block Action (`ServerboundTestInstanceBlockActionPacket`) - [x] `0x42` Use Item On (`ServerboundUseItemOnPacket`) - [x] `0x43` Use Item (`ServerboundUseItemPacket`) - [x] `0x44` Custom Click Action (`ServerboundCustomClickActionPacket`)
--- # libmc-mcping A lightweight module to query Minecraft Java and Bedrock server status, MOTD, and latency [Use mcping](https://repo.rtast.cn/packages/-/cn.rtast.libmc:mcping) # libmc-rconlib Send Command via rcon protocol [Use rconlib](https://repo.rtast.cn/packages/-/cn.rtast.libmc:rconlib) # libmc-nbt NBT reader and writer, compat with network NBT # libmc-snbt > Not completed # Open Source Open source under [Apache-2.0](LICENSE)