JelloUI public API documentation for Minecraft Fabric addon developers.
JelloUI 1.0.1+26.2 targets Minecraft 26.2, Java 25 and Mojang official names.
Use net.fabricmc.fabric-loom and the standard Gradle configurations. Do not
add Yarn mappings, modImplementation or a remapJar workflow.
This repository’s sibling projects compile against JelloUI with:
dependencies {
implementation project(':')
}
The current build does not publish a repository coordinate for third-party
consumers. When developing outside this repository, place the JelloUI jar in
libs/ and keep it as a prerequisite mod rather than bundling it:
dependencies {
compileOnly files('libs/jelloui-1.0.1+26.2.jar')
runtimeOnly files('libs/jelloui-1.0.1+26.2.jar')
}
A mod becomes a JelloUI addon by implementing
io.github.sst.remake.api.JelloAddonInitializer and declaring the class under
the jelloui:addon entry point key in its fabric.mod.json:
{
"environment": "client",
"depends": {
"jelloui": ">=1.0.1+26.2"
},
"entrypoints": {
"jelloui:addon": [
"com.example.ExampleAddon"
]
}
}
JelloUI resolves every jelloui:addon entry point after its own bootstrap
is finished and the JelloApi singleton is installed. By the time
initializeJelloAddon(JelloApi api) runs, every registry is ready and you can
register anything the API exposes.
Do not register JelloUI content from a generic Fabric client entry point.
There is no ordering guarantee for client entry points relative to the
JelloUI bootstrap. The jelloui:addon entry point exists precisely so addon
initialisation never races the platform.
import io.github.sst.remake.api.JelloAddonInitializer;
import io.github.sst.remake.api.JelloApi;
import io.github.sst.remake.api.registration.Owner;
import io.github.sst.remake.api.version.ApiVersion;
public final class ExampleAddon implements JelloAddonInitializer {
@Override
public void initializeJelloAddon(JelloApi api) {
ApiVersion required = ApiVersion.VERSION_1_3_0;
if (!api.version().isCompatibleWith(required)) {
throw new IllegalStateException(
"JelloUI API " + required + " or a compatible version is required");
}
Owner owner = JelloApi.owner("example", "Example Addon");
// ... register categories, modules, HUD widgets, keybinds, ...
}
}
The class must be cheap to construct: Fabric instantiates it reflectively.
Keep all registration work inside initializeJelloAddon.
JelloUI catches and logs a RuntimeException thrown by one addon’s entry
point, then continues starting the remaining addons. The runtime does not
automatically compare an addon’s required API version; perform the
ApiVersion check shown above before registration. Once inside the API,
callbacks invoked by JelloUI use the isolation rules described in
error isolation.