I made a free, open-source alternative to paid vanilla-client GUI plugins

U

/u/Key_Ad9862

Guest
Custom menus on a vanilla client have mostly been the territory of paid plugins. They're good, but they cost money, and most of them bake pages into a resource pack in a visual editor, so a page can't show data that didn't exist when the pack was built. I wanted something any server could use for free and that developers could build on, so I made VoidRP UI and released it under MIT.

What it does​


It draws real interfaces on a completely unmodded Java client: panels with rounded corners and transparency, the Inter font, item icons, scrolling lists, tooltips, text input, and a cursor the player moves by looking around. Players install nothing. They accept the server's resource pack, and that's it.

How it works​


The whole page is one line of text inside an invisible boss bar. The plugin builds a resource pack with a patched text shader: each glyph's colour carries its position and fill colour, and the shader puts it in place. Hovering and clicks are resolved on the server against the layout it just produced, so the client is never trusted with anything.

For admins​

  • Drop in and restart. The plugin builds the resource pack and serves it itself from a small built-in web server (port 8123). If you can't open a port, host the pack anywhere and set pack.url.
  • Clients from 1.21.6 up. It builds two packs and hands each player the one their client can read. Tested on a real 1.21.6 client through ViaVersion.
  • Plays nicely with your pack. It's sent as its own pack, so it stacks with your existing resource pack instead of replacing it.
  • PacketEvents is optional. With it, the cursor reacts up to 50 ms sooner and other plugins' boss bars are hidden while a page is open.
  • Try it in 30 seconds: /vui demo shows every component at once.

For developers​


A page is a Kotlin class that returns what it looks like right now. Change a field, call refresh(), and it's redrawn. Because pages are code, they show live data. There's a JitPack dependency and a complete example plugin in the repo.

Honest limits​

  • The client only reports where it's looking 20 times a second, so the cursor is smoothed between readings.
  • While a page is open, the player's head really does turn. Modal pages use an opaque background, so it isn't visible.
  • A server can't know the shape of a player's screen, so each player picks it once (about five seconds).
  • It needs Paper (tested on 26.2), not Spigot. Not tested on Folia. Bedrock/Geyser players won't see pages.

LLM disclosure​


This project was built with heavy use of Claude (Anthropic) through Claude Code, mostly Claude Opus models. Claude wrote the large majority of the code, tests and documentation from my direction. I set the goals and design, reviewed the changes, and tested every release on live vanilla clients (26.2, and 1.21.6 through ViaVersion). The tests build the real resource pack and measure its glyphs to check the layout to the pixel. The full commit history is public.

Links​


Completely free, no paid tier, MIT licensed.

submitted by /u/Key_Ad9862
[link] [comments]

Continue reading...
 
Back