OptiFine¶
You download OptiFine once, from optifine.net. Xol checks the file and keeps its own copy. From then on, every start of that Minecraft version uses it while the OptiFine add-on is on. Xol never bundles, mirrors or uploads OptiFine.
What has been tested
Xol 1.8.9 with OptiFine HD U M5 has been started on Linux test machines. OptiFine on 1.7.10 has never been started. Nothing with OptiFine has been started by the project on Windows or on a real Mac.
Why Xol cannot include it¶
OptiFine's license does not allow redistribution, and its download page is paid for by advertising. A launcher that bundled OptiFine, mirrored it or fetched it behind the page's back would break those terms. So the download is yours, once, from optifine.net's own page. The launcher says: "OptiFine's licence doesn't let launchers include it, so it comes from its own page, once."
The list of known builds holds names, sizes and checksums only. There is no download address in it.
The OptiFine add-on¶
Since 0.3.0 OptiFine is an add-on, not a profile of its own. The main screen shows an OptiFine switch next to the Minecraft version, and the same switch is in Settings ▸ Instance ▸ OptiFine as "Use OptiFine with Minecraft 1.8.9". The setting is per Minecraft version and is saved the moment it changes.
| Minecraft version | Default | What happens while it is on |
|---|---|---|
| 1.8.9 | On | Xol places its copy at <instance>/mods/OptiFine.jar right before the game starts, next to the Xol client. |
| 1.7.10 | Off | The same. While OptiFine is on, Hodgepodge and ArchaicFix, the two performance mods Xol manages there, are set aside, because Hodgepodge replaces the same rendering code. This combination has never been started. |
The line under the switch says what it will do, in plain words: "Off", "Not added yet", or the build, for example "M5". Switch it off and Xol takes its copy out of the instance at the next start. The copy Xol keeps is untouched, so switching it on again needs no download.
Switching OptiFine on before a file has been added opens the Add OptiFine dialog.
Add it, step by step¶
- Open the dialog. Any of these opens Add OptiFine: the quiet line Add OptiFine for better performance on the main screen, Settings ▸ Instance ▸ OptiFine ▸ Add OptiFine…, or switching the OptiFine add-on on. That line is the launcher's wording; Xol has measured nothing. Its close button hides the suggestion for good.
-
Press Download on the OptiFine page. When the dialog opens, Xol opens optifine.net's own page for the recommended build in a window of its own:
OptiFine_1.8.9_HD_U_M5.jarfor 1.8.9,OptiFine_1.7.10_HD_U_E7.jarfor 1.7.10. Press Download on that page. The dialog reads "Press Download on the OptiFine page. Xol adds OptiFine HD U M5 the moment it finishes." Other builds on optifine.net opens the full list in your browser instead. - Done. "OptiFine HD U M5 added." Below that the dialog says which profiles now start with it and how far the file could be checked.
The first time you press Play on a Minecraft version whose OptiFine add-on is on and has no file yet, Xol opens this dialog by itself, once ever for that version. Press Download and the game starts with OptiFine, or press Start without OptiFine. Either way the game starts when the dialog closes.
Other ways in. While the dialog is open, Xol also looks in your Downloads folder, so a file you downloaded in your own browser is added the moment the download finishes. If your browser saves somewhere else, press Choose the file… and pick the jar.
The OptiFine page window¶
The window shows optifine.net's real page, its advertising included. It only shows pages on optifine.net and refuses to open anything else. It keeps no cookies or cache after it closes, grants the page no permissions, and accepts only a download named like an OptiFine build for that Minecraft version. The downloaded file goes straight to Xol, is checked like any other file, and the window closes.
What Xol looks at in your Downloads folder¶
- Only while the Add OptiFine dialog is open. Looking starts when the dialog opens and stops when it closes. Closing the launcher window stops it too, and it gives up by itself after 30 minutes.
- It reads the list of file names in your system's Downloads folder, and never goes into folders below it.
- It looks further only at names that match
OptiFine_<Minecraft version>_HD_U_….jar(orpreview_OptiFine_…) for the selected Minecraft version. No other file is opened, read, measured or checksummed. - A match must be an ordinary file directly in that folder. A link or a folder with such a name is ignored.
- An unfinished download is left alone: a partial file beside it (
.crdownload,.part,.download,.partial,.tmp,.opdownload), an empty file, or a size that is still changing. A file counts as finished once it has not changed for a second and a half. - A finished file goes through the checks below. A refused file is reported once in the dialog, and Xol keeps looking. If several files match, the newest is tried first.
- Xol never writes, moves, renames or deletes anything in Downloads, and nothing about that folder is sent anywhere. Your download is copied; you can delete it afterwards.
How the file is checked¶
Before anything is copied, the file is inspected as data. Nothing in it is run.
| Check | Detail |
|---|---|
| File name | Must match OptiFine_<Minecraft version>_HD_U_<edition>.jar, optionally with preview_ in front and a browser's " (1)" suffix |
| Minecraft version in the name | Must be the selected version |
| Size | At most 32 MB |
| Format | Must open as a zip archive |
| Contents | Must contain OptiFine's Forge tweaker class, optifine/OptiFineForgeTweaker.class, because Xol starts OptiFine through Forge |
| Version inside the jar | The version line in changelog.txt, or else in META-INF/MANIFEST.MF, must name the selected Minecraft version. This catches a renamed jar. If the jar carries no version text, the file name is used and the launcher says so. |
| Known builds | The file's SHA-256 is compared with the list below |
| Copy | The file is copied under a temporary name, the copy's SHA-256 is compared with the inspected file, and only then is it renamed into place |
Known builds¶
Xol carries a short list of OptiFine builds. A SHA-256 is listed only where more than one independent public source agrees on it.
| File | Size in bytes | SHA-256 |
|---|---|---|
OptiFine_1.8.9_HD_U_M5.jar, the one suggested for 1.8.9 |
2,585,014 | 2739760a70fca6ae5c7dc817bcc6283f18f55e38fa23778da7f387a6b724b2c4 |
OptiFine_1.8.9_HD_U_L5.jar |
2,517,183 | b442bf55e4c703c55f5f48055d79c07eb853fcb76fa88f85587e911af4f2b084 |
preview_OptiFine_1.8.9_HD_U_M6_pre2.jar |
2,584,186 | Not known |
OptiFine_1.7.10_HD_U_E7.jar, the one suggested for 1.7.10 |
1,774,165 | 8bcd9d83de001a0591f498105f369f070c47d2c9192774d5a5b69f646e44fab4 |
| The file is | Result | What the launcher says |
|---|---|---|
| Byte for byte a listed build | Added | "Checked: it is exactly the file optifine.net publishes." |
| A listed build without a known checksum, with the listed size | Added | "The file names itself OptiFine M6 pre2. Xol has no checksum for this build, so it could not compare the two." |
| A build that is not on the list, for example a newer one | Added, on the checks in the table above | "Xol does not know OptiFine … yet, so there was no checksum to compare. The file's own version text was checked." |
| Named like a listed build, but with other bytes | Refused | "…it is not the file optifine.net publishes under that name (its checksum differs)." |
This is a sanity check, not a malware scan
A checksum match says the file is the published build. For any other file the checks only confirm that it looks like the right OptiFine build; they cannot tell whether a jar is safe. OptiFine runs with the game's privileges, like any mod. Download it only from optifine.net.
Update OptiFine¶
Open Settings ▸ Instance ▸ OptiFine ▸ Update or remove…. The dialog is titled Update OptiFine and works the same way: a newer build you download replaces the one Xol keeps.
- When Xol suggests a newer build than the one you have, the main screen says so once, with Update to and the build name. Its close button means that build is not suggested again.
- While updating, files that were already in Downloads do not count, so an old download lying there never replaces a newer build. Only a download that arrives while the dialog is open is taken.
- Choose the file… asks first when you pick an older build than the one Xol keeps: "Nothing was changed", with Keep the current build or Use the older one anyway.
- The new copy reaches the instance the next time the game starts.
Switch it off¶
Switch the OptiFine add-on off on the main screen, or in Settings ▸ Instance ▸ OptiFine. Xol takes its copy out of the instance the next time the game starts. The copy Xol keeps stays, so switching it on again needs no download. The choice is stored per Minecraft version in launcher.json.
If the build you added cannot start with Forge, the switch cannot be turned on and says "this build cannot start here".
Remove it¶
Remove OptiFine is in the same dialog. One press removes the copy Xol keeps for that Minecraft version and every copy Xol placed in an instance of that version: "OptiFine removed. Minecraft 1.8.9 starts without it. Adding it again takes the same one download."
Your original download is never touched, and neither is an OptiFine jar of your own. While a game is starting or running, nothing adds, replaces or removes OptiFine: "Close the game before adding or changing OptiFine. Your download stays where it is."
Your own OptiFine jar¶
Xol only ever replaces or removes files it placed itself. If you keep optifine.net's own file (OptiFine_….jar) in your my-mods folder with the Forge mods add-on on, Xol adds no second copy, because the game does not start with two. A file at mods/OptiFine.jar that Xol has no record of is treated as yours and left alone.
Where Xol keeps it¶
| Path | What |
|---|---|
optifine/<Minecraft version>/OptiFine.jar in the data folder |
The copy Xol keeps, one per Minecraft version |
optifine/<Minecraft version>/record.json |
File name, edition, size, SHA-256, how far it could be checked, and when it was added |
<instance>/mods/OptiFine.jar |
The copy placed for that instance, while the add-on is on |
<instance>/xol/optifine-mods.json |
Xol's note that it placed that copy. Without it, Xol treats the file as yours. |
An OptiFine file that an older launcher placed in an instance becomes the copy Xol keeps for that Minecraft version.
Every rejection message¶
A refused file is reported in the dialog, as "
| Message | Cause | What to do |
|---|---|---|
| "…" is not an OptiFine download. Pick the file named OptiFine_1.8.9_HD_U_….jar exactly as optifine.net saved it. | The file name does not match the pattern | Pick the right file, or download it again without renaming it |
| That is OptiFine for Minecraft 1.12.2; this profile is Minecraft 1.8.9. Download the 1.8.9 build. | The name carries another Minecraft version | Download the build for the selected version |
| That file could not be read. / That is not a file. | The path is unreadable or is a folder | Check the file and its permissions |
| That file is far larger than any OptiFine build, so it was not imported. | Larger than 32 MB | It is not an OptiFine jar; download it again |
| That file is not a readable jar. If the download was interrupted, download it again from optifine.net. | It does not open as a zip archive | Download it again |
| That jar does not contain OptiFine (no OptiFine tweaker class inside). | No tweaker class is present | It is not an OptiFine jar |
| The jar says it is OptiFine for Minecraft 1.7.10, not 1.8.9, whatever its file name says. It was not imported. | The version text inside disagrees with the file name | Someone renamed the jar; download the right build |
| This file says it is OptiFine M5, but it is not the file optifine.net publishes under that name (its checksum differs). It may be damaged or altered. Download it again from optifine.net. | It claims to be a known build but its bytes differ | Download it again, from optifine.net only |
| This OptiFine build has no Forge tweaker, so Forge would not load it. | The build lacks the Forge tweaker | Use another build |
| The file changed while it was being copied. Try again. | The source changed between inspection and copy | Try again once the download has finished |
| That file could not be added. Choose it yourself to see why. | Something else went wrong with a file found in Downloads | Press Choose the file… and pick it |
Brand and servers¶
With or without OptiFine, Xol reports the client brand Xol. See Multiplayer and fair play.