Skip to content

Repository files navigation

PacketDump

PacketDump

A small Fabric client mod that logs the packets you pick, while you hold a key.

Available on Modrinth

Downloads Minecraft License

What it does

  • Watches every packet the client sends and receives.
  • Keeps a list of every packet class it has seen.
  • Right shift opens a screen where you search that list and tick the ones you care about.
  • Hold F9 and any ticked packet gets written to the log, with its fields.
  • There is a toggle in the screen to dump continuously instead of holding the key.

Both keys can be rebound in Options, Controls.

Example output

[PacketDump][INBOUND] ClientboundSetHealthPacket
health=20.0
food=20
saturation=5.0

Fields come from reflection, so records and normal classes both work. It walks nested objects up to 4 deep, stops on reference loops, shows the first 25 entries of a collection and cuts strings off at 300 characters.

Supported versions

Minecraft Jar
1.21.8 packetdump-<ver>+1.21.8.jar
1.21.9 packetdump-<ver>+1.21.9.jar
1.21.10 packetdump-<ver>+1.21.10.jar
1.21.11 packetdump-<ver>+1.21.11.jar
26.1, 26.1.1, 26.1.2 packetdump-<ver>+26.1.jar
26.2 packetdump-<ver>+26.2.jar

Needs Fabric Loader and Fabric API. Client side only.

Readable names

Below 26.1 a released mod runs against intermediary names, so a packet shows up as class_2749 instead of ClientboundSetHealthPacket. The build fixes that by joining two public mapping sets on the obfuscated name they share:

  • the intermediary jar, obfuscated to intermediary
  • Mojang's published mappings, Mojang to obfuscated

which gives intermediary to Mojang names. That table is gzipped into the jar and read at startup. 26.1 dropped obfuscation, so those jars skip the table entirely and the names are already right.

Building

Needs JDK 21, plus JDK 25 if you want the 26.x versions. Gradle picks up the rest.

./gradlew buildAll

Jars land in build/libs/<mod version>/, one per Minecraft version.

To build a single version:

./gradlew :1.21.8:build

Versions are handled with Stonecutter, so there is one source tree and the version specific bits sit behind //? comments. To work on a different version, run the Set active project to <version> Gradle task, and run Reset active project before committing.

Everything compiles against Mojang mappings, including below 26.1, so class names are the same on every version and only the real API changes need a comment.

Layout

src/main/java/com/packetdump/
  PacketDump.java          entry point, keybinds, dump trigger
  PacketDumpScreen.java    the picker screen
  PacketRegistry.java      what has been seen, what is ticked
  ReflectionDumper.java    turns a packet into text
  MappingRegistry.java     intermediary to readable names, below 26.1
  PacketDirection.java
  mixin/ConnectionMixin.java   the send and receive hooks

License

Copyright (C) 2026 Shvap

Licensed under the GNU Lesser General Public License, version 3 or later. See LICENSE, and LICENSE.GPL which it refers to.

The name table bundled in builds below 26.1 is built from Mojang's published Minecraft mappings and FabricMC's intermediary mappings, and is not covered by that grant. See NOTICE.

About

Fabric client mod that logs the packets you pick, while you hold a key

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages