Skip to content

BBCPrince/JavaUWPLauncher

Repository files navigation

JavaUWPlauncher

special thanks to Special Thanks To: https://github.com/veroxsity/JavaUWP

JavaUWPlauncher is an experimental UWP/Xbox launcher for running Minecraft: Java Edition through an embedded Java runtime. The project is designed so a distributable package does not include Mojang/Microsoft game files. Instead, it signs the user in, verifies Minecraft Java ownership through Minecraft Services, downloads required files from official metadata, verifies hashes, and launches the local Java client.

This project is unofficial and is not affiliated with, endorsed by, or supported by Microsoft, Mojang, Xbox, or Minecraft.

Goals

  • Run a Java Edition client from an Xbox-compatible UWP shell.
  • Use Microsoft device-code login so sign-in works on TV/Xbox-style devices.
  • Verify Minecraft Java ownership before downloading or launching official game files.
  • Download Minecraft client jars, libraries, version metadata, asset indexes, and asset objects from official Mojang endpoints.
  • Verify downloaded files against official SHA1 metadata where available.
  • Keep Minecraft game files, assets, generated client jars, account tokens, certificates, and private build artifacts out of git.

Current Status

Implemented:

  • UWP app shell in MC.Xbox/.
  • Embedded JVM launch path.
  • CoreWindow/EGL/GLFW shim in glfw_shim/.
  • Startup progress UI for sign-in, validation, download, JVM startup, and Fabric handoff.
  • Microsoft device-code OAuth login.
  • Xbox Live and XSTS token exchange.
  • Minecraft Services login, entitlement check, and profile fetch.
  • Runtime downloader manifest generation from Mojang/Fabric metadata.
  • Hash verification for downloaded files.
  • UWP filesystem compatibility patches for Fabric/TinyRemapper.
  • Local compatibility Fabric mod in compat_mod/.
  • Separate dev-only offline fallback package for local testing.

Known limitation:

  • Minecraft Services currently rejects unapproved Microsoft app registrations with Invalid app registration. The normal ownership-verifying build requires the app/client ID to be approved for Minecraft API access.

Repository Layout

  • MC.Xbox/ - UWP app shell, downloader, authentication flow, and embedded JVM launcher.
  • glfw_shim/ - CoreWindow/EGL/GameInput GLFW shim used by LWJGL.
  • compat_mod/ - source for the local Fabric compatibility mod.
  • patch/ - patched Fabric loader/TinyRemapper source used for UWP filesystem behavior.
  • log_configs/ - Log4j configuration used by the launcher.
  • tools/New-DownloadManifest.ps1 - generates the official download manifest.
  • build_downloader.ps1 - builds the normal ownership-verifying package.
  • build_devfallback.ps1 - builds a separate dev package that can continue offline after auth failure.

What Is Not Included

This repository intentionally does not include:

  • Minecraft client jars, libraries, assets, versions, or downloaded game files.
  • Generated modded Minecraft client jars.
  • Minecraft artwork or branding assets.
  • Microsoft OAuth tokens or Minecraft access tokens.
  • .appx/.msix build outputs.
  • Signing certificates.
  • Private runtime cache files.

Authentication Flow

The normal launcher flow is:

  1. Show Microsoft device-code login.
  2. Request Microsoft OAuth scope XboxLive.SignIn XboxLive.offline_access.
  3. Exchange the Microsoft token for an Xbox Live user token.
  4. Exchange the Xbox token for an XSTS token for rp://api.minecraftservices.com/.
  5. Exchange the XSTS token for a Minecraft Services access token.
  6. Call Minecraft entitlements to confirm Java ownership.
  7. Fetch the Minecraft profile username and UUID.
  8. Launch Minecraft with the authenticated username, UUID, access token, and --userType msa.

The launcher has no backend service. Authentication requests are made directly from the UWP app to Microsoft/Xbox/Minecraft Services. Token cache files are written only to the app's local UWP data folder and should not be shared.

Microsoft Client ID

Create a Microsoft app registration and place its application/client ID in:

msa_client_id.txt

The file should contain only the GUID, for example:

00000000-0000-0000-0000-000000000000

msa_client_id.txt is gitignored. msa_client_id.example.txt is provided as a placeholder.

Minecraft Services may reject unapproved app registrations. For a shareable ownership-verifying build, the Microsoft app/client ID must be approved for Minecraft API access.

Building

Requirements:

  • Windows with PowerShell.
  • Visual Studio or Visual Studio Build Tools with C++ tools.
  • Windows SDK.
  • JDK 21.
  • Python, used by generate_assets.py.
  • A local/private JavaUWP cache while this project is still being separated from the original prototype.

Build the normal package:

cd C:\Users\coolg\source\repos\JavaUWPlauncher
.\build.ps1

Output:

JavaUWPlauncher_downloader.appx

Build the dev fallback package:

.\build_devfallback.ps1

Output:

JavaUWPlauncher_devfallback.appx

Normal Build vs Dev Fallback Build

JavaUWPlauncher_downloader.appx is the intended shareable path. It blocks if Minecraft ownership cannot be verified.

JavaUWPlauncher_devfallback.appx is for local development only. It installs separately as Java Port Dev with package identity BanditVault.JavaPort.DevFallback. It attempts the same Microsoft/Xbox/Minecraft auth flow, but if Minecraft Services rejects the app registration, it continues with the offline DevPlayer account so rendering, downloads, controller support, and launch behavior can still be tested.

Do not present the dev fallback build as an ownership-verifying launcher.

Runtime Data

On Xbox/UWP, downloaded files and logs are stored under the app's LocalState folder, usually similar to:

Q:\Users\UserMgr0\AppData\Local\Packages\<package-id>\LocalState\JavaUWP

Useful logs:

  • mc_launch.log
  • java_output.log
  • game/logs/latest.log
  • game/xbox_compat.log

Do not share auth/msa_token_cache.json; it contains account tokens.

Legal And Distribution Notes

  • This project is an unofficial compatibility launcher.
  • Users must own Minecraft: Java Edition.
  • The normal build is intended to verify ownership before launching.
  • Do not commit or distribute Minecraft game files, Minecraft assets, generated Minecraft jars, private tokens, certificates, or proprietary runtime cache contents.
  • Third-party mods and runtime components must be reviewed for their own licenses before redistribution.
  • Minecraft, Mojang, Xbox, and Microsoft names are used only to describe interoperability targets.

Review Notes

For Microsoft/Minecraft API review, this repository demonstrates that the launcher:

  • Uses Microsoft device-code login for user authentication.
  • Requests only the Xbox Live sign-in/offline access scope needed for the Minecraft auth chain.
  • Uses Minecraft Services entitlements to verify Java ownership.
  • Downloads official game files only after authentication and verification.
  • Does not bundle Minecraft game files in source control.
  • Does not operate a token-collecting backend service.
  • Keeps a separate dev-only fallback build that is not the ownership-verifying package.

Additional review details are in docs/MINECRAFT_APPID_REVIEW.md.

About

JavaUWPLauncher is a UWP launcher project for running Minecraft Java on Xbox/UWP devices.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors