HomeJavaModsLegacy OptiFabric
Legacy OptiFabric
ModsJava

Legacy OptiFabric

by tildejustin · on Modrinth

Which build do you need?

This mod ships a separate file for every mod loader and every version of the game. Pick both, then download — the wrong build installs fine and then does nothing in the game.

Mod loader

Minecraft version

⬇ Download for 1.8.3–1.14.4 · Ornithe⬇ Download for 1.8.4–1.13.2 · Legacy-fabric
I don't know my version or loader
Open the Minecraft launcher and look at the profile you play on — it names both, like fabric-loader-1.21.4. The version also shows in the bottom-right corner of the game's main menu.
No loader in the profile name? Then it's plain Minecraft, and these mods won't run — you need Fabric or NeoForge installed first.

for mcsr: use mods.tildejustin.dev

If you're looking for OptiFabric for 1.14 to 1.15.2 for regular Fabric instead of Ornithe, check out OptiFabric Origins

Legacy OptiFabric

OptiFabric for Legacy Fabric (1.3.1-1.13.2) and Ornithe (b1.7.3-1.14.4)

based on the work of RedLime's OptiFabric-Pre1.14, a fork of hYdos's OptiFabric 1.8.9 which in turn is a derivative of modmuss' original OptiFabric

installing

this mod requires an optifine jar in the mods folder alongside optifabric. for 1.7.2 and onwards this can be sourced from OptiFine's official website, and older versions these can be retrieved either from SpeedyCube64's Pre-1.9 Optifine Archive or on the OptiFine history thread.

how it works

this mod uses Minecraft-Java-Edition-Speedrunning/fabric-asm, a minor derivative of Cat Core's Fabric-ASM/no-guava which itself is an updated version of Chocohead's fabric-asm. fabric asm allows more extreme asm modification and the fork used has no dependency on guava or apache commons, which older minecraft versions don't provide.

steps

  1. the mod looks for an optifine installer or mod jar or zip in the current mods folder
  2. if it finds an installer jar it runs the extract task in its own throwaway classloader
  3. the optifine mod jar is a set of classes that need to replace the ones that minecraft provides
  4. optifine's replacement classes change the name of some lambda methods, so it take a good guess at the old name (using the original minecraft jar)
  5. remap optifine to intermediary
  6. move the patched classes out as they won't do much good on the classpath twice
  7. add optifine to the classpath
  8. register the patching tweaker for every class that needs replacing
  9. replace the target class with the class that was extracted, also do some more fixes to it, and make it public (due to access issues)
  10. hope it works

notes

class excluder

this is a kind of hidden feature that is occasionally useful to remove files when remapping the jar. to do this, it reads the optifabric-excluded-classes.json file in .minecraft/config/ if it exists, and expects the file to contain a mapping of versions (field names) to an array of removable classes (or textures or anything else, it's just a filename). an example file contents to revert the removal of the profiler for 1.3.2 light is provided below. if the optifine version you are trying to make an excluder extry for has already been loaded before in your instance, delete its folder in the .optifine folder in .minecraft to force a recache.

{
  "OptiFine_1.3.2_L_B2": [
    "ik.class"
  ]
}
Quick facts

Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.

Verified by MCModsHub

These come from our own check of the pack file, not from the source page.

Explore more