docs: Update README for project clarity and organization improvements

This commit is contained in:
veroxsity
2026-04-18 15:00:34 +01:00
parent f3021e6c4d
commit 3fdc480d1f

336
README.md
View File

@@ -1,231 +1,145 @@
![Legacy Edition Banner](.github/banner.png)
# MinecraftConsoles (Legacy Console Edition)
# Minecraft Consoles
[![Discord](https://img.shields.io/badge/Discord-Join%20Server-5865F2?logo=discord&logoColor=white)](https://discord.gg/dH8AZWGcau)
A community-maintained source port and modernization effort for Minecraft: Legacy Console Edition (TU19 codebase).
---
## IMPORTANT UPDATE
**This repo was moved to a new org!**
This project focuses on keeping the original LCE feel while improving stability, desktop usability, and multiplayer reliability.
Please change all links and references from `smartcmd/MinecraftConsoles` to `MCLCE/MinecraftConsoles` instead.
## What This Project Is
---
- A playable desktop-oriented LCE codebase
- A base for bug fixes, platform work, and careful backporting
- A long-term foundation for modding and extension
This project is based on source code of Minecraft Legacy Console Edition v1.6.0560.0 (TU19) with some fixes and improvements applied.
## Current Highlights
The current goal of MinecraftConsoles is to be a multi-platform base for further development, such as modding, backports, and anything else LCE. On top of that, we're working to make this a quality experience on Desktop with or without a controller while (long-term) retaining console support.
- Windows client and dedicated server targets
- Keyboard and mouse support
- Controller-first compatibility
- LAN discovery and multiplayer
- WAN/IP multiplayer support
- LCELive invite flow, signaling, and relay support
- Split-screen support (where applicable)
- Better diagnostics and runtime logs
See our our [Contributor's Guide](./CONTRIBUTING.md) for more information on the goals of this project.
## Platform Notes
## Download
### Client
Windows users can download our [Nightly Build](https://github.com/MCLCE/MinecraftConsoles/releases/tag/nightly)! Simply download the `.zip` file and extract it to a folder where you'd like to keep the game. You can set your username in `username.txt` (you'll have to make this file)
### Server
If you're looking for Dedicated Server software, download its [Nightly Build here](https://github.com/MCLCE/MinecraftConsoles/releases/tag/nightly-dedicated-server). Similar instructions to the client more or less, though see further down in this README for more info on that.
- Windows: primary supported build and runtime platform
- Linux/macOS: commonly run through Wine/CrossOver by community users (unofficial)
- Console code remains in-tree, but desktop stability and networking are current priorities
## Platform Support
## Quick Start (Windows)
- **Windows**: Supported for building and running the project
- **macOS / Linux**: The Windows nightly build will run through Wine or CrossOver based on community reports, but this is unofficial and not currently tested by the maintainers when pushing updates
- **Android**: VIA x86 EMULATORS (like GameNative) ONLY! The Windows nightly build does run but has stability / frametime pacing issues frequently reported
- **iOS**: No current support
- **All Consoles**: Console support remains in the code, but maintainers are not currently verifying console functionality / porting UI Changes to the console builds at this time.
1. Install Visual Studio 2022 or newer with C++ tools.
2. Open this GAME directory in Visual Studio.
3. Let CMake configure.
4. Choose a target/configuration, for example Windows64 - Debug.
5. Build and run Minecraft.Client or Minecraft.Server.
## Features
## Build With CMake
- Dedicated Server Software (`Minecraft.Server.exe`)
- Fixed compilation and execution in both Debug and Release mode on Windows using Visual Studio 2022
- Added support for keyboard and mouse input
- Added fullscreen mode support (toggle using F11)
- (WIP) Disabled V-Sync for better performance
- Added a high-resolution timer path on Windows for smoother high-FPS gameplay timing
- Device's screen resolution will be used as the game resolution instead of using a fixed resolution (1920x1080)
- LAN Multiplayer & Discovery
- Added persistent username system via `username.txt`
- Decoupled usernames and UIDs to allow username changes
- Fixed various security issues present in the original codebase
- Splitscreen Multiplayer support (connect to dedicated servers, etc)
- In-game server management (Add Server button, etc)
## 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` Use `Q` and `E` to move through tabs (cycles Left/Right)
- **Toggle View (FPS/TPS)**: `F5`
- **Fullscreen**: `F11`
- **Pause Menu**: `Esc`
- **Attack / Destroy**: `Left Click`
- **Use / Place**: `Right Click`
- **Select Item**: `Mouse Wheel` or keys `1` to `9`
- **Accept or Decline Tutorial hints**: `Enter` to accept and `B` to decline
- **Game Info (Player list and Host Options)**: `TAB`
- **Toggle HUD**: `F1`
- **Toggle Debug Info**: `F3`
- **Open Debug Overlay**: `F4`
- **Toggle Debug Console**: `F6`
## Contributors
Would you like to contribute to this project? Please read our [Contributor's Guide](CONTRIBUTING.md) before doing so! This document includes our current goals, standards for inclusions, rules, and more.
## Client Launch Arguments
| Argument | Description |
|--------------------|-----------------------------------------------------------------------------------------------------|
| `-name <username>` | Overrides your in-game username. |
| `-fullscreen` | Launches the game in Fullscreen mode |
Example:
```
Minecraft.Client.exe -name Steve -fullscreen
```
## LAN Multiplayer
LAN multiplayer is available on the Windows build
- Hosting a multiplayer world automatically advertises it on the local network
- Other players on the same LAN can discover the session from the in-game Join Game menu
- Game connections use TCP port `25565` by default
- LAN discovery uses UDP port `25566`
- Add servers to your server list with the in-game Add Server button (temp)
- Rename yourself without losing data by keeping your `uid.dat`
- Split-screen players can join in, even in Multiplayer
# Dedicated Server Software
## About `server.properties`
`Minecraft.Server` reads `server.properties` from the executable working directory (Docker image: `/srv/mc/server.properties`).
If the file is missing or contains invalid values, defaults are auto-generated/normalized on startup.
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; normalized automatically |
| `level-seed` | int64 or empty | empty | Empty = random seed |
| `world-size` | `classic\|small\|medium\|large` | `classic` | World size preset for new worlds and expansion target for existing worlds |
| `log-level` | `debug\|info\|warn\|error` | `info` | Server log verbosity |
| `autosave-interval` | `5-3600` | `60` | Seconds between autosaves |
| `white-list` | `true/false` | `false` | Enable access list checks |
| `lan-advertise` | `true/false` | `false` | LAN session advertisement |
Minimal example:
```properties
server-name=DedicatedServer
server-port=25565
max-players=8
level-name=world
level-seed=
world-size=classic
log-level=info
white-list=false
lan-advertise=false
autosave-interval=60
```
## Dedicated Server launch arguments
The server loads base settings from `server.properties`, then CLI arguments override those values.
| Argument | Description |
|----------|-------------|
| `-port <1-65535>` | Override `server-port` |
| `-ip <addr>` | Override `server-ip` |
| `-bind <addr>` | Alias of `-ip` |
| `-name <name>` | Override `server-name` (max 16 chars) |
| `-maxplayers <1-8>` | Override `max-players` |
| `-seed <int64>` | Override `level-seed` |
| `-loglevel <level>` | Override `log-level` (`debug`, `info`, `warn`, `error`) |
| `-help` / `--help` / `-h` | Print usage and exit |
Examples:
```powershell
Minecraft.Server.exe -name MyServer -port 25565 -ip 0.0.0.0 -maxplayers 8 -loglevel info
Minecraft.Server.exe -seed 123456789
```
## Dedicated Server in Docker (Wine)
This repository includes a lightweight Docker setup for running the Windows dedicated server under Wine.
### Quick Start (No Build, Recommended)
No local build is required. The container image is pulled from GHCR.
```bash
./start-dedicated-server.sh
```
`start-dedicated-server.sh` does the following:
- uses `docker-compose.dedicated-server.ghcr.yml`
- pulls latest image, then starts the container
If you want to skip pulling and just start:
```bash
./start-dedicated-server.sh --no-pull
```
Equivalent manual command:
```bash
docker compose -f docker-compose.dedicated-server.ghcr.yml up -d
```
### Local Build Mode (Optional)
Use this only when you want to run your own locally built `Minecraft.Server` binary in Docker.
**A local build of `Minecraft.Server` is required for this mode.**
```bash
docker compose -f docker-compose.dedicated-server.yml up -d --build
```
Useful environment variables:
- `XVFB_DISPLAY` (default: `:99`)
- `XVFB_SCREEN` (default: `64x64x16`, tiny virtual display used by Wine)
Fixed server runtime behavior in container:
- executable path: `/srv/mc/Minecraft.Server.exe`
- bind IP: `0.0.0.0`
- server port: `25565`
Persistent files are bind-mounted to host:
- `./server-data/server.properties` -> `/srv/mc/server.properties`
- `./server-data/GameHDD` -> `/srv/mc/Windows64/GameHDD`
## Build & Run
1. Install [Visual Studio 2022](https://aka.ms/vs/17/release/vs_community.exe) or [newer](https://visualstudio.microsoft.com/downloads/).
2. Clone the repository.
3. Open the project folder from Visual Studio.
4. Set the build configuration to **Windows64 - Debug** (Release is also ok but missing some debug features), then build and run.
### CMake (Windows x64)
Configure:
```powershell
cmake --preset windows64
```
Build client:
```powershell
cmake --build --preset windows64-debug --target Minecraft.Client
```
For more information, see [COMPILE.md](COMPILE.md).
Build dedicated server:
## Star History
```powershell
cmake --build --preset windows64-debug --target Minecraft.Server
```
[![Star History Chart](https://api.star-history.com/svg?repos=MCLCE/MinecraftConsoles&type=date&legend=top-left)](https://www.star-history.com/?spm=a2c6h.12873639.article-detail.7.7b9d7fabjNxTRk#MCLCE/MinecraftConsoles&type=date&legend=top-left)
Release builds:
```powershell
cmake --build --preset windows64-release --target Minecraft.Client
cmake --build --preset windows64-release --target Minecraft.Server
```
For full compiler/platform details, see COMPILE.md.
## Running
Client (example):
```powershell
cd .\build\windows64\Minecraft.Client\Debug
.\Minecraft.Client.exe
```
Server (example):
```powershell
cd .\build\windows64\Minecraft.Server\Debug
.\Minecraft.Server.exe -port 25565 -bind 0.0.0.0 -name DedicatedServer
```
Important: run from the output directory so relative asset paths resolve correctly.
## Client Launch Arguments
| Argument | Description |
|---|---|
| -name <username> | Override in-game username |
| -fullscreen | Start in fullscreen |
Example:
```text
Minecraft.Client.exe -name Steve -fullscreen
```
## Logging
Client logs are written next to the executable in:
- logs/game.log
- logs/game.previous.log
- logs/lcelive.log
- logs/lcelive.previous.log
Use these first when diagnosing startup, invite, signaling, relay, or join issues.
## Multiplayer Notes
- Default game port: TCP 25565
- LAN discovery: UDP 25566
- Relay/signaling paths are used when direct connectivity is blocked
- If direct joins fail, logs/lcelive.log typically shows whether fallback was used
## Dedicated Server
Minecraft.Server reads server.properties from its working directory.
CLI arguments override server.properties values.
Common flags:
- -port <1-65535>
- -ip <addr>
- -bind <addr>
- -name <name>
- -maxplayers <1-8>
- -seed <int64>
- -loglevel <debug|info|warn|error>
## Docker (Dedicated Server)
A Wine-based container flow is included.
Use the provided compose/start scripts in this GAME directory.
## Contribution Direction
The project prioritizes:
- Stability and crash reduction
- Networking reliability
- Controller and desktop UX quality
- Faithful LCE presentation and behavior
For contribution standards and scope, see CONTRIBUTING.md.