★ Starshadow Lib
The foundation for Starshadow mods.
Starshadow Lib is a shared widget toolkit and utility library for Minecraft Fabric mods. It provides the building blocks that power Starshadow's config screens, mod list, and splash screen — and you can use them in your own mods too.
"Widgets, layout, and rendering — the boring parts, done right."
✨ Features
🎛️ Widget Toolkit
Ready-to-use Minecraft GUI widgets built on vanilla screen components:
| Widget | Description |
|---|---|
| ToggleWidget | On/off toggle switch with animation |
| SliderWidget | Numeric slider with configurable range |
| IntStepperWidget | Integer value with +/- buttons |
| EnumCycleWidget | Cycle through enum values with click |
| StarWidget | Base widget class for building custom widgets |
📐 Layout System
Utilities for consistent, responsive GUI layouts:
| Component | Description |
|---|---|
| EntryRow | Label + widget row with consistent alignment |
| Spacing | Standardized spacing constants for UI consistency |
📦 Container Widgets
Higher-level containers for organizing content:
| Container | Description |
|---|---|
| ScrollablePanel | Scrollable content area with smooth scrolling |
| SectionCard | Card-style container with header and collapsible content |
| VerticalTabBar | Tab strip for multi-section screens |
🎨 Rendering Utilities
| Utility | Description |
|---|---|
| RenderBridge | Cross-version rendering abstraction layer |
| Colors | Standardized color palette constants |
🔧 Logging Helpers
| Utility | Description |
|---|---|
| LogLevelHelper | Dynamic Log4j2 level control for debug logging toggles |
📦 Installation
For Mod Developers
Add to your build.gradle.kts:
dependencies {
modstitchModImplementation("com.starshadow:starshadow-lib:${property("starshadow_version")}")
include("com.starshadow:starshadow-lib:${property("starshadow_version")}")
}
For Players
Starshadow Lib is bundled inside mods that use it — you typically don't need to install it separately. If a mod requires it as an external dependency:
- Install Fabric Loader for your Minecraft version
- Install Fabric API
- Drop the Starshadow Lib
.jarinto yourmods/folder - Launch Minecraft
Supported: Minecraft 1.20.1 · 1.20.4 · 1.21.1 — Fabric only
🔨 Usage Examples
Toggle Widget
ToggleWidget toggle = new ToggleWidget(x, y, width, height,
Text.literal("Enable Feature"),
() -> config.isEnabled(),
value -> config.setEnabled(value));
Slider Widget
SliderWidget slider = new SliderWidget(x, y, width, height,
Text.literal("Volume"),
0, 100, config.getVolume(),
value -> config.setVolume(value));
Scrollable Panel
ScrollablePanel panel = new ScrollablePanel(x, y, width, height);
panel.addChild(new EntryRow(label, widget));
panel.addChild(new EntryRow(label2, widget2));
🧩 Compatibility
| Mod | Compatibility |
|---|---|
| Fabric API | ✅ Required |
| Starshadow Config | ✅ Uses Lib for config screen widgets |
| Starshadow Menu | ✅ Uses Lib for mod list UI |
| Starshadow Splash | ✅ Uses Lib indirectly via Config |
📋 Requirements
| Dependency | Required? |
|---|---|
| Fabric Loader | ✅ Yes |
| Fabric API | ✅ Yes |
Starshadow Lib has no dependencies beyond Fabric itself — it's the foundation layer.
🌟 Build Better UIs
Stop reinventing widgets for every mod. Starshadow Lib provides a consistent, tested set of UI components so you can focus on what makes your mod unique.
Made with ❤️ by Ghent Starshadow Licensed under MPL-2.0 — free to use, share, and modify.
