Debugger's Delight

Client Utility

Created2 years ago
Updated5 months ago

Follow Save
Host your Minecraft server on BisectHosting - get 25% off your first month with code MODRINTH.
Filter loader...
Filter versions...
Filter channels...

Straight-forward port to 1.20.3/1.20.4.

  • Fix UTF-8 encoding (Kas-tle, #35)
  • Remove translations from file dialogs (mfw tinyfiledialogs)
  • NBT locking is now disabled by default
  • NBT tags can now be copied in the NBT inspector (#37)
  • Added support for dumping server queries (Benonardo, #38)
  • Some minor remapping issues should be fixed

Mostly a port to 1.20.2. Big thank you to Kas-tle for helping with porting!
As the 1.20.2 networking changes hit gadget pretty hard, this version has been initially released as beta.
Expect bugs!

  • Tab now works in the NBT inspector
  • Added loud chat logging
    Run /gadget chat-log enable logger-name to forward all messages from that logger to the in-game chat!
  • Basic item NBT locking support
    Item stack NBT will be locked while running methods that shouldn't mutate it
    Changing item stack NBT while locked will cause a crash
  • (Block)entity client data can now always be viewed on the client, even if the server doesn't have gadget installed
  • Searching in the field inspector screen should work again
  • Compatibility with Krypton should hopefully be fixed
  • Dumped packets now show the time at which they were sent relative to the start of the dump
  • Packets can now be visually collapsed in the dump screen
  • Stacks with non-null empty NBT now have a special tooltip
  • Add tag button no longer appears in NBT inspector when client doesn't have enough permissions
  • Ported to 1.20.1.
  • Added support for flushing dump file on JVM exit and after packet write (#21)
  • Dump reader now fails soft on IOException
  • Field data inspection system has been completely rewritten

    The base abstract class that holds a field data tree is FieldDataHolder, which is generic over the node type. If you don't need custom functionality in nodes (for example, in packet dumping), you can use DefaultFieldDataHolder. The source of field info is now represented by a FieldDataSource, which is async and meant to be easy to implement. gadget provides the LocalFieldDataSource for local Java objects and RemoteFieldDataSource is used internally for field data screen.

    The network format has also been changed to also support sending errors back to the client.

  • Packet dumping has been completely rewritten

    Packet parsing is now done based on a system of UnwrappedPackets, which have methods for gathering search text and writing to owo-ui/plain text.
    Some helper interfaces (FieldsUnwrappedPacket for field dumped objects and LinesUnwrappedPacket) are provided to help with implementing custom packets.

    DumpedPacket can have arbitrary context data (which is now used for search and rendered component data), and all events now take an ErrorSink parameter, which accepts non-fatal errors.
    Most dumping code is now in io.wispforest.gadget.dump.{read|write}, and most client-side packet renderers are now common code
    PacketDumpReader and PacketDumpWriter have been added as nice objects for reading and writing packet dumps

  • Field dumps and packet dumps can now be exported to a user-readable format
    Packet and field dumps can be exported to plain text, and field dumps can also be exported to JSON
    An example of a plain text packet dump is
    Additionally, the new packet dump and field data holder interfaces support writing these dumps

  • Added bytes field object
    Used to represent byte arrays and byte buffers. Displayed as a hexdump instead of a list of byte values.

  • Complex field objects now track recursion

  • SynchronizeRecipesS2CPacket is now represented as a gadget fake packet that doesn't break whenever a recipe is missing

  • Dump stats screen improvements:
    A progress toast is now used to track loading progress.
    Additionally, a back button added to sidebar.

  • Added experimental owo-ui error check option
    Right now, this just replaces Component#remove with a more fault-tolerant version

  • Quiltflower code now uses new HTTP client to get versions
    Should be much faster than old implementation

Hotfix narrator mixins after Mojang hotpatched TTS

Hotfix narrator mixins after Mojang replaced the TTS library

Updated to 1.19.4.
Also includes a small rewrite of packet dumping that makes bundle packets work and write errors not crash the game.

  • Fix crashes on servers without gadget no this wasn't intended
  • Fix some issues with Polymer
  • Fix scrolling in the server list screen

Updated to 1.19.3

  • Added the Class Inspector!
    This allows you to look at and save mixin'd classes at runtime, with everything remapped to your mappings of choice.
  • Fixed Mojang Mappings exploding immediately
  • Fixed Item Inspector being triggerable on air and creative menu items (#14)
  • Search fields in field inspection screens don't crash after empty search results
  • The gadget button is now properly positioned in multiplayer
  • You can now use Ctrl+F to focus the search field
  • Long oωo-ui updates now log total mutations and component inflations
  • The Entity Inspector screen now has a search field for fast field finding
  • The Item NBT Inspector now inits the stack's NBT if it didn't have any
  • Updating NBT compound tags in a Field Inspector doesn't reload the entire tag anymore
  • Custom hidden fields are now supported
    The fields that were hidden by default before are now specified in the config.
    Right-click on a field and press Hide field to hide it.
  • Java standard library fields are now inspectable
    Some unneeded fields might now be shown, but you can always hide them.
  • Packets with invalid data don't crash the dump reader anymore, and now visually display their errors
  • Maps of any key type are now supported
  • Some unneeded plus buttons in NBT inspectors are now hidden
  • gadget now uses a custom raycast method that allows inspecting all entities, including items
  • oωo text fields not working in production is now mitigated
  • Some pointless dev env startup errors are now silenced
  • Added the Resource Inspector
    You can now view resources and server data in game, allowing you to easily view all mod data and virtual resource packs.
  • Packet dumps are now saved in the .gdump format
    Packet timestamps are now saved, and dumps are now gzip compressed
  • The Dump Viewer has been reworked
    Dumps are navigable by time, with the time slider choosing which time to show
  • The "Don't Show Frequent Packets" option has been replaced by "Drop Chunk Data"
  • Debug Keys in Screens are now processed after the screen (#7)
  • Added the MatrixStack debugger
    This logs MatrixStack pushes/pops after an error, allowing easier debugging of MatrixStack errors
  • Added the UI Inspector!
    Press Ctrl+Shift and mouse over a UI component to show its class, position and size This works with Vanilla and REI GUIs.
  • The Gadget screen now shows the sizes of dump files
  • The View Dump screen is now initted on a separate thread, which should make it easier to see progress
  • Progress toasts can now show file loading progress
  • The View Dump screen has been optimized a bit, with more coming soon™
  • The Field Inspector now supports maps with enum keys
  • All Inspectors: field and class names are now remapped at runtime to the mappings of your choice (Mojmap, Yarn or QM)
  • Packet Dumper: unsupported packets are now shown as a hex dump
  • Added NBT Inspector: view and edit item stacks' NBT data

Project members





Technical information

Client side
Server side
Project ID