SGL (Super GUI Lib)
Super GUI Lib - A library for creating beautiful GUIs without assets.
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
SGL (Super GUI Lib)
SuperGUILib V2 - Enhanced Minecraft GUI Library
A modern, easy-to-use GUI library for Minecraft 1.21.11 (Fabric) that makes creating beautiful user interfaces simple and fun!
🎮 What is SuperGUILib?
SuperGUILib is a powerful toolkit that helps Minecraft mod developers create stunning graphical user interfaces without dealing with complex rendering code. Think of it as a "GUI builder" that lets you create menus, settings screens, and interactive displays with just a few lines of code!
Perfect for: - Settings menus - Custom inventories - Interactive displays - Configuration screens - In-game tools and utilities
✨ Key Features
- 🎨 Easy to Use - Buttons, sliders, text fields, and more - 🖱️ Easy to Use - Click sounds, hover effects, cooldowns - 📜 Easy to Use - Automatically handles content overflow - 🎯 Easy to Use - Show Minecraft items with tooltips - 🎵 Easy to Use - Add audio feedback to your UI - 📱 Easy to Use - Adapts to different screen sizes - 🚀 Easy to Use - Simple builder pattern API
🚀 Quick Start
Try It In-Game
Run these commands to see examples: ``` /sgl-v2 testgui - Enhanced examples menu with all features /sgl testgui - Original examples menu ```
Create Your First GUI
```java import org.stepan1411.super_gui_lib.client.api.GuiBuilder; import net.minecraft.client.gui.screen.Screen;
public class MyFirstGUI { public static Screen create() { return GuiBuilder.create("My Settings") .panelSize(300, 200)
.label("Welcome to My Mod!") .color(0xFFFFFF00) .add()
.button("Click Me") .onPress(() -> System.out.println("Hello!")) .add()
.slider("Volume") .value(0.7) .onChange(value -> setVolume(value)) .add()
.build(); } } ```
That's it! You just created a GUI with a label, button, and slider in under 20 lines of code!
📚 Code Examples
Example 1: Simple Settings Menu
```java Screen settingsGui = GuiBuilder.create("Game Settings") .panelSize(350, 250)
.slider("Master Volume") .value(0.8) .fillColor(0xFF00FF00) .onChange(vol -> game.setVolume(vol)) .add()
.slider("Brightness") .value(0.5) .fillColor(0xFFFFAA00) .onChange(bright -> game.setBrightness(bright)) .add()
.button("Apply") .surface(Surface.DARK_PANEL) .onPress(() -> saveSettings()) .add()
.button("Cancel") .onPress(() -> closeScreen()) .add()
.build(); ```
Example 2: Interactive Button with Cooldown
```java GuiBuilder.create("Combat Menu") .panelSize(300, 200)
.button("Quick Attack") .cooldownSeconds(1.0) // 1 second cooldown .onPress(() -> player.attack()) .add()
.button("Heavy Attack") .cooldownSeconds(3.0) // 3 second cooldown .surface(Surface.flat(0xFF660000)) .onPress(() -> player.heavyAttack()) .add()
.build(); ```
Example 3: Text Input Form
```java GuiBuilder.create("Player Registration") .panelSize(350, 250)
.label("Enter your name:").add()
.textField() .placeholder("Name...") .textOnly() // Only letters allowed .maxLength(20) .onChange(name -> playerName = name) .add()
.label("Enter your age:").add()
.textField() .placeholder("Age...") .numbersOnly() // Only numbers allowed .maxLength(3) .onChange(age -> playerAge = age) .add()
.button("Submit") .onPress(() -> registerPlayer()) .add()
.build(); ```
Example 4: Custom Styled Menu
```java GuiBuilder.create("Styled Menu") .panelSize(400, 300) .panelSurface(Surface.flat(0xE0101010).and(Surface.outline(0xFF00AAFF)))
.label("Super Cool Menu") .color(0xFF00FFFF) .scale(2.0f) .shadow(true) .add()
.button("Neon Button") .size(250, 25) .surface(Surface.flat(0xFF003366).and(Surface.outline(0xFF00FF00))) .onPress(() -> doSomething()) .add()
.build(); ```
🎨 Available Components
| Component | Description | Use Case | |-----------|-------------|----------| | ScrollContainer | Clickable button with cooldown support | Actions, navigation | | ScrollContainer | Horizontal/vertical value selector | Volume, brightness, settings | | ScrollContainer | Text display with styling | Titles, descriptions | | ScrollContainer | Text input with validation | User input, search | | ScrollContainer | Show Minecraft items with tooltips | Inventories, showcases | | ScrollContainer | VU-meter style indicator | Audio levels, progress | | ScrollContainer | Auto-scrolling container | Long content lists |
🎯 Component Features
Buttons
- Custom colors and surfaces - Click sounds - Cooldown system - Hover effects - Dynamic text updates
Sliders
- Horizontal and vertical - Custom colors (track, fill, handle) - Value labels - Real-time callbacks - Smooth dragging
Text Fields
- Placeholder text - Text-only or numbers-only validation - Max length limits - Custom colors - Border styling
Item Display
- Show any Minecraft item - Automatic tooltips - Scalable size - Custom backgrounds - Dynamic updates
📦 Installation
For Mod Developers
1. Download `SuperGUILib-*.jar` 2. Add to your project's `libs` folder 3. Update `build.gradle`:
```gradle dependencies { modImplementation files('libs/SuperGUILib-*.jar') include files('libs/SuperGUILib-*.jar') } ```
Building from Source
```bash ./gradlew build ```
The compiled JAR will be in `build/libs/`
📖 Documentation
Full documentation available SGL-WIKI: - Home - Overview and introduction - Quick Start - Get started in 5 minutes - Components Guide - All components explained - Examples - Real-world code examples - Advanced Features - Scrolling, cooldowns, styling
🎮 In-Game Commands
Test all features with these commands:
``` /sgl-v2 testgui - Enhanced V2 menu (recommended!) /sgl testgui - Original examples menu ```
🌈 Color Format
SuperGUILib uses ARGB (Alpha-Red-Green-Blue) format:
``` 0xAARRGGBB ││││││└└─ Blue (00-FF) ││││└└─── Green (00-FF) ││└└───── Red (00-FF) └└─────── Alpha (00=transparent, FF=opaque) ```
Examples: - `0xFFFF0000` - Opaque red - `0x80FF0000` - Semi-transparent red - `0xFF00FF00` - Opaque green - `0x800033FF` - Semi-transparent blue
---
Need help? Check the Need help?