Heads up: This is a revival of PollyMC — forked from Prism Launcher, not from fn2006's original repo. I had to change and tweak everything from scratch.
Lets you play Minecraft without a Microsoft account — add offline accounts and launch the full game with no restrictions.
- Offline accounts — no Microsoft login required
- No demo mode — offline accounts launch the full game
- Custom skins — save and load skins locally
- Offline skin agent — Java agent that serves local skins
- Setup wizard — offers offline account on first launch
- NSIS installer with upgrade support
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/c/msys64/mingw64 -S . -B build
cmake --build build -j4
cmake --install build --prefix C:/pollymc_build
makensis pollymc_installer.nsi
Requires: MSYS2 + MinGW-w64, Qt 6, CMake, Ninja, NSIS.
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -S . -B build
cmake --build build -j$(nproc)
cmake --install build --prefix /tmp/pollymc
# Package as AppImage (optional)
./linuxdeploy-x86_64.AppImage --appdir appdir --plugin qt --output appimage
Requires: Qt 6, CMake, Ninja, extra-cmake-modules, tomlplusplus, cmark, qrencode, libarchive.
brew install cmake ninja qt extra-cmake-modules cmark qrencode libarchive tomlplusplus
brew install --cask temurin@17
bash packaging/macos/build-local.sh
Output in dist-macos/ — ready-to-run .app, ZIP, DMG.
The CI auto-creates a release on every push to main. Which part of the version bumps depends on commit messages since the last tag:
| Commit contains | Bump | Example |
|---|---|---|
BREAKING CHANGE anywhere in the message |
9.0.0 → 10.0.0 |
feat: new APIBREAKING CHANGE: removes old config format |
Subject starts with feat, feature, Add, Build, or Enhance (followed by :, (, or a space) |
9.0.0 → 9.1.0 |
feat: add drag-and-drop modpack import |
Anything else — e.g. Fix:, Docs:, Chore:, or no prefix at all |
9.0.0 → 9.0.1 |
Fix: crash when loading offline skins |
Notes:
- Only the highest applicable bump is used — a
BREAKING CHANGEalways wins over afeat:, even in the same push. - Matching is case-sensitive:
feat:/feature:must be lowercase, whileAdd:/Build:/Enhance:must be capitalized as shown. - The check looks at every commit since the last tag, not just the most recent one — so one
feat:commit buried in a batch ofFix:commits still triggers a minor bump.
Example: if the last release was 9.0.0 and your push includes:
Fix: correct offline skin cache path
feat: add custom skin import from URL
Docs: update build instructions
The feat: commit triggers a minor bump → next release is 9.1.0.
Put [skip-all] anywhere in a commit message to skip all builds and release entirely.
Put [skip release] to skip only the release (builds still run, no tag created).
Prism Launcher · PolyMC · MultiMC
GPL-3.0. See LICENSE.