EriAPI

The all-in-one modding framework for Minecraft Forge 1.12.2 — GUIs, overlays, commands, data, security and more.

Minecraft 1.12.2 Forge 14.23.5.2864 Java 8 v1.2.0

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!
This documentation is beginner-friendly

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.

01
Install the tools

Java, a code editor (IntelliJ), and Forge MDK. We explain everything in detail.

02
Add EriAPI

A few lines in a config file and you have access to all components.

03
Create your first GUI

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)

Java 8 only!

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

build.gradle — Full configuration
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')
}
How to add the EriAPI.jar file

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

Terminal
./gradlew genIntellijRuns
Verify everything works

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

Java — MyFirstMenu.java
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

Java — CommandMyMenu.java
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

Java — Main mod class
@Mod.EventHandler
public void init(FMLInitializationEvent event) {
    net.minecraftforge.client.ClientCommandHandler.instance
        .registerCommand(new CommandMyMenu());
}

Step 4 — Test it

Terminal
./gradlew runClient

In-game, type /mymenu in the chat. Your menu appears!

Congratulations!

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.

GUI Framework

48+ components for building graphical interfaces: buttons, labels, sliders, scrollable lists, charts, color picker, tabs, text fields, and more.

Available
Config System

Annotation-based configuration. Auto-generated GUI, server/client sync, hot-reload.

Available
Command Framework

Fluent builder for commands. Typed arguments, tab-completion, cooldowns, permissions, auto help.

Available
Content Builder

Create items and blocks with fluent API. Auto-registry, runtime models, recipes.

Available
Overlay HUD

Persistent HUD elements during gameplay. Modular OverlayMod system, drag & drop editor, per-mod settings, JSON persistence, nanotime rendering.

Available
Animation System

Animated blocks, items and entities with Blockbench models. TESR, keyframes, easings, spin, dynamic textures. Unified pipeline for all three categories.

Available
Data & Storage

Annotation-based data persistence. Annotated POJOs, auto sync, multi-scope (player/world/global).

Available
Scheduler

Task scheduling. Delay, repeat, async, chain, cancel.

Available
Chat Builder

Rich chat messages with fluent API. Colors, clickable, hover, pagination.

Available
Capability Helpers

Simplified capabilities. 1 annotation instead of 6 files. Auto sync.

Available
Event Simplifier

One-liner lambda events. Filters, priority, once, auto-expire.

Available
Keybinding Manager

Advanced keybindings. Combos, double-tap, contexts, rebind GUI.

Available
Network GUI

Client-server communication for GUIs. Send actions, receive data, open GUIs from the server side.

Available
Security Framework

Anti-duplication protection for containers. Transaction locks, server-side validation, inventory exploit prevention.

Available
Patchnote

Version history and changelog. All new features, bug fixes and improvements documented per release.

Available

Why EriAPI?

Fluent API Write readable code by chaining methods like a sentence.
Auto-scaling Design in 1920x1080, the framework adapts automatically to all resolutions.
48+ components Buttons, sliders, lists, charts, color picker, tabs, text fields...
Textures & 9-Slice Apply PNG textures to any component with 5 scaling modes.
Animations FadeIn, slideIn, shake, scale with 8 easing functions and sub-tick interpolation.
Built-in networking Pre-configured client/server packets for GUI communication.