- 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
-
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 useDefaultFieldDataHolder
. The source of field info is now represented by aFieldDataSource
, which is async and meant to be easy to implement. gadget provides theLocalFieldDataSource
for local Java objects andRemoteFieldDataSource
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
UnwrappedPacket
s, which have methods for gathering search text and writing to owo-ui/plain text.
Some helper interfaces (FieldsUnwrappedPacket
for field dumped objects andLinesUnwrappedPacket
) 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 anErrorSink
parameter, which accepts non-fatal errors.
Most dumping code is now inio.wispforest.gadget.dump.{read|write}
, and most client-side packet renderers are now common code
PacketDumpReader
andPacketDumpWriter
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 https://gist.github.com/BasiqueEvangelist/b516f7acf6e6c826ac252301e57a3750
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 replacesComponent#remove
with a more fault-tolerant version -
Quiltflower code now uses new HTTP client to get versions
Should be much faster than old implementation
- 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 pressHide 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
- 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