Skip to content

PommeMC/Client

Repository files navigation

Pomme

A high-performance Minecraft client written in Rust

Discord · Issues · Releases


Pomme is a from-scratch Minecraft: Java Edition client built entirely in Rust. It connects to vanilla servers, renders the world through Vulkan, and handles physics, networking, and UI without any Mojang code. The goal is a lightweight, performant alternative to the official Java client.

pomme-launcher

Features

  • Vulkan rendering -chunk meshing, frustum culling, water/lava, sky, block overlays, hand animation

  • Vanilla-exact physics -sprinting, swimming, drowning, collision, all matched against decompiled source

  • Full protocol support -connects to 26.1.1 servers via azalea-protocol, handles chunk streaming, block updates, chat

  • Microsoft authentication -sign in with your Microsoft account, tokens stored in the OS keyring

  • HUD & menus -health, hunger, air bubbles, hotbar, F3 debug, chat, pause menu, options, server list

  • Launcher -Tauri-based launcher with frosted glass UI, multi-account management, Mojang patch notes, installation manager

Architecture

pomme-client/    # Minecraft client (Rust, Vulkan)
pomme-launcher/  # Launcher app (Tauri, React, TypeScript)

The client is a standalone binary that receives launch arguments from the launcher. The launcher handles authentication, asset downloading, version management, and spawns the client with the appropriate flags.

Building

Client

Requires the Vulkan SDK and a Rust toolchain.

Can be built with pnpm (recommended):

pnpm client:build-release

or with cargo:

cargo build -p pomme-client --release

Launcher

Requires Node.js and pnpm.

pnpm install
pnpm launcher:build-release

Running

Via the launcher (recommended)

pnpm launcher:dev

Standalone client

Running the standalone client requires minecraft assets, for which you have 2 options:

  1. Run the launcher and install the latest supported release. Then you can do:

    pnpm client:dev -- --username Steve --quick-access-multiplayer localhost

    or with cargo:

    cargo run -p pomme-client -- --username Steve --quick-access-server localhost
  2. If you're on linux, extract the vanilla 26.1.1 assets from .minecraft/ to reference/:

    mkdir -p reference/assets/indexes
    mkdir -p reference/assets/objects
    mkdir -p reference/versions/26.1.1/extracted
    mkdir -p reference/game-dir
    
    # 30 is the asset index id for 26.1.1
    cp ~/.minecraft/assets/indexes/30.json reference/assets/indexes/26.1.1.json
    cp -r ~/.minecraft/assets/objects/. reference/assets/objects/
    cp ~/.minecraft/versions/26.1.1/26.1.1.jar reference/versions/26.1.1/
    unzip reference/versions/26.1.1/26.1.1.jar 'assets/*' -d reference/versions/26.1.1/extracted/

    Then you can run the client with:

    pnpm client:dev -- --version 26.1.1 \
      --assets-dir $PWD/reference/assets \
      --versions-dir $PWD/reference/versions \
      --game-dir $PWD/reference/game-dir

    or with cargo:

    cargo run -p pomme-client -- --version 26.1.1 \
      --assets-dir $PWD/reference/assets \
      --versions-dir $PWD/reference/versions \
      --game-dir $PWD/reference/game-dir

Contributing

Contributions are welcome. Please open an issue first to discuss what you'd like to change.

License

This project is licensed under the GNU General Public License v3.0 or later (GPL-3.0-or-later).

It is not affiliated with or endorsed by Mojang Studios or Microsoft. Minecraft is a trademark of Mojang Studios.

The allocator crate is licensed under the MIT License and is a port of the gpu-allocator crate by Traverse Research.

Third-Party Licenses

Portions of this project include third-party code under separate licenses. See THIRD_PARTY_LICENSES.md for details.

Community

Discord Sponsor

Star History Chart

About

A Minecraft client written in Rust from scratch

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors