File: README.md
Installation
- All downloads and instructions for Prism Launcher can be found on our Website.
- Last build status can be found in the GitHub Actions tab (this also includes the pull requests status).
Development Builds
Please understand that these builds are not intended for most users. There may be bugs, and other instabilities. You have been warned.
There are development builds available through:
- GitHub Actions (includes builds from pull requests opened by contributors)
- nightly.link (this will always point only to the latest version of develop)
These have debug information in the binaries, so their file sizes are relatively larger.
Prebuilt Development builds are provided for Linux, Windows and macOS.
On Linux, we also offer our own Flatpak nightly repository. Most software centers are able to install it by opening this link.
Community & Support
Feel free to create a GitHub issue if you find a bug or want to suggest a new feature. We have multiple community spaces where other community members can help you:
- Our Discord server:
- Our Matrix space:
- Our Subreddit:
Translations
The translation effort for Prism Launcher is hosted on Weblate and information about translating Prism Launcher is available at https://github.com/PrismLauncher/Translations.
Building
If you want to build Prism Launcher yourself, check the build instructions.
Sponsors & Partners
We thank all the wonderful backers over at Open Collective! Support Prism Launcher by becoming a backer.
Thanks to JetBrains for providing us a few licenses for all their products, as part of their Open Source program.
Thanks to Weblate for hosting our translation efforts.
Thanks to Netlify for providing us their excellent web services, as part of their Open Source program.
Thanks to the awesome people over at MacStadium, for providing M1-Macs for development purposes!
Forking/Redistributing/Custom builds policy
You are free to fork, redistribute and provide custom builds as long as you follow the terms of the license (this is a legal responsibility), and if you made code changes rather than just packaging a custom build, please do the following as a basic courtesy:
- Make it clear that your fork is not Prism Launcher and is not endorsed by or affiliated with the Prism Launcher project (https://prismlauncher.org).
- Go through CMakeLists.txt and change Prism Launcher's API keys to your own or set them to empty strings (
"") to disable them (this way the program will still compile but the functionality requiring those keys will be disabled).
If you have any questions or want any clarification on the above conditions please make an issue and ask us.
If you are just building Prism Launcher for your distribution, please make sure to set the Launcher_BUILD_PLATFORM to a slug representing your distribution. Examples are archlinux, fedora and nixpkgs.
Note that if you build this software without removing the provided API keys in CMakeLists.txt you are accepting the following terms and conditions:
If you do not agree with these terms and conditions, then remove the associated API keys from the CMakeLists.txt file by setting them to an empty string ("").
License [](LICENSE)
All launcher code is available under the GPL-3.0-only license.
The logo and related assets are under the CC BY-SA 4.0 license.
File: cmake/vcpkg-ports/vcpkg-tool-meson/README.md
The only difference between this and the upstream vcpkg port is the addition of universal-osx.patch. It's very annoying we need to bundle this entire tree to do that.
-@getchoo
File: libraries/README.md
Third-party libraries
This folder has third-party or otherwise external libraries needed for other parts to work.
javacheck
Simple Java tool that prints the JVM details - version and platform bitness.
Do what you want with it. It is so trivial that noone cares.
launcher
Java launcher part for Minecraft.
It does the following:
- Waits for a launch script on stdin.
- Consumes the launch script you feed it.
- Proceeds with launch when it gets the
launchercommand.
If "abort" is sent, the process will exit.
This means the process is essentially idle until the final command is sent. You can, for example, attach a profiler before you send it.
The standard and legacy launchers are available.
standardcan handle launching any Minecraft version, at the cost of some extra featureslegacyenables (custom window icon and title).legacyis intended for use with Minecraft versions < 1.6 and is deprecated.
Example (some parts have been censored):
mod legacyjavafixer-1.0
mainClass net.minecraft.launchwrapper.Launch
param --username
param CENSORED
param --version
param Prism Launcher
param --gameDir
param /home/peterix/minecraft/FTB/17ForgeTest/minecraft
param --assetsDir
param /home/peterix/minecraft/mmc5/assets
param --assetIndex
param 1.7.10
param --uuid
param CENSORED
param --accessToken
param CENSORED
param --userProperties
param {}
param --userType
param mojang
param --tweakClass
param cpw.mods.fml.common.launcher.FMLTweaker
windowTitle Prism Launcher: 172ForgeTest
windowParams 854x480
userName CENSORED
sessionId token:CENSORED:CENSORED
launcher standardAvailable under GPL-3.0-only (with classpath exception), sublicensed from its original Apache-2.0 codebase
libnbtplusplus
libnbt++ is a free C++ library for Minecraft's file format Named Binary Tag (NBT). It can read and write compressed and uncompressed NBT files and provides a code interface for working with NBT data.
See github repo.
Available either under LGPL version 3 or later.
LocalPeer
Library for making only one instance of the application run at all times.
BSD licensed, derived from QtSingleApplication.
Changes are made to make the code more generic and useful in less usual conditions.
murmur2
Canonical implementation of the murmur2 hash, taken from SMHasher.
Public domain (the author disclaimed the copyright).
rainbow
Color functions extracted from KGuiAddons. Used for adaptive text coloring.
Available either under LGPL version 2.1 or later.
tomlplusplus
A TOML language parser. Used by Forge 1.14+ to store mod metadata.
See github repo.
Licenced under the MIT licence.
qdcss
A quick and dirty css parser, used by NilLoader to store mod metadata.
Translated (and heavily trimmed down) from the original Java code from NilLoader
Licensed under LGPL version 3.
File: nix/README.md
Prism Launcher Nix Packaging
Installing a stable release (nixpkgs)
Prism Launcher is packaged in nixpkgs since 22.11.
Check the NixOS Wiki for up-to-date instructions.
Installing a development release (flake)
We use cachix to cache our development and release builds.
If you want to avoid rebuilds you may add the Cachix bucket to your substitutors, or use --accept-flake-config
to temporarily enable it when using nix commands.
Example (NixOS):
{
nix.settings = {
trusted-substituters = [ "https://prismlauncher.cachix.org" ];
trusted-public-keys = [
"prismlauncher.cachix.org-1:9/n/FGyABA2jLUVfY+DEp4hKds/rwO+SCOtbOkDzd+c="
];
};
}Installing the package directly
After adding github:PrismLauncher/PrismLauncher to your flake inputs, you can access the flake's packages output.
Example:
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
prismlauncher = {
url = "github:PrismLauncher/PrismLauncher";
# Optional: Override the nixpkgs input of prismlauncher to use the same revision as the rest of your flake
# Note that this may break the reproducibility mentioned above, and you might not be able to access the binary cache
#
# inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{ nixpkgs, prismlauncher, ... }:
{
nixosConfigurations.foo = nixpkgs.lib.nixosSystem {
modules = [
./configuration.nix
(
{ pkgs, ... }:
{
environment.systemPackages = [ prismlauncher.packages.${pkgs.system}.prismlauncher ];
}
)
];
};
};
}Using the overlay
Alternatively, if you don't want to use our packages output, you can add our overlay to your nixpkgs instance.
This will ensure Prism is built with your system's packages.
[!WARNING]
Depending on what revision of nixpkgs your system uses, this may result in binaries that differ from the abovepackagesoutput
If this is the case, you will not be able to use the binary cache
Example:
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
prismlauncher = {
url = "github:PrismLauncher/PrismLauncher";
# Optional: Override the nixpkgs input of prismlauncher to use the same revision as the rest of your flake
# Note that this may break the reproducibility mentioned above, and you might not be able to access the binary cache
#
# inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{ nixpkgs, prismlauncher, ... }:
{
nixosConfigurations.foo = nixpkgs.lib.nixosSystem {
modules = [
./configuration.nix
(
{ pkgs, ... }:
{
nixpkgs.overlays = [ prismlauncher.overlays.default ];
environment.systemPackages = [ pkgs.prismlauncher ];
}
)
];
};
};
}Installing the package ad-hoc (`nix shell`, `nix run`, etc.)
You can simply call the default package of this flake.
Example:
nix run github:PrismLauncher/PrismLauncher
nix shell github:PrismLauncher/PrismLauncher
nix profile install github:PrismLauncher/PrismLauncherInstalling a development release (without flakes)
We use Cachix to cache our development and release builds.
If you want to avoid rebuilds you may add the Cachix bucket to your substitutors.
Example (NixOS):
{
nix.settings = {
trusted-substituters = [ "https://prismlauncher.cachix.org" ];
trusted-public-keys = [
"prismlauncher.cachix.org-1:9/n/FGyABA2jLUVfY+DEp4hKds/rwO+SCOtbOkDzd+c="
];
};
}Installing the package directly (`fetchTarball`)
We use flake-compat to allow using this Flake on a system that doesn't use flakes.
Example:
{ pkgs, ... }:
{
environment.systemPackages = [
(import (
builtins.fetchTarball "https://github.com/PrismLauncher/PrismLauncher/archive/develop.tar.gz"
)).packages.${pkgs.system}.prismlauncher
];
}Using the overlay (`fetchTarball`)
Alternatively, if you don't want to use our packages output, you can add our overlay to your instance of nixpkgs.
This results in Prism using your system's libraries
Example:
{ pkgs, ... }:
{
nixpkgs.overlays = [
(import (
builtins.fetchTarball "https://github.com/PrismLauncher/PrismLauncher/archive/develop.tar.gz"
)).overlays.default
];
environment.systemPackages = [ pkgs.prismlauncher ];
}Installing the package ad-hoc (`nix-env`)
You can add this repository as a channel and install its packages that way.
Example:
nix-channel --add https://github.com/PrismLauncher/PrismLauncher/archive/develop.tar.gz prismlauncher
nix-channel --update prismlauncher
nix-env -iA prismlauncher.prismlauncherPackage variants
Both Nixpkgs and this repository offer the following packages:
prismlauncher- The preferred build, wrapped with everything necessary to run the launcher and Minecraftprismlauncher-unwrapped- A minimal build that allows for advanced customization of the launcher's runtime environment
Customizing wrapped packages
The wrapped package (prismlauncher) offers some build parameters to further customize the launcher's environment.
The following parameters can be overridden:
additionalLibs(default:[ ]) Additional libraries that will be added toLD_LIBRARY_PATHadditionalPrograms(default:[ ]) Additional libraries that will be added toPATHcontrollerSupport(default:isLinux) Turn on/off support for controllers on Linux (macOS will always have this)gamemodeSupport(default:isLinux) Turn on/off support for Feral GameMode on Linuxjdks(default:[ jdk21 jdk17 jdk8 ]) Java runtimes added toPRISMLAUNCHER_JAVA_PATHSvariablemsaClientID(default:null, requires full rebuild!) Client ID used for Microsoft AuthenticationtextToSpeechSupport(default:isLinux) Turn on/off support for text-to-speech on Linux (macOS will always have this)
File: program_info/README.md
Prism Launcher Program Info
This is Prism Launcher's program info which contains information about:
- Application name and logo (and branding in general)
- Various URLs and API endpoints
- Desktop file