Skip to main content
Early Access: MineXHost is live and still being built. Expect maintenance and occasional outages. Check live status
Mods and loadersForgeFabric

“Needs language provider” and a missing fabric-language-kotlin: what a missing language provider means and how to fix it

Updated 7 min read By MineXHost

Most mods written in Kotlin need a language provider, a library mod that lets the loader start them. When it is missing or too old, Forge and NeoForge refuse the mod with a needs language provider line, and Fabric reports fabric-language-kotlin as missing. Either way, the fix is the right provider in mods/.

What a language provider is

Forge, NeoForge and Fabric can start mods written in Java by themselves. Mods written in another JVM language, most often Kotlin, usually also need a language provider: a separate library mod that lets the loader start mods written in that language. A mod states which provider it needs and which versions it accepts, and the loader refuses to load it when that provider is absent or too old.

On Forge and NeoForge a mod names its provider in the modLoader line of its mods.toml (neoforge.mods.toml on recent NeoForge versions) and the versions it accepts in loaderVersion. Ordinary Java mods name javafml, the loader's own provider. Kotlin mods built on Kotlin for Forge name kotlinforforge, which that mod supplies.

On Fabric a Kotlin mod built on Fabric Language Kotlin lists fabric-language-kotlin as a dependency in its fabric.mod.json and starts through that mod's kotlin adapter. Fabric checks dependencies before anything starts, so a missing Fabric Language Kotlin shows up as an ordinary missing dependency.

Note

Kotlin for Forge and Fabric Language Kotlin are libraries for other mods. Neither adds gameplay on its own, but a mod that depends on one needs it installed on the server.

Exact error messages

Lines to match against your server log. Forge and NeoForge print the first two shapes; Fabric prints the third.

Exact line in the logWhat it tells you
Mod File somemod-1.0.0.jar needs language provider kotlinforforge:3.12.0 or above to loadsomemod is a Kotlin mod. Install Kotlin for Forge 3.12.0 or newer, built for your Minecraft version and loader. Forge prints this line whether Kotlin for Forge is missing or older.
Mod File somemod-1.20.2.jar needs language provider javafml:48 or above to loadNot a missing download. javafml is the loader's own Java provider, so this mod was built for a newer Forge or NeoForge than yours. Use the mod's build for your Minecraft version.
Mod 'Some Mod' (somemod) 1.0.0 requires version 1.10.0 or later of fabric-language-kotlin, which is missing!Fabric Language Kotlin is not in mods/. Install a build for your Minecraft version, at 1.10.0 or later.

How to fix it on Forge or NeoForge

Read the provider id and the version after the colon. kotlinforforge means Kotlin for Forge, and the number is the lowest Kotlin for Forge version the mod accepts. Forge prints the same line whether Kotlin for Forge is missing or too old; the We have found line under it shows what it found. Forge's log also has a line that starts Missing language kotlinforforge version, followed by the version range and the jar that asked for it. Current NeoForge says needs language provider kotlinforforge to load, with no version, when the provider is not installed at all.

  1. Stop the server and look in mods/ for a Kotlin for Forge jar. Its file name usually starts with kotlinforforge.
  2. Download Kotlin for Forge from its CurseForge or Modrinth page, picking a file listed for your Minecraft version and your loader. Kotlin for Forge publishes different major versions for different Minecraft versions.
  3. Choose a version at or above the number in the message. If an older Kotlin for Forge jar is in mods/, take it out, so only one copy remains.
  4. Start the server. If the line now names another mod or a higher version, repeat for that one.
  5. If the id is neither kotlinforforge nor javafml, it usually belongs to another provider mod: check the requiring mod's page for what it needs.

javafml: a mod built for a newer Forge

javafml is Forge's own language provider. Its version is Forge's major version, which Forge typically raises with each Minecraft version. A mod that asks for a higher javafml than your Forge provides was built for a newer Forge, usually for a newer Minecraft version, and no separate download makes it load. Replace it with the mod's build for your Minecraft version, or remove it.

Other missing-mod messages on Forge and NeoForge, such as Missing or unsupported mandatory dependencies and Currently, X is not installed, have their own guide.

Read the Forge dependencies guide

How to fix it on Fabric

Fabric names the missing dependency by its mod id. fabric-language-kotlin is Fabric Language Kotlin, published on Modrinth and CurseForge.

  1. Find the line that names fabric-language-kotlin and note the version after requires version, if there is one.
  2. Download Fabric Language Kotlin, picking a file listed for your Minecraft version at or above that version, and put it in mods/.
  3. Take out any older copy, so only one remains.
  4. Start the server and check that the line is gone.

If Fabric's output names other missing mods too, or ends with a Fix line, the Fabric guide explains how to read all of it.

Read the Fabric resolution guide

What MineXHost's launcher does with this

On a Fabric server, when the log says a mod requires fabric-language-kotlin and it is missing, MineXEngine, our launcher, tries to fetch it itself: it looks for a build for your server's loader and Minecraft version on Modrinth or CurseForge, adds the jar to mods/ and restarts the server. It is the same kind of fetch the launcher makes for other missing libraries. If no build can be found, nothing is added, and the steps above apply.

On Forge and NeoForge, crash recovery on a customer server normally names a problem mod and leaves it in place. This error is one of the exceptions. In some cases, when the loader names one jar in a needs language provider … or above line and that jar's own mods.toml asks for exactly that provider and version, the launcher moves the jar to mods/.quarantined/ so the rest of the pack can start, and the console names the jar.

It is a move, not a delete. For kotlinforforge, install the Kotlin for Forge version the message names, move the jar from mods/.quarantined/ back into mods/ and restart. For javafml, put the mod's build for your Minecraft version in mods/ instead.

Choosing a pack for a server? Our modpacks hub lists the packs our QA Lab has boot-tested, and each pack's page shows its latest test result and what that test covers.

Modpacks our QA Lab has boot-tested

MineXHost runs Forge, NeoForge and Fabric packs on MineXEngine. Our launcher detects the modpack, picks the right Minecraft loader and Java version, tunes the JVM for your RAM, and auto-recovers from the crashes that normally end a modded server's evening. Pick your RAM, paste the pack, and play.

See hosting plans

Frequently asked questions

What does “needs language provider kotlinforforge” mean?

The line Mod File X needs language provider kotlinforforge:N or above to load means that mod is written in Kotlin and Forge or NeoForge cannot start it until Kotlin for Forge, the mod that supplies the kotlinforforge language provider, is installed at version N or newer, so the fix is a matching Kotlin for Forge build in mods/. Forge prints the same line whether Kotlin for Forge is missing or older than N.

What is fabric-language-kotlin, and does my server need it?

Fabric Language Kotlin, mod id fabric-language-kotlin, is the Fabric library that lets mods written in Kotlin start, by providing a kotlin entrypoint adapter and bundling the Kotlin standard library, so a server running any Fabric mod that lists it as a dependency needs it in its mods folder too. Download the build listed for your Minecraft version from Modrinth or CurseForge. It adds no gameplay on its own.

What does “needs language provider javafml:48 or above” mean?

The line needs language provider javafml:48 or above means the named mod was built for a newer Forge than the server runs, because javafml is Forge's own Java language provider and its version is Forge's major version, so the fix is the mod's build for your Minecraft version rather than a separate download. Forge typically raises that number with each Minecraft version, which is why a mod for a newer Minecraft version usually asks for more.

Does MineXHost install a missing language provider automatically?

On a Fabric server, MineXHost's launcher tries to fetch a missing fabric-language-kotlin itself from Modrinth or CurseForge, for the server's loader and Minecraft version, and restarts, while on Forge and NeoForge it can move a mod refused with a needs language provider line to mods/.quarantined/ so the rest of the pack starts, naming the file in the console. A moved jar can be put back, and if no build can be found, nothing is added.

Still stuck?

Every ticket is answered by a real person who plays Minecraft and knows modpacks. Send the full console output, not just the last line. Customers open a ticket from the panel; anyone can ask in our Discord.

  • Live support 5PM-12AM ET on weekdays
  • Replies typically within 12 hours
  • Limited availability on weekends