Compatibility
Minecraft: Java Edition
Platforms
Supported environments
Tags
Creators
Details
EMI - Port Forward
PF-EMI or EMI - Port Forward started as a standalone port forward for 1.21.11 for my mod, ProjectFlint, and has now become a widely used port for 1.21.2+, featuring NeoForge, Forge, and Fabric versions. Port Forward exists to not only port forward the last features from the prev. version of EMI, but also so it can add new features for the newest versions, improving EMI overall. Below is EMI's direct description.
EMI's Main Changes
EMI is a featureful and accessible item and recipe viewer for Minecraft.


Developers
To add EMI to your project as a dependency you need to add the following to your build.gradle:
repositories {
maven {
name = "TerraformersMC"
url = "https://maven.terraformersmc.com/"
}
}
How EMI gets added to your dependencies varies based on modloader and setup.
The Gradle property emi_version should be something like 1.0.0+1.19.4 with EMI's version and Minecraft's version.
Here are common dependency setups for different loaders and build systems.
dependencies {
// Fabric
modCompileOnly "dev.emi:emi-fabric:${emi_version}:api"
modLocalRuntime "dev.emi:emi-fabric:${emi_version}"
// Forge (see below block as well if you use Forge Gradle)
compileOnly fg.deobf("dev.emi:emi-forge:${emi_version}:api")
runtimeOnly fg.deobf("dev.emi:emi-forge:${emi_version}")
// NeoForge
compileOnly "dev.emi:emi-neoforge:${emi_version}:api"
runtimeOnly "dev.emi:emi-neoforge:${emi_version}"
// Architectury
modCompileOnly "dev.emi:emi-xplat-intermediary:${emi_version}:api"
// MultiLoader Template/VanillaGradle
compileOnly "dev.emi:emi-xplat-mojmap:${emi_version}:api"
}
For Forge Gradle users, you will need to enable Mixin refmaps in your client sourceset. This can be done by adding 2 lines inside of your client runs, to look like below.
runs {
client {
// Add these two lines
property 'mixin.env.remapRefMap', 'true'
property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
// The rest of the code that was already here
// ...
}
}


