Portable version of your favorite block game.
Find a file
Tropical 1421d6c68c
docs(readme): specify AVX2 support for x86-64 on shiggy
Clarified architecture support for ui_backend.
2026-04-23 21:58:57 -05:00
.devcontainer add git to dockerfile 2026-04-11 21:09:38 -05:00
.github New CI setup & Little Patch (#53) 2026-04-17 11:29:09 -05:00
.github-assets docs(readme): one more button 2026-04-12 10:57:05 -05:00
docs New CI setup & Little Patch (#53) 2026-04-17 11:29:09 -05:00
scripts rework build system dependencies 2026-04-14 13:13:57 -05:00
subprojects New CI setup & Little Patch (#53) 2026-04-17 11:29:09 -05:00
targets New CI setup & Little Patch (#53) 2026-04-17 11:29:09 -05:00
.clang-format replace mentions of 4jcraft with portable lce 2026-04-11 20:20:22 -05:00
.git-blame-ignore-revs add a blamignore for the last 3 commits 2026-03-13 17:12:26 -05:00
.gitattributes chore: add .gitattributes for LF normalization 2026-03-09 22:01:02 +11:00
.gitignore Remove flake.lock from .gitignore 2026-04-13 09:37:12 -07:00
.gitmodules Added Doxygen + GitHub Pages 2026-03-13 23:00:35 -04:00
CONTRIBUTING.md 4jcraft-redirect-1: removed 4jcraft mentions & added a disclaimer for 2026-04-12 09:25:47 -07:00
flake.nix New CI setup & Little Patch (#53) 2026-04-17 11:29:09 -05:00
meson.build New CI setup & Little Patch (#53) 2026-04-17 11:29:09 -05:00
meson.options New CI setup & Little Patch (#53) 2026-04-17 11:29:09 -05:00
README.md docs(readme): specify AVX2 support for x86-64 on shiggy 2026-04-23 21:58:57 -05:00

Portable LCE


This project is a heavily modified version of the Minecraft Console Legacy Edition codebase, aimed at porting old Minecraft (TU19/1.6.1) to different platforms and refactoring the codebase to improve organization and use modern C++ features.

Status

Linux Windows macOS
app desktop desktop desktop
ui java, shiggy1 java, shiggy1 java
fs std std std
renderer gl gl gl
sound miniaudio miniaudio miniaudio
input sdl2 sdl2 sdl2
thread std std std
game stub stub stub
network stub stub stub
storage stub stub stub
profile stub stub stub
leaderboard stub stub stub

Tip

This table describes the current backend used for each game component on each platform. If a backend is stub, that means that the game uses a stubbed implementation and the feature is unsupported at the moment. In some cases (e.g. leaderboards and profile) it makes sense to use a stubbed implementation, since we don't have access to console services like Xbox live on desktop operating systems. In other cases, it is used temporarily while work is done to properly implement the feature (such as storage for world/DLC saving and loading).

These platforms are currently work-in-progress:

  • Android: Game runs, but the port predates many refactors and therefore can't be easily upstreamed at the moment. ui-backend=java only.
  • Emscripten: Works except for audio. Predates a major refactor, and requires a rebase. ui-backend=java only.

Join our community:

Building (Linux)

Prerequisites

System Libraries

Debian/Ubuntu:

sudo apt-get install -y build-essential libsdl2-dev libgl-dev libglu1-mesa-dev libpthread-stubs0-dev

Arch/Manjaro:

sudo pacman -S base-devel pkgconf sdl2-compat mesa glu

Fedora/Red Hat/Nobara:

sudo dnf install gcc gcc-c++ make SDL2-devel mesa-libGL-devel mesa-libGLU-devel openssl-devel

Toolchain

This project requires a C++23 compiler with full standard library support.

If your distro ships GCC 15+, you're good - just use the system compiler:

meson setup build

If your distro ships an older GCC: install LLVM with libc++ and use the provided toolchain file:

# Debian/Ubuntu
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 20
sudo apt install libc++-20-dev libc++abi-20-dev
# Fedora/RHEL (if needed)
sudo dnf install clang lld libcxx-devel libcxxabi-devel

Then configure with the LLVM native file (see Configure & Build below).

Meson + Ninja

Install Meson and Ninja:

pip install meson ninja

Or follow the Meson quickstart guide.

Docker (alternative)

If you don't want to install dependencies, use the included devcontainer. Open the project in VS Code with the Dev Containers extension, or build manually:

docker build -t portable-lce-dev .devcontainer/
docker run -it --rm -v $(pwd):/workspaces/portable-lce -w /workspaces/portable-lce portable-lce-dev bash

Configure & Build

# If using system GCC 15+
meson setup build

# If using LLVM/libc++
meson setup --native-file ./scripts/llvm_native.txt build

# Compile
meson compile -C build

The binary is output to:

./build/targets/app/Minecraft.Client

Clean

To perform a clean compilation:

meson compile --clean -C build

...or to reconfigure an existing build directory:

meson setup --native-file ./scripts/llvm_native.txt build --reconfigure

...or to hard reset the build directory:

rm -r ./build
meson setup --native-file ./scripts/llvm_native.txt build

Running

Game assets are automatically copied to the build output directory during compilation. Run from that directory:

./build/targets/app/Minecraft.Client

Generative AI Policy

Submitting code to this repository authored by generative AI tools (LLMs, agentic coding tools, etc...) is strictly forbidden (see CONTRIBUTING.md). Pull requests that are clearly vibe-coded or written by an LLM will be closed. Contributors are expected to both fully understand the code that they write and have the necessary skills to maintain it.


  1. -Dui_backend=shiggy supports the x86-64 architecture with AVX2 extensions only. ↩︎