Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details
🧩 GUIAPI - The Ultimate Component-Based GUI Framework
Are you tired of writing messy, repetitive, and unmaintainable inventory code for your Bukkit/Spigot/Paper plugins?
Say goodbye to manual slot calculations and spaghetti InventoryClickEvent listeners!
GUIAPI is a powerful, modern, and modular UI framework designed specifically for Minecraft developers. Build interactive, dynamic, and responsive inventory GUIs with a clean, declarative approach using reusable components.
✨ Why Choose GUIAPI?
- 🚀 Save Hundreds of Hours: Build complex UIs in minutes instead of days.
- 🧱 Component-Based Architecture: Everything is a component. Build your UI like Lego blocks using buttons, panels, text inputs, and scrollbars.
- 🎨 Nested Coordinate Systems: Group your components into
GuiPanels. Move a whole panel, and all its children move automatically! No more calculating absolute inventory slots. - 🔄 Live Updating: Built-in async updaters let you create live clocks, real-time status indicators, and animated menus that automatically clean up when the player closes the inventory.
🔥 Premium Features
- 📝 Chat Text Input (
GuiTextInput&GuiListTextInput): Prompt players to enter text in chat with built-in validation and custom error messages. - 🎒 Item Chooser (
GuiItemChooser): Let players click any item in their inventory to use as an input for your forms. - 📥 True Editable Slots (
GuiEditableSlot): A slot that acts like a real inventory slot. Supports left-click, right-click, shift-click, stacking, swapping, and splitting. You have full control to accept or reject items! - 📜 Pagination & Scrolling: Instantly handle massive amounts of data with
GuiListPage,GuiScrollPane(vertical), andGuiScrollBar(horizontal) with automatic next/previous buttons. - ⚙️ Configurable Buttons (
GuiConfigurableButton): Buttons that automatically generate a sub-GUI allowing players to edit Key-Value pairs right out of the box! - 🌈 Modern Formatting: Full support for Hex colors (
&#FF0000), Gradients (<gradient:#ff0000>Text<#00ff00>), and Legacy codes. - 💾 NBT Metadata Injection: Effortlessly pass custom data to your items directly from the rendering engine without messing with raw NBT tags.
💻 Code Speaks for Itself
Look how simple it is to create a fully functioning UI:
// 1. Create a GUI
GUI myGui = guiLibs.createGUI("<gradient:#FFD700>Premium Shop<#50C878>", 3);
// 2. Create a Button
GuiButton button = new GuiButton(myGui, "buy-item", 13);
button.setDisplayItem(new ItemStackBuilder(Material.DIAMOND)
.setDisplayName("&bBuy Diamond")
.addLore("&7Price: $100")
.build());
// 3. Add behavior
button.addListener((id, event) -> {
event.getWhoClicked().sendMessage("§aPurchase successful!");
return true; // Auto-cancel the click event!
});
// 4. Register and Open
myGui.addComponent(button);
myGui.open(player);
📦 Installation
Maven
Add the JitPack repository:
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
Add the dependency:
<dependency>
<groupId>com.github.downnfalls</groupId>
<artifactId>GUIAPI</artifactId>
<version>VERSION</version>
<scope>provided</scope>
</dependency>
Gradle (Groovy)
repositories {
mavenCentral()
maven { url 'https://jitpack.io/' }
}
dependencies {
compileOnly 'com.github.downnfalls:GUIAPI:VERSION'
}
Gradle (Kotlin DSL)
repositories {
mavenCentral()
maven("https://jitpack.io/")
}
dependencies {
compileOnly("com.github.downnfalls:GUIAPI:VERSION")
}
plugin.yml
Register GUIAPI as a dependency in your plugin.yml:
depend: [GUIAPI]
Replace
VERSIONwith the latest release tag from JitPack.
📋 Requirements
- Server: Spigot, Paper, or forks (1.20+)
- Java: 17+
- Dependencies: Requires NBT-API 2.15.7+ to be installed on the server.
📖 Examples & More Info
There is no steep learning curve! For full code examples and a detailed guide on how to use every single feature, please check out the README on our GitHub Repository.


