Goal: Allow players to type and display text in any language supported by Unicode, including Chinese, Japanese, Korean, Thai, Arabic, Korean, Hindi, and more. This covers all text surfaces: chat editor, chat messages, signs (in-world and editor), world name/seed, server address/port fields, and all Iggy Flash UI text fields. Multi-language support: Two complementary rendering systems were added to handle Unicode text across the entire client: 1. Iggy UI (Flash-based text fields): A new UIUnicodeBitmapFont class serves Java Minecraft's glyph page PNGs (glyph_00.png-glyph_FF.png) through Iggy's bitmap font provider API. Registered as the global fallback font with metrics matching the Mojangles bitmap font for correct baseline alignment. When the primary bitmap font lacks a glyph, it returns IGGY_GLYPH_INVALID and Iggy seamlessly falls back to the unicode bitmap font. 2. Legacy C++ Font renderer (chat editor, in-world signs): Revived the commented-out unicode glyph page system in Font.cpp. Characters not in the bitmap font texture are rendered from glyph page PNGs loaded on demand, with proper texture switching mid-string. 3. ChatScreen input: Removed the restrictive acceptableLetters filter so all printable Unicode characters are accepted in chat. Languages now supported for text input and rendering: - Japanese (Hiragana, Katakana, Kanji) - Chinese (Simplified and Traditional) - Korean (Hangul) - Thai - Arabic - Hindi (Devanagari) - Russian (Cyrillic) - already worked via bitmap font - Greek - already worked via bitmap font - Polish, Czech, Turkish (Extended Latin) - already worked via bitmap font - Armenian, Georgian, and other scripts covered by glyph pages Security fixes: - Fixed memset under-initialization of Font::charWidths (zeroed 460 bytes instead of 460*sizeof(int)=1840 bytes, leaving entries 115+ uninitialized) - pre-existing bug - Added bounds checks to all UIUnicodeBitmapFont callbacks to reject glyph IDs outside [0, 65535], preventing OOB array access - Added bounds check in Font::width() section-sign fallback path to prevent OOB read on charWidths[] with high codepoints - Blocked Unicode bidirectional override characters (U+202A-202E, U+2066-2069) in chat input to prevent message spoofing Memory leak fix: - Fixed SignTileEntity::load allocating wchar_t[256] with new[] on every sign load without freeing. Replaced with stack allocation. Debug logging: - Added [SIGN] prefixed logging for sign save/update operations - Added [CHAT] prefixed logging for chat send/receive operations Files changed: - UIUnicodeBitmapFont.h/.cpp (new) - Iggy bitmap font for glyph pages - UIBitmapFont.cpp - Return IGGY_GLYPH_INVALID for unknown chars - UIFontData.h/.cpp - Added hasGlyph() method - UIController.h/.cpp - Load and register unicode bitmap fallback font - UITTFFont.h/.cpp - Added registerAsDefaultFonts parameter - Font.h/.cpp - Revived unicode glyph page rendering system - ChatScreen.cpp - Accept all Unicode input, block bidi overrides - Gui.cpp - Chat display debug logging - ClientConnection.cpp - Sign update debug logging - SignTileEntity.cpp - Sign save logging, memory leak fix |
||
|---|---|---|
| .github | ||
| .vscode | ||
| cmake | ||
| docker/dedicated-server | ||
| include/lce_filesystem | ||
| Minecraft.Client | ||
| Minecraft.Server | ||
| Minecraft.World | ||
| x64 | ||
| .clang-format | ||
| .clang-tidy | ||
| .gitattributes | ||
| .gitignore | ||
| build-start-dedicated-server.sh | ||
| CMakeLists.txt | ||
| COMPILE.md | ||
| CONTRIBUTING.md | ||
| docker-build-dedicated-server.sh | ||
| docker-compose.dedicated-server.ghcr.yml | ||
| docker-compose.dedicated-server.yml | ||
| MinecraftConsoles.sln | ||
| README.md | ||
| start-dedicated-server.sh | ||
| Update-NightlyRelease.ps1 | ||
MinecraftConsoles (Legacy Console Edition)
If you have any questions regarding this fork, this is my Fluxer server (similar to a Discord server):
This project is based on source code of Minecraft Legacy Console Edition v1.6.0560.0 (TU19) with some fixes and improvements applied.
Latest:
Added copy+paste support for IP/Port, world names, world seeds, server names, signs, etc.
- Just use control+v to paste from your clipboard!
Dedicated server releases support Hardcore Mode!
- Dedicated server is fully compatible with
smartcmd/MinecraftConsolesclients, even with hardcore mode! - Client (
LCEWindows64.zip): download from the Nightly release on GitHub - Dedicated Server (
LCEServerWindows64.zip): download from the Nightly-Dedicated-Server release on GitHub - Docker: pull
ghcr.io/itsrevela/minecraft-lce-dedicated-server:nightlyfor server container
In-game screenshot functionality with F2!
- pressing F2 will save a screenshot to a
screenshotsfolder in your root game directory - a local-only chat message is shown to the player notifying the screenshot filename that was saved
Proper implementation of Hardcore Mode in LCE!
- difficulty slider included in create world menu
- difficulty slider forces "Difficulty: Hardcore" on world load
- singleplayer: host death, force no respawn, on exit deletes world
- multiplayer: host death = world delete upon exit --- joiner death = only exit available, persists upon rejoin (no respawn option)
- multiplayer fixes: added fix to prevent host from using exit-without-saving loophole for nonhost players that died
- to-do: hardcore hearts texture
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.
See our our Contributor's Guide for more information on the goals of this project.
Download
Windows users can download our Nightly Build! 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)
If you're looking for Dedicated Server software (with hardcore-mode functionality), download its Nightly Build here. Similar instructions to the client more or less, though see further down in this README for more info on that.
Platform Support
- 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: 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.
Features
- 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
- Dedicated Server Software (
Minecraft.Server.exe) - 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:
WASD - Jump / Fly (Up):
Space - Sneak / Fly (Down):
Shift(Hold) - Sprint:
Ctrl(Hold) or Double-tapW - Inventory:
E - Chat:
T - Drop Item:
Q - Crafting:
CUseQandEto 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 Wheelor keys1to9 - Accept or Decline Tutorial hints:
Enterto accept andBto decline - Game Info (Player list and 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> |
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
25565by 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
Parts of this feature are based on code from LCEMP (thanks!)
Dedicated Server Software
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.
./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:
./start-dedicated-server.sh --no-pull
Equivalent manual command:
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.
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
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:
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:
Minecraft.Server.exe -name MyServer -port 25565 -ip 0.0.0.0 -maxplayers 8 -loglevel info
Minecraft.Server.exe -seed 123456789
Build & Run
- Install Visual Studio 2022.
- Clone the repository.
- Open the project by double-clicking
MinecraftConsoles.sln. - Make sure
Minecraft.Clientis set as the Startup Project. - Set the build configuration to Debug (Release is also ok but missing some debug features) and the target platform to Windows64, then build and run.
CMake (Windows x64)
cmake -S . -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Debug --target MinecraftClient
For more information, see COMPILE.md.
Contributors
Would you like to contribute to this project? Please read our Contributor's Guide before doing so! This document includes our current goals, standards for inclusions, rules, and more.

