While browsing the SpigotMC forums, I found a forum post in which the author used a combination of the input packet and custom Minecraft map rendering to create a nice looking GUI.
To use these GUIs, you hold the map in your main hand. It mounts you onto a fake entity, so the client will send movement input packets. To navigate the UI, you use the WASD keys, as well as space/shift.
He also uses it to connect placed maps in the world together to seamlessly create displays, even interactable displays.
All of the tools for this are available in his commons library, which I plan to use myself at some point for personal projects.