Introduction
What is LCE?
Section titled “What is LCE?”LCE (Legacy Console Edition) is the version of Minecraft that 4J Studios built for Microsoft and Mojang. They ported Minecraft’s Java Edition codebase to C++11 and shipped it on Xbox 360, Xbox One (Durango), PS3, PS4 (Orbis), PS Vita, Wii U, and Nintendo Switch. It ran from 2012 until it was discontinued in favor of Bedrock Edition, but a lot of people still think it was the best version of Minecraft.
The C++ codebase that powers LCE is what this entire documentation site is about. Two community forks make that codebase available to work with:
- LCEMP (by notpies) - A source fork based on roughly TU9 / 1.2.2 that adds working LAN multiplayer and a Windows 64-bit build target
- MinecraftConsoles (by smartcmd) - A more advanced fork based on roughly TU19 / 1.6.4 with horses, the Wither boss, beacons, hoppers, scoreboards, and an entity attribute system
Version Baseline
Section titled “Version Baseline”The LCEMP fork is based on roughly the TU9 / 1.2.2 era of Legacy Console Edition. That means it has content up through:
- The End dimension and Ender Dragon boss fight
- Enchanting and brewing systems
- Villager trading
- Jungle biomes
- Anvils, ender chests, tripwires
- Ocelots, iron golems, snow golems
- All enchantments through TU9 (no Wither, no horses, no beacons)
MinecraftConsoles goes further to roughly TU19 / 1.6.4, adding the Wither boss, horses, beacons, hoppers, scoreboards, and more. The docs reference MinecraftConsoles differences where relevant.
LCEMP Features
Section titled “LCEMP Features”These are the things notpies added on top of the original console codebase:
- LAN multiplayer via TCP sockets (Winsock). The host broadcasts over UDP on port 25566, and clients discover and join over TCP on port 25565
- Block sync for breaking and placing across all connected players
- Kick system so the host can remove players
- Up to 8 players (configurable in source via
WIN64_NET_MAX_CLIENTSandWIN64_LAN_BROADCAST_PLAYERS) - Keyboard and mouse support through a full
KeyboardMouseInputclass with WASD movement, mouse look, and configurable key bindings - Gamma fix for proper brightness on PC
- Fullscreen support for the Windows 64-bit build
Codebase at a Glance
Section titled “Codebase at a Glance”The project is split into two main modules:
| Module | Role | Approximate Files |
|---|---|---|
Minecraft.World | Game logic: blocks, items, entities, world gen, networking packets, AI, crafting, enchantments, effects, storage | ~1,560 (845 headers, 715 implementations) |
Minecraft.Client | Rendering, UI (Iggy/SWF), models, particles, screens, input, textures, audio, platform layers | ~530 source files |
There’s also a Common/ directory inside Minecraft.Client that holds shared code for audio (Miles Sound System), UI (Iggy SWF framework), DLC, game rules, tutorials, networking, and more.
Build System
Section titled “Build System”The project uses CMake (minimum 3.10) with:
MinecraftWorldcompiled as a static library (.lib)MinecraftClientcompiled as a Win32 executable that links against MinecraftWorld- External dependencies: Direct3D 11, XInput, 4J Studios libraries, Iggy (SWF UI), Miles Sound System
Code Origin
Section titled “Code Origin”The codebase is a direct C++ port of Minecraft’s Java Edition. You’ll see Java naming conventions everywhere: Tile instead of Block, Mob instead of LivingEntity, GoalSelector with prioritized Goal instances for AI, shared_ptr replacing Java’s garbage collection, wstring for all text. Comments marked // 4J throughout the code indicate changes 4J Studios made for the console port, things like thread-local storage for the lighting cache, critical sections around entity lists, console-specific entity limits (max 40 boats, 200 fireballs, 300 projectiles), and platform guards for each console target.
About This Documentation
Section titled “About This Documentation”This documentation was generated by an AI that ran 40 systematic passes through the entire LCE codebase (~2,960 C++ source files). Each pass looked at different parts of the code, and later passes double-checked and corrected findings from earlier ones.
If you find errors, please open a PR on the GitHub repository. AI-generated docs will inevitably have mistakes, so community corrections are welcome and encouraged.
How to Navigate
Section titled “How to Navigate”Here’s where to go depending on what you’re looking for:
| I want to… | Go to… |
|---|---|
| Understand the overall code structure | Architecture |
| Build the project from source | Building & Compiling |
| Learn about game logic systems | Minecraft.World Overview |
| Learn about rendering and UI | Minecraft.Client Overview |
| See platform-specific code | Platform Code |
| Start modding (add blocks, items, etc.) | Modding Guide |
| Look up IDs and class indexes | Reference |
Reading Order
Section titled “Reading Order”If you’re new to the codebase, the recommended reading order is:
- This page (you’re here)
- Architecture to understand how the two modules connect
- Minecraft.World for the game logic layer
- Minecraft.Client for rendering and UI
- Modding Guide when you’re ready to make changes