6.3 KiB
Minecraft Consoles
A community-maintained source port and modernization effort for Minecraft: Legacy Console Edition (TU19 codebase).
The goal is simple: preserve the original LCE gameplay feel while making it practical, stable, and reliable on modern desktop setups.
Project Goals
- Keep LCE identity and behavior intact
- Improve runtime stability and crash resistance
- Improve desktop UX (controller + keyboard/mouse)
- Improve multiplayer reliability (LAN, WAN, relay)
- Provide a solid base for future extensions/modding
Feature Snapshot
| Area | Status |
|---|---|
| Windows Client | Available |
| Windows Dedicated Server | Available |
| LAN Discovery/Join | Available |
| WAN/IP Join | Available |
| LCELive Invites/Signaling/Relay | Available |
| Keyboard + Mouse | Available |
| Controller Support | Available |
| Split-screen (where applicable) | Available |
Platform Compatibility
| Platform | Build Support | Runtime Support | Notes |
|---|---|---|---|
| Windows | Yes | Yes | Primary platform |
| Linux | Cross-compile + Wine | Community-tested | Unofficial runtime path |
| macOS | No native build | Community-tested via Wine/CrossOver | Unofficial runtime path |
| Consoles | Code remains in tree | Not currently validated by maintainers | Desktop priority |
Quick Start (Visual Studio)
- Install Visual Studio 2022 (or newer) with C++ workloads.
- Clone the repository with submodules, or initialize them after cloning:
git submodule update --init --recursive
- Open this
GAMEdirectory in Visual Studio. - Wait for CMake configure/generation to complete.
- Select a configuration such as
Windows64 - Debug. - Build and run
Minecraft.Client.exeorMinecraft.Server.exe.
Build With CMake
Configure:
cmake --preset windows64
Build client (Debug):
cmake --build --preset windows64-debug --target Minecraft.Client
Build dedicated server (Debug):
cmake --build --preset windows64-debug --target Minecraft.Server
Build release binaries:
cmake --build --preset windows64-release --target Minecraft.Client
cmake --build --preset windows64-release --target Minecraft.Server
For cross-compile and Linux/Nix details, see COMPILE.md.
Running
Client:
cd .\build\windows64\Minecraft.Client\Debug
.\Minecraft.Client.exe
Dedicated server:
cd .\build\windows64\Minecraft.Server\Debug
.\Minecraft.Server.exe -port 25565 -bind 0.0.0.0 -name DedicatedServer
Important: launch from the output directory so relative asset paths resolve correctly.
Controls (Keyboard & Mouse)
- Movement:
WASD - Jump / Fly Up:
Space - Sneak / Fly Down:
Shifthold - Sprint:
Ctrlhold or double-tapW - Inventory:
E - Chat:
T - Drop Item:
Q - Crafting:
C - Toggle View:
F5 - Fullscreen:
F11 - Pause Menu:
Esc - Attack / Destroy: left click
- Use / Place: right click
- Select Item: mouse wheel or
1to9 - Player List / Host Options:
Tab - Toggle HUD:
F1 - Toggle Debug Info:
F3 - Open Debug Overlay:
F4 - Toggle Debug Console:
F6
Client Launch Arguments
| Argument | Description |
|---|---|
-name <username> |
Override in-game username |
-fullscreen |
Launch in fullscreen |
When signed in to LCELive, the Windows64 client uses your LCELive username in game. If you are signed out, it falls back to username.txt, then Player. The -name launch argument still overrides both for local testing.
Example:
Minecraft.Client.exe -name Steve -fullscreen
Multiplayer Defaults
- Game port: TCP
25565 - LAN discovery: UDP
25566 - Relay/signaling fallback is used when direct paths are unavailable
Logging
Logs are written next to the executable in logs:
logs/game.loglogs/game.previous.loglogs/client.loglogs/client.previous.loglogs/lcelive.loglogs/lcelive.previous.log
client.log is enabled for Windows64 client release builds too. It captures the game-wide app.DebugPrintf stream: world, packet, storage, audio, UI, and gameplay diagnostics. If networking fails, inspect logs/lcelive.log first.
Troubleshooting
Startup fails under Wine
Try Wine built-in D3D11 path instead of DXVK:
WINEDLLOVERRIDES="d3d11,dxgi=b" wine ./Minecraft.Client.exe
Invite/join reliability issues
- Verify both players are on matching builds
- Verify
logs/lcelive.logon both host and joiner - Check for
peer known,forwarding active, and sessionclosedtiming
Missing media/SWF errors
Ensure game is launched from the correct output folder with Common/Media present.
Dedicated Server
Minecraft.Server loads server.properties from its working directory.
If the file is missing or contains invalid values, defaults are auto-generated or normalized on startup. CLI arguments override properties.
Important keys:
| Key | Values / Range | Default | Notes |
|---|---|---|---|
server-port |
1-65535 |
25565 |
Listen TCP port |
server-ip |
string | 0.0.0.0 |
Bind address |
server-name |
string, max 16 chars | DedicatedServer |
Host display name |
max-players |
1-8 |
8 |
Public player slots |
level-name |
string | world |
Display world name |
level-id |
safe ID string | derived from level-name |
Save folder ID |
level-seed |
int64 or empty | empty | Empty means random seed |
world-size |
classic, small, medium, large |
classic |
World size preset |
log-level |
debug, info, warn, error |
info |
Server log verbosity |
autosave-interval |
5-3600 |
60 |
Seconds between autosaves |
white-list |
true or false |
false |
Enable access list checks |
lan-advertise |
true or false |
false |
LAN session advertisement |
Common flags:
-port <1-65535>-ip <addr>-bind <addr>-name <name>-maxplayers <1-8>-seed <int64>-loglevel <debug|info|warn|error>
Docker (Dedicated Server)
This repo includes Wine-based Docker flows for dedicated server hosting.
Use the compose/start scripts in this GAME directory.
Contributing
Before opening PRs, read CONTRIBUTING.md.
Current review priority:
- Stability and crash fixes
- Networking reliability
- Controller and desktop usability
- Faithful LCE behavior/presentation