Platform types
Essential categorizes mod loaders into four platform variants based on their loading mechanism:| Platform | Loader | Minecraft Versions | Description |
|---|---|---|---|
| launchwrapper | Forge | 1.8.9, 1.12.2 | Legacy Forge using LaunchWrapper |
| modlauncher8 | Forge | 1.16.5 | Modern Forge with ModLauncher 8 |
| modlauncher9 | Forge/NeoForge | 1.17+ | Modern Forge/NeoForge with ModLauncher 9+ |
| fabric | Fabric | All Fabric versions | Fabric loader |
These platform variants determine which container mod and loader stages are used. Each platform has its own set of loader JAR files.
Forge platforms
LaunchWrapper (legacy)
Platform identifier:launchwrapper
Minecraft versions: 1.8.9, 1.12.2
Legacy Forge versions use the LaunchWrapper system for mod loading:
- Tweaker-based loading mechanism
- FML (Forge Mod Loader) integration
- Development uses custom
DevelopmentTweakerfor Mixin support - Most stable and mature Essential implementation
ModLauncher 8
Platform identifier:modlauncher8
Minecraft versions: 1.16.5
Forge 1.16.5 introduced ModLauncher 8:
- Service-based loading architecture
- Improved transformation system
- Transition version between legacy and modern Forge
ModLauncher 9+
Platform identifier:modlauncher9
Minecraft versions: 1.17.1 and above
Modern Forge and all NeoForge versions use ModLauncher 9 or newer:
- Latest Forge loading architecture
- Used by NeoForge since its inception (1.20.4+)
- Unified platform for Forge 1.17+ and all NeoForge versions
- Enhanced security and validation features
Fabric platform
Platform identifier:fabric
Minecraft versions: All Fabric-supported versions (1.16.2+)
Fabric uses a different loading approach than Forge:
- Lightweight loader with minimal modifications to Minecraft
- Mixin-based transformation system
- Requires
fabric.mod.jsonfor mod metadata - Separate loader versioning (Essential requires Fabric Loader 0.11.0+)
Essential compiles against Fabric Loader 0.11.0 to ensure compatibility with older versions while avoiding APIs only available in newer loaders.
Fabric API integration
For Minecraft 1.20.6 and above, Essential bundles specific Fabric API modules:fabric-api-basefabric-networking-api-v1
NeoForge platform
Platform identifier:modlauncher9 (shares infrastructure with modern Forge)
Minecraft versions: 1.20.4 and above
NeoForge is a fork of Forge that maintains compatibility with the ModLauncher 9 infrastructure:
- Uses same platform variant as Forge 1.17+
- Separate mod metadata format (
neoforge.mods.toml) - Full feature parity with Forge builds
- Growing support for modern Minecraft versions
Container mods
Essential distributes lightweight “container” mods that download the full mod on first launch. There are four container variants, one for each platform:| Container | Platform | Used For |
|---|---|---|
container-launchwrapper | launchwrapper | Forge 1.8.9, 1.12.2 |
container-modlauncher8 | modlauncher8 | Forge 1.16.5 |
container-modlauncher9 | modlauncher9 | Forge 1.17+, NeoForge |
container-fabric | fabric | All Fabric versions |
Building container mods
To build a container mod for a specific platform:loader/container/<platform>/build/libs/.
Loader stages
Each platform has three loader stages with separate JAR files:Stage 0
Bootstraps Essential loading from the mod file:- Extracted from container or pinned mod JAR
- Platform-specific initialization code
- Minimal dependencies
Stage 1
Sets up the loading environment:- Located at
.minecraft/essential/loader/stage1.jar - Shared across all versions using the same platform
- Loads Stage 2
Stage 2
Prepares for mod execution:- Located at
.minecraft/essential/loader/stage2.<Loader>_<MC-Version>.jar - Platform and version-specific
- Loads the main Essential mod JAR
- May be updated independently of Essential versions
For detailed technical information about loader stages, see
loader/docs/stages.md in the source repository.Platform detection in code
The build system provides platform detection properties:Platform-specific configuration
Mixin configurations
Fabric and Forge use different Mixin configuration approaches: Forge/NeoForge: Mixins declared in JAR manifestfabric.mod.json
Metadata formats
Each platform uses different mod metadata:- Forge (legacy):
mcmod.info - Forge (modern):
mods.toml - NeoForge:
neoforge.mods.toml(becomesmods.tomlin JAR) - Fabric:
fabric.mod.json
Building loader components
To build all loader components for all platforms:loader/stage0/<platform>/build/libs/loader/stage1/<platform>/build/libs/loader/stage2/<platform>/build/libs/loader/container/<platform>/build/libs/
The loader is built automatically when building Essential mod since it’s included in the pinned JAR files.