Skip to content

Latest commit

 

History

History
105 lines (79 loc) · 8.53 KB

File metadata and controls

105 lines (79 loc) · 8.53 KB

Contributing Guide

中文 (简体, 繁體) | English

Build XYML

Requirements

To build the XYML launcher, you need to install JDK 17 (or higher). You can download it here: Download Liberica JDK.

After installing the JDK, make sure the JAVA_HOME environment variable points to the required JDK directory. You can check the JDK version that JAVA_HOME points to like this:

Windows

PowerShell:

PS > & "$env:JAVA_HOME/bin/java.exe" -version
openjdk version "25" 2025-09-16 LTS
OpenJDK Runtime Environment (build 25+37-LTS)
OpenJDK 64-Bit Server VM (build 25+37-LTS, mixed mode, sharing)
Linux/FreeBSD
> $JAVA_HOME/bin/java -version
openjdk version "25" 2025-09-16 LTS
OpenJDK Runtime Environment (build 25+37-LTS)
OpenJDK 64-Bit Server VM (build 25+37-LTS, mixed mode, sharing)
macOS
> /usr/libexec/java_home --exec java -version
openjdk version "25" 2025-09-16 LTS
OpenJDK Runtime Environment (build 25+37-LTS)
OpenJDK 64-Bit Server VM (build 25+37-LTS, mixed mode, sharing)

Get XYML Source Code

  • You can get the latest source code via Git:
    git clone https://github.com/MinecraftSTL/XYML.git
    cd XYML
  • You can manually download a specific version of the source code from the GitHub Release page.

Build XYML

To build XYML, switch to the root directory of the XYML project and run the following command:

./gradlew clean makeExecutables

The built XYML program files are located in the XYML/build/libs subdirectory under the project root.

Debug Options

Warning

This document describes XYML's internal features, which we do not guarantee to be stable and may be modified or removed at any time.

Please use these features with caution, as improper use may cause XYML to behave abnormally or even crash.

XYML provides a series of debug options to control the behavior of the launcher.

These options can be specified via environment variables or JVM parameters. If both are present, JVM parameters will override the environment variable settings.

Environment Variable JVM Parameter Function Default Value Additional Notes
XYML_JAVA_HOME Specifies the Java used to launch XYML Only effective for exe/sh
XYML_JAVA_OPTS Specifies the default JVM parameters when launching XYML Only effective for exe/sh
XYML_FORCE_GPU Specifies whether to force GPU-accelerated rendering false
XYML_ANIMATION_FRAME_RATE Specifies the animation frame rate of XYML Matches display refresh rates of 90 Hz or higher; otherwise 60 Overridden by -Dxyml.swing.animationFrameDelayMillis
XYML_LANGUAGE Specifies the default language of XYML Uses the system default language
XYML_UI_SCALE Specifies the UI scaling for XYML Uses the system's current scaling Supports scale factor (1.5), percentage (150%), or DPI (144dpi).
XYML_SKIP_OFFLINE_USERNAME_CHECK Disables illegal offline username checks false Set to true; logs a warning and may prevent joining servers or crash the game.
-Dxyml.dir=<path> Specifies the current data folder of XYML ./.xyml
-Dxyml.home=<path> Specifies the user data folder of XYML Windows: %APPDATA%\.xyml
Linux/BSD: $XDG_DATA_HOME/xyml
macOS: ~Library/Application Support/xyml
-Dxyml.swing.animationFrameDelayMillis=<milliseconds> Specifies the Swing animation timer delay in milliseconds Matches display refresh rates of 90 Hz or higher; otherwise 16 Must be a positive integer
-Dxyml.self_integrity_check.disable=true Disables self-integrity checks during updates
-Dxyml.bmclapi.override=<url> Specifies the API Root for BMCLAPI https://bmclapi2.bangbang93.com
-Dxyml.discoapi.override=<url> Specifies the API Root for foojay Disco API https://api.foojay.io/disco/v3.0
-Dxyml.update_source.override=<url> Specifies the channel update-source template for XYML https://github.com/MinecraftSTL/XYML/releases/download/release-channels/xyml-update-{channel}.json {channel} is replaced before the request
-Dxyml.authlibinjector.location=<path> Specifies the location of the authlib-injector JAR file Uses the built-in authlib-injector
-Dxyml.native.encoding=<encoding> Specifies the native encoding Uses the system's native encoding
-Dxyml.microsoft.auth.id=<App ID> Specifies the Microsoft OAuth App ID Uses the built-in Microsoft OAuth App ID
-Dxyml.curseforge.apikey=<Api Key> Specifies the CurseForge API key Uses the built-in CurseForge API key
-Dxyml.native.backend=<auto/jna/none> Specifies the native backend used by XYML auto
-Dxyml.hardware.fastfetch=<true/false> Specifies whether to use fastfetch for hardware detection true