The client¶
The Xol client is a Forge mod that ships inside the launcher and is installed into the Xol 1.8.9 and Xol 1.7.10 profiles. It draws a heads-up display from your own client state and gives you a settings screen and a HUD editor. The current version is 0.2.0.
Opening it¶
| How | Where it works |
|---|---|
| Right Shift | In a world, with no other screen open. The key is a normal Minecraft key binding named Open Xol settings, in the Xol category of Options ▸ Controls, and can be rebound there. |
| The small Xol button in the top left corner | On the title screen and on the pause menu. This makes the settings and the HUD editor reachable outside a world; the editor then shows sample values. |
The settings screen opens first. Edit HUD in its top right corner opens the HUD editor.
What it consists of¶
| Part | Page |
|---|---|
| The settings screen: search, module switches, every setting | Settings screen |
| The HUD editor: drag, scale, snap, reset | HUD editor |
| Layouts, and the export and import file | Layouts, export and import |
| Thirteen modules | Modules |
Ground rules¶
- Only FPS is on by default. Every other module is off until you switch it on.
- Every module can be switched off, per instance.
- Display only. Modules read what the vanilla game already shows you and draw it differently. Two modules also write something local: Toggle sprint holds the vanilla Sprint key binding, and Zoom changes your own field of view. Neither sends anything. See Multiplayer and fair play.
- No network connections. The client makes none of its own.
- The HUD hides with the vanilla HUD. It is not drawn while F1 hides the interface or while the F3 debug screen is open.
- Settings are per instance. They are stored in
xol/config.jsoninside the instance folder and saved whenever a Xol screen closes.
How it hooks into the game¶
Almost everything is a Forge event: the client tick, key and mouse input, the FOV update, the overlay render passes, screen buttons, and received chat. There are two mixins, in full:
- The join-time client brand. The text sent in the standard brand message reads
Xolinstead of Forge'sfml,forge. The debug screen and crash reports keep the loader's own brand. - Two draw calls inside the chat's draw method, used by Chat appearance for the background opacity and the text shadow. Both pass straight through while that module is off.
The mod is client-side only and declares that servers never need it. The HUD path is written to allocate nothing per frame while the displayed values are unchanged; text is cached and rebuilt only when a value changes.
What has been checked in a running game¶
Client 0.2.0 was run on 1.8.9 (GUI scales 1 to 3) and on 1.7.10, on Linux without a graphics card, with real mouse and keyboard input sent by a test tool. The modules, the settings screen and the HUD editor were exercised that way.
These parts are in the build, but so far have only been compiled and unit-tested, not exercised in a running game:
- capturing a key for a key setting (used by Zoom)
- the hex colour field
- renaming, duplicating and deleting layouts
- scaling a module by dragging its corner handle
- GUI scale 4
- the settings screen under Minecraft's Unicode font
- some interactions on 1.7.10
If one of them misbehaves for you, that is useful to know: contact@xol.dev.
Two things are planned and not present: an HSV colour picker (today there are swatches and a hex field), and the reader for the launcher's remote.json. See the roadmap.