# 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) 1. Install Visual Studio 2022 (or newer) with C++ workloads. 2. Clone the repository with submodules, or initialize them after cloning: ```powershell git submodule update --init --recursive ``` 3. Open this `GAME` directory in Visual Studio. 4. Wait for CMake configure/generation to complete. 5. Select a configuration such as `Windows64 - Debug`. 6. Build and run `Minecraft.Client.exe` or `Minecraft.Server.exe`. ## Build With CMake Configure: ```powershell cmake --preset windows64 ``` Build client (Debug): ```powershell cmake --build --preset windows64-debug --target Minecraft.Client ``` Build dedicated server (Debug): ```powershell cmake --build --preset windows64-debug --target Minecraft.Server ``` Build release binaries: ```powershell 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](COMPILE.md). ## Running Client: ```powershell cd .\build\windows64\Minecraft.Client\Debug .\Minecraft.Client.exe ``` Dedicated server: ```powershell 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**: `W` `A` `S` `D` - **Jump / Fly Up**: `Space` - **Sneak / Fly Down**: `Shift` hold - **Sprint**: `Ctrl` hold or double-tap `W` - **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 `1` to `9` - **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 ` | 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: ```text 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.log` - `logs/game.previous.log` - `logs/client.log` - `logs/client.previous.log` - `logs/lcelive.log` - `logs/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: ```bash WINEDLLOVERRIDES="d3d11,dxgi=b" wine ./Minecraft.Client.exe ``` ### Invite/join reliability issues - Verify both players are on matching builds - Verify `logs/lcelive.log` on both host and joiner - Check for `peer known`, `forwarding active`, and session `closed` timing ### 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 ` - `-bind ` - `-name ` - `-maxplayers <1-8>` - `-seed ` - `-loglevel ` ## 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](CONTRIBUTING.md). Current review priority: - Stability and crash fixes - Networking reliability - Controller and desktop usability - Faithful LCE behavior/presentation