Skip to content
This repository has been archived by the owner on Jun 15, 2023. It is now read-only.

aridevelopment-de/fabric-packet-logger

Repository files navigation

⚠️ Project no longer maintained (and what happens with the frontend)

Since I don't have the time to work on the frontend and the backend, I will discontinue this PacketLogger project. But don't worry, the frontend won't be for nothing.
Developing on both sides takes up a lot of time, especially if you want to implement cool new features on the frontend while the backend contains bugs that must be fixed as to aid users. It's been tough doing that at the same time and I do not wan't to do that anymore. I am mainly a web-developer and I want to continue this passion.
That's why I will stop developing the mod.
But: The frontend will be moved to wisp-forest/gadget. At least that is the current idea. It might take up some weeks before everything is set in place, so I highly encourage you to switch over to gadget if you need an alternative atm.

It has been a pleasent journey working on packetlogger. I learned much about minecraft modding in itself, minecraft packet structure and met wonderful people on the way. If you have some questions, hmu on Twitter or Discord

Fabric Packet Logger

I use this for development at thejocraft.net. Yes, the code may not be the best. If you want to improve it, do it and open a pull request.

Features

  • Web-UI (Default Port 8080)
  • Websocket Connection (Default Port 1337)
  • InGame config

Supported Minecraft Versions

Minecraft Version Status Notes
1.19.3 ⚠️ A rather scuffed version, since 1.19.4 support existed before 1.19.3, so 1.19.3 was created out of 1.19.4
1.19.4 ✔️

⚠️ = Packets implemented but not validated
✔️ = Supported

Linked repositories

Commands

  • /packetlogger is the base command for all subcommands. You should be able to auto-complete them
  • /packetlogger logging on/off - Toggles the logging state
  • /packetlogger open - Opens the web-ui in your browser
  • /packetlogger export - Exports the current stored data in a json format

Supported packets

Clientbound
100%
100%
100%

Serverbound
100%
100%
100%
100%

As developing serializers for each packet takes a lot of time, not every packet is supported. I will add more packets over time. If you want to help out, feel free to open a pull request.

Why do you not use Reflection to convert the packet data?

There are some reasons why I didn't use Reflection. Here are the main reasons:

  • Reflection is slow
    • I like live-streaming data instead of analyzing dumps
  • My approach with reflection was horrible (see reflection-rewrite/dev branch)
  • I may be able to do a lot more with custom serializers
  • And I have my own juicy mappings

If you still prefer a reflection-based approach, check out wisp-forest/gadget

Websocket

By default, the web-ui connects to the websocket and receives the packet information via json data. You can also connect to this websocket as well and receive the same data as the web-ui. I'd recommend using insomnia or weasel on firefox.
A protocol has been defined for the websocket. It uses data chunking and lazy loading of packet information to reduce traffic. See protocol.md for more information.

Previews

Video:

MapUpdateAdapter: https://cdn.discordapp.com/attachments/598256161212596235/1093635306244280431/image.png https://cdn.discordapp.com/attachments/598256161212596235/1093668040752762920/image.png