Описание
# Fabric Package Logger
A deep packet logging mod for Minecraft Fabric that captures all network traffic (S2C and C2S) with full NBT/Component data.
## Use Cases
- **Mod Development**: Debug network communication between client and server
- **Container Inspection**: View exact contents of inventories with full NBT/Component data and copying them
- **Reverse Engineering**: Analyze server-side mechanics and packet structures
- **Anti-Cheat Analysis**: Understand what data the server sends and receives
- **Learning**: Understand how Minecraft's network protocol works
## Usage
### Keybind
Press **F6** to open the config screen.
### Packet Selection
Use the dual-list selector to choose which packets to log:
- **S2C (Server → Client)**: Incoming packets like inventory updates, entity spawns, etc.
- **C2S (Client → Server)**: Outgoing packets like clicks, movements, etc.
### Log Modes
- **Chat**: Display packets in the game chat (truncated for readability)
- **File**: Save packets to log files with full data
### Log Files
Logs are saved to:
```
MINECRAFT_FOLDER/packet-logger/packets_2026-01-04_15-30-45_servername.log
```
A new log file is created when:
- Joining a world/server
- Re-enabling logging after it was disabled
### Example Output
```
[12:34:56.789] [S2C] InventoryS2CPacket {syncId:2,revision:1,id:"minecraft:generic_9x3",components:{"minecraft:container":[{item:{id:"minecraft:diamond_sword",count:1,components:{"minecraft:enchantments":{levels:{"minecraft:sharpness":5}}}},slot:0}]}}
```

## Available Packets
All packets are loaded dynamically from the game's `PacketType` registries and are selectable in the config screen's dual-list selector. Both S2C (Server → Client) and C2S (Client → Server) packets are covered across all protocol phases.
See for an example listing of all packets for Minecraft 1.21.4.
Click to expand (573 packets)
### **S2C (Server → Client)**
**Common**
- `CommonPingS2CPacket`
- `CookieRequestS2CPacket`
- `CustomPayloadS2CPacket`
- `CustomReportDetailsS2CPacket`
- `DisconnectS2CPacket`
- `KeepAliveS2CPacket`
- `ResourcePackRemoveS2CPacket`
- `ResourcePackSendS2CPacket`
- `ServerLinksS2CPacket`
- `ServerTransferS2CPacket`
- `StoreCookieS2CPacket`
- `SynchronizeTagsS2CPacket`
**Config**
- `DynamicRegistriesS2CPacket`
- `FeaturesS2CPacket`
- `ReadyS2CPacket`
- `ResetChatS2CPacket`
- `SelectKnownPacksS2CPacket`
**Custom**
- `DebugBeeCustomPayload`
- `Bee`
- `DebugBrainCustomPayload`
- `Brain`
- `DebugBreezeCustomPayload`
- `BreezeInfo`
- `DebugGameEventCustomPayload`
- `DebugGameEventListenersCustomPayload`
- `DebugGameTestAddMarkerCustomPayload`
- `DebugGameTestClearCustomPayload`
- `DebugGoalSelectorCustomPayload`
- `Goal`
- `DebugHiveCustomPayload`
- `HiveInfo`
- `DebugNeighborsUpdateCustomPayload`
- `DebugPathCustomPayload`
- `DebugPoiAddedCustomPayload`
- `DebugPoiRemovedCustomPayload`
- `DebugPoiTicketCountCustomPayload`
- `DebugRaidsCustomPayload`
- `DebugRedstoneUpdateOrderCustomPayload`
- `Wire`
- `DebugStructuresCustomPayload`
- `Piece`
- `DebugVillageSectionsCustomPayload`
- `DebugWorldgenAttemptCustomPayload`
**Login**
- `LoginCompressionS2CPacket`
- `LoginDisconnectS2CPacket`
- `LoginHelloS2CPacket`
- `LoginQueryRequestS2CPacket`
- `LoginQueryRequestPayload`
- `LoginSuccessS2CPacket`
- `UnknownLoginQueryRequestPayload`
**Play**
- `AdvancementUpdateS2CPacket`
- `BlockBreakingProgressS2CPacket`
- `BlockEntityUpdateS2CPacket`
- `BlockEventS2CPacket`
- `BlockUpdateS2CPacket`
- `BossBarS2CPacket`
- `Action`
- `AddAction`
- `Consumer`
- `Type`
- `UpdateNameAction`
- `UpdateProgressAction`
- `UpdatePropertiesAction`
- `UpdateStyleAction`
- `BundleDelimiterS2CPacket`
- `BundleS2CPacket`
- `ChatMessageS2CPacket`
- `ChatSuggestionsS2CPacket`
- `Action`
- `ChunkBiomeDataS2CPacket`
- `Serialized`
- `ChunkDataS2CPacket`
- `BlockEntityData`
- `BlockEntityVisitor`
- `ChunkDeltaUpdateS2CPacket`
- `ChunkLoadDistanceS2CPacket`
- `ChunkRenderDistanceCenterS2CPacket`
- `ChunkSentS2CPacket`
- `ClearTitleS2CPacket`
- `CloseScreenS2CPacket`
- `CommandSuggestionsS2CPacket`
- `Suggestion`
- `CommandTreeS2CPacket`
- `ArgumentNode`
- `CommandNodeData`
- `CommandTree`
- `LiteralNode`
- `SuggestableNode`
- `CommonPlayerSpawnInfo`
- `CooldownUpdateS2CPacket`
- `CraftFailedResponseS2CPacket`
- `DamageTiltS2CPacket`
- `DeathMessageS2CPacket`
- `DebugSampleS2CPacket`
- `DifficultyS2CPacket`
- `EndCombatS2CPacket`
- `EnterCombatS2CPacket`
- `EnterReconfigurationS2CPacket`
- `EntitiesDestroyS2CPacket`
- `EntityAnimationS2CPacket`
- `EntityAttachS2CPacket`
- `EntityAttributesS2CPacket`
- `Entry`
- `EntityDamageS2CPacket`
- `EntityEquipmentUpdateS2CPacket`
- `EntityPassengersSetS2CPacket`
- `EntityPositionS2CPacket`
- `EntityPositionSyncS2CPacket`
- `EntityS2CPacket`
- `MoveRelative`
- `Rotate`
- `RotateAndMoveRelative`
- `EntitySetHeadYawS2CPacket`
- `EntitySpawnS2CPacket`
- `EntityStatusEffectS2CPacket`
- `EntityStatusS2CPacket`
- `EntityTrackerUpdateS2CPacket`
- `EntityVelocityUpdateS2CPacket`
- `ExperienceBarUpdateS2CPacket`
- `ExperienceOrbSpawnS2CPacket`
- `ExplosionS2CPacket`
- `GameJoinS2CPacket`
- `GameMessageS2CPacket`
- `GameStateChangeS2CPacket`
- `Reason`
- `HealthUpdateS2CPacket`
- `InventoryS2CPacket`
- `ItemPickupAnimationS2CPacket`
- `LightUpdateS2CPacket`
- `LookAtS2CPacket`
- `MapUpdateS2CPacket`
- `MoveMinecartAlongTrackS2CPacket`
- `NbtQueryResponseS2CPacket`
- `OpenHorseScreenS2CPacket`
- `OpenScreenS2CPacket`
- `OpenWrittenBookS2CPacket`
- `OverlayMessageS2CPacket`
- `ParticleS2CPacket`
- `PlayerAbilitiesS2CPacket`
- `PlayerActionResponseS2CPacket`
- `PlayerListHeaderS2CPacket`
- `PlayerListS2CPacket`
- `Action`
- `Entry`
- `Serialized`
- `PlayerPositionLookS2CPacket`
- `PlayerRemoveS2CPacket`
- `PlayerRespawnS2CPacket`
- `PlayerRotationS2CPacket`
- `PlayerSpawnPositionS2CPacket`
- `PlaySoundFromEntityS2CPacket`
- `PlaySoundS2CPacket`
- `ProfilelessChatMessageS2CPacket`
- `ProjectilePowerS2CPacket`
- `RecipeBookAddS2CPacket`
- `Entry`
- `RecipeBookRemoveS2CPacket`
- `RecipeBookSettingsS2CPacket`
- `RemoveEntityStatusEffectS2CPacket`
- `RemoveMessageS2CPacket`
- `ScoreboardDisplayS2CPacket`
- `ScoreboardObjectiveUpdateS2CPacket`
- `ScoreboardScoreResetS2CPacket`
- `ScoreboardScoreUpdateS2CPacket`
- `ScreenHandlerPropertyUpdateS2CPacket`
- `ScreenHandlerSlotUpdateS2CPacket`
- `SelectAdvancementTabS2CPacket`
- `ServerMetadataS2CPacket`
- `SetCameraEntityS2CPacket`
- `SetCursorItemS2CPacket`
- `SetPlayerInventoryS2CPacket`
- `SetTradeOffersS2CPacket`
- `SignEditorOpenS2CPacket`
- `SimulationDistanceS2CPacket`
- `StartChunkSendS2CPacket`
- `StatisticsS2CPacket`
- `StopSoundS2CPacket`
- `SubtitleS2CPacket`
- `SynchronizeRecipesS2CPacket`
- `TeamS2CPacket`
- `Operation`
- `SerializableTeam`
- `TickStepS2CPacket`
- `TitleFadeS2CPacket`
- `TitleS2CPacket`
- `UnloadChunkS2CPacket`
- `UpdateSelectedSlotS2CPacket`
- `UpdateTickRateS2CPacket`
- `VehicleMoveS2CPacket`
- `WorldBorderCenterChangedS2CPacket`
- `WorldBorderInitializeS2CPacket`
- `WorldBorderInterpolateSizeS2CPacket`
- `WorldBorderSizeChangedS2CPacket`
- `WorldBorderWarningBlocksChangedS2CPacket`
- `WorldBorderWarningTimeChangedS2CPacket`
- `WorldEventS2CPacket`
- `WorldTimeUpdateS2CPacket`
**Query**
- `PingResultS2CPacket`
- `QueryResponseS2CPacket`
### **C2S (Client → Server)**
**Common**
- `ClientOptionsC2SPacket`
- `CommonPongC2SPacket`
- `CookieResponseC2SPacket`
- `CustomPayloadC2SPacket`
- `KeepAliveC2SPacket`
- `ResourcePackStatusC2SPacket`
- `Status`
- `SyncedClientOptions`
**Config**
- `ReadyC2SPacket`
- `SelectKnownPacksC2SPacket`
**Handshake**
- `HandshakeC2SPacket`
- `ConnectionIntent`
**Login**
- `EnterConfigurationC2SPacket`
- `LoginHelloC2SPacket`
- `LoginKeyC2SPacket`
- `LoginQueryResponseC2SPacket`
- `LoginQueryResponsePayload`
- `UnknownLoginQueryResponsePayload`
**Play**
- `AcknowledgeChunksC2SPacket`
- `AcknowledgeReconfigurationC2SPacket`
- `AdvancementTabC2SPacket`
- `Action`
- `BoatPaddleStateC2SPacket`
- `BookUpdateC2SPacket`
- `BundleItemSelectedC2SPacket`
- `ButtonClickC2SPacket`
- `ChatCommandSignedC2SPacket`
- `ChatMessageC2SPacket`
- `ClickSlotC2SPacket`
- `ClientCommandC2SPacket`
- `Mode`
- `ClientStatusC2SPacket`
- `Mode`
- `ClientTickEndC2SPacket`
- `CloseHandledScreenC2SPacket`
- `CommandExecutionC2SPacket`
- `CraftRequestC2SPacket`
- `CreativeInventoryActionC2SPacket`
- `DebugSampleSubscriptionC2SPacket`
- `HandSwingC2SPacket`
- `JigsawGeneratingC2SPacket`
- `MessageAcknowledgmentC2SPacket`
- `PickItemFromBlockC2SPacket`
- `PickItemFromEntityC2SPacket`
- `PlayerActionC2SPacket`
- `Action`
- `PlayerInputC2SPacket`
- `PlayerInteractBlockC2SPacket`
- `PlayerInteractEntityC2SPacket`
- `Handler`
- `InteractAtHandler`
- `InteractHandler`
- `InteractType`
- `InteractTypeHandler`
- `PlayerInteractItemC2SPacket`
- `PlayerLoadedC2SPacket`
- `PlayerMoveC2SPacket`
- `Full`
- `LookAndOnGround`
- `OnGroundOnly`
- `PositionAndOnGround`
- `PlayerSessionC2SPacket`
- `QueryBlockNbtC2SPacket`
- `QueryEntityNbtC2SPacket`
- `RecipeBookDataC2SPacket`
- `RecipeCategoryOptionsC2SPacket`
- `RenameItemC2SPacket`
- `RequestCommandCompletionsC2SPacket`
- `SelectMerchantTradeC2SPacket`
- `SlotChangedStateC2SPacket`
- `SpectatorTeleportC2SPacket`
- `TeleportConfirmC2SPacket`
- `UpdateBeaconC2SPacket`
- `UpdateCommandBlockC2SPacket`
- `UpdateCommandBlockMinecartC2SPacket`
- `UpdateDifficultyC2SPacket`
- `UpdateDifficultyLockC2SPacket`
- `UpdateJigsawC2SPacket`
- `UpdatePlayerAbilitiesC2SPacket`
- `UpdateSelectedSlotC2SPacket`
- `UpdateSignC2SPacket`
- `UpdateStructureBlockC2SPacket`
- `VehicleMoveC2SPacket`
**Query**
- `QueryPingC2SPacket`
- `QueryRequestC2SPacket`
## License
This project is licensed under the [GNU General Public License v3.0]([LICENSE](https://github.com/HelixCraft/Fabric-Packet-Logger/blob/stonecutter/LICENSE)).
## Credits
- Fabric API Team
- Minecraft Modding Community