EriAPI
The all-in-one modding framework for Minecraft Forge 1.12.2 — GUIs, overlays, commands, data, security and more.
Welcome!
Want to create a Minecraft mod with a beautiful interface? A menu, a dashboard, an in-game shop, a settings screen? You're in the right place.
EriAPI is a library (a set of Java files) that gives you all the tools to build graphical interfaces in Minecraft Forge 1.12.2. You don't have to worry about complex technical details like OpenGL or scaling — the framework handles it for you.
What can you build with EriAPI?
- Game menus (custom inventories, shops, player trades)
- Settings screens (sliders, checkboxes, text fields)
- Dashboards with progress bars and statistics
- Forms (login, character creation, registration)
- Scrollable lists (leaderboards, history, option selection)
- Charts (LineChart, BarChart, PieChart)
- Draggable HUD overlays with auto-snap and a visual editor
- Commands with auto-completion and sub-commands
- Persistent player data storage (survives restarts, auto sync)
- Client-server network communication for GUIs
- Anti-duplication protection for containers
- Configuration with an auto-generated GUI
- And any other feature you can imagine!
We assume you don't know Java and have never made a Minecraft mod. Every concept is explained from scratch. If something isn't clear, it's a bug in the docs — not in your head.
Experienced modders can jump directly to any specific module page using the sidebar.
Java, a code editor (IntelliJ), and Forge MDK. We explain everything in detail.
A few lines in a config file and you have access to all components.
A few minutes and you have a real menu in Minecraft, openable with a command.
Installation
Before coding anything, you need to install the right tools on your computer. Follow these steps in order.
Step 1 — Install Java 8 JDK
Java is the programming language Minecraft uses. The JDK (Java Development Kit) is the toolkit that lets you write and compile Java code. It's required.
Download Amazon Corretto 8 (a free, stable version of Java 8): Download Corretto 8 for Windows (64-bit)
Minecraft Forge 1.12.2 only works with Java 8. Do not install Java 11, 17 or 21 — it won't work.
Step 2 — Install IntelliJ IDEA
Download IntelliJ IDEA Community Edition (free): Download IntelliJ IDEA
Step 3 — Download Forge MDK
Download Forge 1.12.2-14.23.5.2864 MDK: Download Forge 1.12.2 MDK
Extract the ZIP to a folder (e.g. C:\Mods\MyMod\).
Step 4 — Add EriAPI to your project
buildscript {
repositories {
maven { url = 'https://maven.minecraftforge.net' }
mavenCentral()
}
dependencies {
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
}
}
apply plugin: 'net.minecraftforge.gradle'
apply plugin: 'java'
group = 'com.yourname.yourmod'
version = '1.0'
archivesBaseName = 'mymod'
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
minecraft {
mappings channel: 'stable', version: '39-1.12'
runs {
client {
workingDirectory project.file('run')
property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYEVENTS'
property 'forge.logging.console.level', 'debug'
}
server {
workingDirectory project.file('run')
property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYEVENTS'
property 'forge.logging.console.level', 'debug'
}
}
}
repositories {
flatDir { dirs 'libs' }
maven { url = 'https://maven.minecraftforge.net' }
mavenCentral()
}
dependencies {
minecraft 'net.minecraftforge:forge:1.12.2-14.23.5.2864'
implementation(name: 'eriapi-1.2.0-1.12.2', ext: 'jar')
}
Create a libs folder in the root of your project (where build.gradle is).
Copy eriapi-1.2.0-1.12.2.jar into it. Gradle will find it automatically.
Step 5 — Generate IntelliJ project
./gradlew genIntellijRuns
Run ./gradlew build in the terminal. If you see BUILD SUCCESSFUL, the installation is complete!
Your First GUI
Let's build your first Minecraft menu from scratch. By the end, you'll be able to type a command in-game and see a real menu with a title and a button.
Step 1 — Create the menu file
package com.yourname.yourmod.gui;
import fr.eri.eriapi.gui.EriGuiScreen;
import fr.eri.eriapi.gui.components.Button;
import fr.eri.eriapi.gui.components.Label;
import fr.eri.eriapi.gui.util.Colors;
public class MyFirstMenu extends EriGuiScreen {
public MyFirstMenu() {
super(1920, 1080); // Design space 1920x1080
}
@Override
public void initGui() {
super.initGui();
// Title
addComponent(new Label(760, 100, 400, 30)
.text("My First Menu")
.color(Colors.WHITE)
.align(Label.Align.CENTER)
.scale(1.5f));
// Button
addComponent(new Button(760, 500, 400, 50)
.text("Click me!")
.colorScheme(Button.Style.CYAN)
.cornerRadius(8)
.onClick(() -> this.close()));
}
}
Step 2 — Create a command to open the menu
package com.yourname.yourmod.command;
import net.minecraft.command.CommandBase;
import net.minecraft.command.ICommandSender;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.server.MinecraftServer;
import net.minecraft.client.Minecraft;
import com.yourname.yourmod.gui.MyFirstMenu;
public class CommandMyMenu extends CommandBase {
@Override public String getName() { return "mymenu"; }
@Override public String getUsage(ICommandSender sender) { return "/mymenu"; }
@Override
public void execute(MinecraftServer server, ICommandSender sender, String[] args) {
if (sender instanceof EntityPlayer) {
Minecraft.getMinecraft().displayGuiScreen(new MyFirstMenu());
}
}
}
Step 3 — Register the command
@Mod.EventHandler
public void init(FMLInitializationEvent event) {
net.minecraftforge.client.ClientCommandHandler.instance
.registerCommand(new CommandMyMenu());
}
Step 4 — Test it
./gradlew runClient
In-game, type /mymenu in the chat. Your menu appears!
You just created your first Minecraft GUI with EriAPI. Explore the modules below to discover everything you can build.
Modules
EriAPI is organized in independent modules. Each module has its own detailed documentation page.
48+ components for building graphical interfaces: buttons, labels, sliders, scrollable lists, charts, color picker, tabs, text fields, and more.
AvailableAnnotation-based configuration. Auto-generated GUI, server/client sync, hot-reload.
AvailableFluent builder for commands. Typed arguments, tab-completion, cooldowns, permissions, auto help.
AvailableCreate items and blocks with fluent API. Auto-registry, runtime models, recipes.
AvailablePersistent HUD elements during gameplay. Modular OverlayMod system, drag & drop editor, per-mod settings, JSON persistence, nanotime rendering.
AvailableAnimated blocks, items and entities with Blockbench models. TESR, keyframes, easings, spin, dynamic textures. Unified pipeline for all three categories.
AvailableAnnotation-based data persistence. Annotated POJOs, auto sync, multi-scope (player/world/global).
AvailableTask scheduling. Delay, repeat, async, chain, cancel.
AvailableRich chat messages with fluent API. Colors, clickable, hover, pagination.
AvailableSimplified capabilities. 1 annotation instead of 6 files. Auto sync.
AvailableOne-liner lambda events. Filters, priority, once, auto-expire.
AvailableAdvanced keybindings. Combos, double-tap, contexts, rebind GUI.
AvailableClient-server communication for GUIs. Send actions, receive data, open GUIs from the server side.
AvailableAnti-duplication protection for containers. Transaction locks, server-side validation, inventory exploit prevention.
AvailableVersion history and changelog. All new features, bug fixes and improvements documented per release.
Available