UI UTILS

Overview Of Features

UI-Utils has many features, which will be documented here. When opening an inventory / container with UI-Utils, you will notice some extra features, here is a list of those features with descriptions:

  • Close without packet - Close your GUI without sending a CloseHandledScreenC2SPacket to the server.

  • De-sync - Send a CloseHandledScreenC2SPacket without closing your GUI client-side.

  • Send packets: true / false - When enabled, no GUI related packets will be sent to the server (ClickSlotC2SPacket and ButtonClickC2SPacket.)

  • Delay packets: true / false - When enabled, no GUI related packets will be sent to the server (ClickSlotC2SPacket and ButtonClickC2SPacket) until disabled, then, all delayed packets will be sent in the same tick.

  • Save GUI - Saves your GUI internally and can be re-opened using a key-binding (default key-binding is 'v',) this works well with the "Close without packet" feature.

  • Disconnect and send packets - Sends all queued packets from "Delay packets", then, immediately disconnects from the server.

  • Fabricate packet - Opens a window that allows you to send any GUI packet any amount of times (see 'Fabricate Packet Feature' for more information.)

  • Copy GUI Title JSON - Copies your GUI's title as JSON.

  • Sync Id: ?? - Shows your GUI's sync ID.

  • Revision: ?? - Shows your GUI's revision ID.

The text box below is a chat field for chatting or running commands while in a GUI. Another random feature allows you to wake up out of a bed (client-side) by clicking the "Client wake up" button while in a bed. You can also bypass required resource packs on servers by enabling "Bypass Resource Pack" in the multiplayer screen, if you still get kicked, enable "Force Deny" to block all server resource packs. All of those features can be disabled / enabled by running "^toggleuiutils" in chat.

Fabricate Packet Feature

Using the fabricate packet feature, you can create any GUI packet and send it any amount of times. When clicking "Fabricate packet", you will see a window prompting you for a packet to send ("Click Slot" or "Button Click",) another window should appear with some fields and a "Send" button when clicking "Click Slot" (ClickSlotC2SPacket), which is what will be documented. "Sync Id" and "Revision" should be whatever the "Sync Id" and "Revision" fields in your in-game GUI are. "Slot" should be a numeric ID for what slot you want to interact with (most slot ID(s) can be found on the internet.) The "Button" field is what button is being clicked, 0 is usually left click or represents no button, 1 is usually right click, it can also represent a hotbar slot (0 - 8) to swap to when using "SWAP" in the "Action" field, in that case, 40 represents your offhand. The "Action" field is the type of click slot packet you would like to send, the options are: (PICKUP: click item, PICKUP_ALL: double click item, QUICK_MOVE: shift click item, SWAP: swap item to hotbar, CLONE: middle click item, THROW: drop item, QUICK_CRAFT: used for quick crafting.) Clicking "Send" will send that packet. Clicking on "Button Click" in the packet option window, you can send a ButtonClickC2SPacket, which can click buttons on a GUI, for example, clicking on an enchantment in an enchanting table. "Sync Id" should be the same as the in-game "Sync Id" field in your Minecraft GUI, and "Button Id" should be whatever button you're clicking on (numeric ID starting at zero.) Clicking "Send" will send that packet. You can send any GUI packet any amount of times by altering the "Times to send" field in any packet GUI. The "Delay" checkbox should be checked if you want to queue those packets into the "Delay packets" queue to send later (it will send those packets immediately still if "Delay packets" is off.)

Building And Installation

To get a jar file of UI-Utils, you can either build your own or download a pre-built one from the releases page. To build your own jar file, go to the previous link, then, download a source code archive (ui-utils-x.x.x.tar.gz or ui-utils-x.x.x.zip), extract it, then, if you're on Linux, open a terminal in that directory and run:

sha256sum -b ./gradle/wrapper/gradle-wrapper.jar

You should then visit https://gradle.org/release-checksums/ and make sure the output of the command you just ran is on that page (you can press CTRL+F to search a web page.) Now, to build the jar file, open a terminal in the directory you extracted and run:

chmod +x ./gradlew
./gradlew build

If you're on Windows, use a Windows program to get the SHA256 checksum of the ./gradle/wrapper/gradle-wrapper.jar file, then make sure it is on this list. Now, to build the jar file, open command prompt in the folder you extracted and run:

gradlew build

After that, your jar file should be at ./build/libs/ui-utils-x.x.x.jar which you can then use. Now that you have a jar file (pre-built or self-built,) you can install FabricMC, then move your jar file into your "mods" directory (create it if it doesn't already exist,) then download Fabric API and move that jar file into your "mods" directory as well. Launch Minecraft and UI-Utils should be installed.