Horizon Translator

Bring your mods and shaders to Horizon

Convert Iris / OptiFine shader packs right here in your browser, and Fabric mods with the free desktop app for Windows, Linux and Mac. The translator rewrites them for Horizon, the Rust rewrite of Minecraft Java.

Checking your browser…

Experimental: don't expect a finished mod. The mod converter is a helper, not a one-click port. It does a lot of the work for you, but most mods come out only partly working: anything built on Minecraft features Horizon doesn't have yet is switched off and listed in PORTING.md for you to finish. Try it on a popular mod to see what it does.

Horizon Translator for Windows, Linux and Mac

Mods are converted by a free desktop app, so everything runs on your own PC and nothing is uploaded. It has the same menu as this site and converts shader packs too.

Download for Windows (.exe) Download for Linux (.tar.gz) Mac, Apple Silicon (.dmg) Mac, Intel (.dmg)

Windows 10/11, 64-bit Linux or macOS · about 45 MB · Java is included, nothing else to install

How to use it

  1. Windows: run HorizonTranslator-Setup.exe. The installer isn't code-signed, so Windows may show "Windows protected your PC": click More info → Run anyway. Only do this with the file from this site or the project's GitHub Releases page. If Defender calls it a trojan, see how to check the file below.
    Linux: unpack it (tar -xzf HorizonTranslator-linux-x64.tar.gz) and run HorizonTranslator/bin/HorizonTranslator. install-menu-entry.sh in that folder adds it to your app menu.
    Mac: open the .dmg (Apple Silicon for M1 and newer) and drag Horizon Translator into Applications. It isn't signed by Apple, so the first time open System Settings → Privacy & Security and press Open Anyway.
  2. Open Horizon Translator, pick the Mods tab and drop in a Fabric mod .jar.
  3. Press Convert mod. The result is saved in Documents/Horizon Translator.
  4. If the mod converted fully (rare), you get <modid>.hnmod and the app adds it to Horizon: press Build on the launcher's Mods page. Otherwise read PORTING.md for what's left, then build it with horizon-launcher native-build <folder>/mixins/<modid> --trust-native-code. Only build mods you trust: native mods have full access to your computer.

The app only decompiles mods whose licence allows it (MIT, Apache, GPL, LGPL, MPL, OSL and similar). All Rights Reserved mods are only converted for their author ("I made this mod").

Windows Defender says it's a trojan?

Some versions of Microsoft Defender flag the installer as Trojan:Win32/Wacatac.B!ml. The !ml means a machine-learning model guessed, not that known malware was found. It often guesses this for new installers that aren't code-signed and haven't been downloaded much yet. On VirusTotal, Microsoft was the only one of about 70 antivirus engines to flag the 1.0.0 installer; the others found nothing.

Don't take our word for it. You can check the file yourself without trusting this website:

  1. Get the official fingerprint from GitHub. GitHub calculates a SHA-256 hash of every file attached to a release and shows it next to the file on the Releases page. This website can't change that number.
  2. Hash the file you downloaded. Open PowerShell in your Downloads folder and run
    Get-FileHash .\HorizonTranslator-Setup.exe -Algorithm SHA256
    (or certutil -hashfile HorizonTranslator-Setup.exe SHA256 in Command Prompt). If it matches GitHub's hash, your file is exactly the one that was published.
  3. Scan it with about 70 antivirus engines. Upload the file to VirusTotal or search for the hash there. Check how many engines flag it and what names they use.
  4. Read the code. All of the app's source code is on GitHub (the app itself is in desktop/src), along with the script that builds the installer (scripts/build-desktop.sh), so anyone can review it or build it themselves.

Only trust a hash you got from GitHub itself. If your file's hash doesn't match, delete it and download it again from the Releases page.

By downloading you agree to the Terms of Use: only convert files you're allowed to modify.

How it works

Mods: Fabric → Horizon native mod

  1. Licence check. Reads fabric.mod.json and any licence file. Open licences pass; All Rights Reserved is refused.
  2. Decompile. Turns the jar back into Java with Vineflower. The Java stays on your PC and is deleted straight away.
  3. Map the mixins. Each @Inject, @Redirect, @ModifyArg… is matched to the Horizon function that does the same job, using a mapping table and Horizon's own source.
  4. Translate Java to Rust. Config, keys, HUD and tick code, maths, JSON, regex, streams and more become Rust that calls Horizon.
  5. Write a bundle. A horizon-mixin.toml bundle you build into the game with the Horizon launcher, plus PORTING.md listing anything left to do.

Shaders: Iris/OptiFine → Horizon pack

  1. Load it like the game does. Runs Horizon's real shader loader (GLSL → naga → SPIR-V) offline, for every dimension, and lists each program it would skip.
  2. Fix what fails. Tries about 20 rewrite rules on the GLSL (3D textures, compute passes, out-arguments, buffer formats…). A rule is kept only if more programs load and nothing that loaded breaks.
  3. Fix how it draws. Passes that work around differences in how Horizon renders: normals, matrices, missing uniforms, cleared buffers, noise textures, skies.
  4. Write the pack. A -horizon.zip for Horizon's shaderpacks folder, with a report of every change.

The full technical description is in the project's README on GitHub.

FAQ

How do I install a converted shader pack?

Put the downloaded …-horizon.zip in %APPDATA%\horizon\shaderpacks (Windows) or ~/.local/share/horizon/shaderpacks, then pick it in Options → Horizon Settings → Shader Packs.

How do I install a converted mod?

Unzip the bundle. Horizon native mods are compiled into the game, so build it with the Horizon launcher: horizon-launcher native-build <bundle>/mixins/<modid> --trust-native-code. Only do that for code you trust: a native mod runs with full access to your computer. Read PORTING.md first.

Will every feature of my mod work?

Probably not. The mod converter is meant to help you port a mod, not do it 100% for you. Code that only uses plain Java converts well. Code that reaches deep into Minecraft (custom screens, entity renderers, resource packs) often has no Horizon equivalent yet. Those parts are switched off and listed in PORTING.md, so the mod still loads.

Do you keep my files?

Your files never leave your computer. Shader packs are converted inside your browser (WebAssembly) and mods by the desktop app on your PC, so nothing is uploaded and there's no server that could keep anything. Decompiled Java is deleted as soon as a conversion ends.

Something went wrong. How do I report it?

Open an issue on GitHub or ask on Discord, or press Report a problem under a result to start one with the details filled in. Say which mod or shader pack (with a download link), what you expected, and paste the converter log. Don't attach mods or packs you aren't allowed to share.

Is this official?

No. It's a community tool and isn't made by the Horizon, Fabric, Iris or OptiFine teams, or by Mojang or Microsoft.

Support me