Learn · concepts

What Is Intermediary? Minecraft Mappings Explained

Intermediary is Fabric's stable naming layer for obfuscated Minecraft code. Mods keep working across versions without breaking when fields get renamed.

TRtrolPublished 4 min read

What is Intermediary?

Intermediary is the stable naming layer Fabric puts over Minecraft's obfuscated code. Mojang ships the game with scrambled class, field, and method names that change every release. Intermediary gives each of those a fixed name that stays the same across versions, so a compiled mod keeps finding the code it patches even after the game updates underneath it.

Think of it as a contract: Fabric promises that if something exists in the game, it will have the same Intermediary name across versions. That contract is what lets a mod shipped as a compiled jar keep working on new versions without being recompiled.

What Intermediary actually is

Intermediary is a set of mappings: a lookup table that pairs each obfuscated Minecraft symbol with a stable, machine-generated name. A class the game calls a might become class_1234 in Intermediary. The name is ugly, but it's permanent for that symbol across releases.

Mojang obfuscates the game on every build. Names would otherwise shift release to release, which is why a mod compiled against raw obfuscated names breaks the moment the game updates. Intermediary freezes those names so the mapping, not the mod, absorbs the churn.

Why Fabric mods need it

Mods are distributed compiled against Intermediary names, not the readable names a developer writes against. That one decision is why a Fabric mod can keep running on a new game build without a recompile in many cases.

When the game launches, Fabric loads the Intermediary mapping for that version and remaps the obfuscated game classes to the stable names the mod expects. The mod and the game meet in the middle on a name set neither of them ships raw.

Intermediary vs developer mappings

Developers do not read or write class_1234. They work against a human-readable mapping like Yarn or Mojmap, which give symbols descriptive names. At build time those readable names are compiled down to Intermediary for distribution.

LayerExample nameWho uses itStable across versions
Obfuscateda, field_5678Nobody by handNo
Intermediaryclass_1234, method_5678Shipped mod binariesYes
Yarn / MojmapMinecraftClient, isPlayerSpawned()Developers at build timeReadable, version-tracked

The split lets developers code against friendly names while the thing that actually ships stays version-stable. Readable mappings can be swapped out; Intermediary is the common floor everyone agrees on.

How it fits a mod's lifecycle

  1. A developer writes code against a readable mapping such as Yarn or Mojmap.
  2. The build compiles those names down to Intermediary names.
  3. The mod ships as a jar that references Intermediary symbols.
  4. At launch, Fabric remaps the running game from its obfuscated names into Intermediary so the mod and the game line up.

This is why mappings are a quiet but load-bearing part of Fabric modding: they're the contract that keeps mods pointing at the right code after every update.

FAQ