mirror of
https://forge.banditvault.co.uk/racoon/MinecraftConsoles.git
synced 2026-07-19 10:28:08 +00:00
228 lines
6.8 KiB
Markdown
228 lines
6.8 KiB
Markdown
# 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 <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:
|
|
|
|
```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 <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](CONTRIBUTING.md).
|
|
|
|
Current review priority:
|
|
|
|
- Stability and crash fixes
|
|
- Networking reliability
|
|
- Controller and desktop usability
|
|
- Faithful LCE behavior/presentation
|