Skip to content

Profiles and add-ons

Xol has one profile per Minecraft version: Xol 1.8.9 and Xol 1.7.10. Each is a fixed setup of Forge, the Xol client and pinned components. OptiFine and your own Forge mods are add-ons you switch on or off, and every combination runs the Xol client.

Xol keeps five things apart: the Minecraft version, the loader, the pinned components, the add-ons, and the performance preset. A preset only writes video settings. It never changes what is installed.

At a glance

Profile Minecraft Loader Components Add-ons
Xol 1.8.9 1.8.9 Forge 11.15.1.2318 Xol client 0.3.5 OptiFine (on by default), Forge mods (off by default)
Xol 1.7.10 1.7.10 Forge 10.13.4.1614 UniMixins, GTNHLib, Hodgepodge, ArchaicFix, Xol client 0.3.5 OptiFine (off by default), Forge mods (off by default)

You never configure Forge yourself. It is always part of the profile, because the client needs it.

Status and platform notes

The profile manifest gives every profile a state. Both profiles are marked experimental, which means they work in limited testing. No profile has passed the acceptance checklist on real hardware yet. The launcher shows no label for this, but each profile carries a note per platform, shown under the profile name:

Platform Note
Windows x64 Not tested on Windows yet.
macOS Intel Not tested on Intel Macs yet.
macOS Apple Silicon Lightly tested on Apple Silicon. Minecraft this old starts on a native arm64 Java 8 where Xol can, and through Rosetta 2 otherwise. See Apple Silicon.

The full matrix is on Supported versions.

Xol 1.8.9

"Xol's menus, HUD and settings on Minecraft 1.8.9. OptiFine and your own mods are add-ons you switch on below."

Component Version Role License Source
Forge 11.15.1.2318 Loader maven.minecraftforge.net, installer pinned by SHA-256
Xol client 0.3.1 The client Proprietary (Xol) Bundled in the launcher, SHA-256 checked, copied to mods/
OptiFine The file you download Optimization, as an add-on Proprietary (OptiFine), not redistributable You download it once from optifine.net. Xol checks it, keeps a copy and places it at mods/OptiFine.jar before each start while the add-on is on. See OptiFine

No performance claim is made for this profile. See Supported versions.

Xol 1.7.10

"Xol's menus, HUD and settings on Minecraft 1.7.10, with a fixed set of performance mods. OptiFine and your own mods are add-ons you switch on below."

Component Version Role Requires Conflicts with License
UniMixins 0.3.1 Library. Provides Mixin on 1.7.10. The rest of the stack and the Xol client need it. LGPL-3.0-only
GTNHLib 0.11.49 Library that Hodgepodge needs. UniMixins LGPL-3.0-only
Hodgepodge 2.7.208 Optimization. Set aside while OptiFine is on. UniMixins, GTNHLib FastCraft LGPL-3.0-only
ArchaicFix 0.8.0 Optimization. Set aside while OptiFine is on. UniMixins FastCraft LGPL-3.0-only
Xol client 0.3.1 The client. UniMixins Proprietary (Xol)

The four third-party mods are downloaded from Modrinth's CDN at exactly these versions. Size and SHA-256 are pinned in the manifest. Sizes are on What gets downloaded. Their effect on the frame rate has not been measured.

The manifest records each mod's role and license but not what each one changes, so that is not described here. Each project documents itself on Modrinth.

Add-ons

The two add-ons sit under the version switch on the main screen. Each is a card you switch on or off, and the choice is saved per Minecraft version.

OptiFine

"Downloaded once from optifine.net by you; Xol keeps it and starts with it."

OptiFine's license does not let launchers include it. The first time a start needs it, or when you switch the add-on on, Xol opens the OptiFine download page for that Minecraft version. When the download finishes, Xol checks the file and keeps its own copy. From then on every start of that version places the copy into the instance while the add-on is on, and takes it out again while it is off. The whole flow is on OptiFine.

  • 1.8.9: on by default.
  • 1.7.10: off by default. While it is on, Hodgepodge and ArchaicFix are set aside for that start, because they replace the same rendering code. The manifest note reads "On 1.7.10 it takes the place of the performance mods Xol manages; not tested yet."

No start with a real OptiFine file has been verified yet on either version.

Forge mods

"Loads the jars in your mods folder. Off, they stay where they are and are not loaded."

Your own mods go in the instance's my-mods folder. Open folder ▸ Mods on the main screen, or Open mods folder in Settings ▸ Instance, takes you there. While Forge mods is on, Xol hands each jar in that folder to Forge when the game starts. While it is off, the jars stay where they are and are not loaded. Xol never changes or deletes them.

  • Settings ▸ Instance ▸ Mods lists every jar: yours as "yours, loaded" or "yours, not loaded", and the profile's own as "installed by Xol".
  • The mods folder inside the instance belongs to Xol. A jar you put there by hand is moved to my-mods at the next start. Nothing is deleted, and a jar whose name already exists in my-mods is left where it is.
  • Forge cannot load a file with a comma in its name. Such a file is listed with the reason and is not handed over. Rename it.
  • If your own copy of OptiFine is in my-mods and Forge mods is on, Xol does not add a second one.

Shared between versions

Your server list (servers.dat), the game options both versions understand (including key binds) and the Xol client's own settings (xol/config.json) are one shared set across Xol 1.8.9, Xol 1.7.10 and any cloned instance. A server you add in 1.7.10 is in the list the next time you start 1.8.9.

  • The launcher keeps a shared copy in the data folder's shared folder and brings each instance up to date before a start, after the game closes and when the launcher opens.
  • A change made on both sides is merged per server and per option key. When the same thing changed in both places, the newer file wins.
  • An instance whose game is running is never written into. What it changed is merged after it closes.
  • Only option keys both versions write the same way are shared. View distance is not shared.

The older Forge and OptiFine profiles

Before 0.3.0 the launcher also offered Forge 1.8.9, Forge 1.7.10, Forge + Optimization 1.7.10, OptiFine 1.8.9 and OptiFine 1.7.10. They are gone. At the first start of 0.3.0 or later, each of their instances is folded into the Xol instance of its Minecraft version, once:

  • Your mod jars move to my-mods. Worlds, screenshots and shader packs move over. A name that already exists gets a suffix such as "(from forge-1.8.9)".
  • Resource packs and mod configs are copied where the Xol instance has none. The server lists are joined without duplicates.
  • The most recently used options.txt is kept, and the other is archived.
  • An OptiFine file found in an old instance becomes the copy Xol keeps.
  • The add-ons are switched so that nothing that used to load stops loading.
  • The old folder is moved whole to archive/instances-0.2/<id> in the data folder, with a file named WHERE-DID-EVERYTHING-GO.txt. Nothing is deleted.

Where profiles come from

A profile manifest ships inside the launcher. The launcher may also receive a newer manifest from the Xol service. A remote manifest can only select things the installed build can already do. It is used only if it passes the same validation as the bundled one, its revision is not older than the one in use, and every bundled component hashes to a jar that ships in this build. Otherwise the launcher keeps what it has. Settings ▸ Support ▸ About shows the revision in use and whether it is the bundled or the remote one.