PluginBench
Skill
Pass
Audit score 90

minecraftconsoles-lce

reason-machines/trending-skills

C++ reimplementation of Minecraft Legacy Console Edition with dedicated server, LAN multiplayer, and modding support.

What is minecraftconsoles-lce?

MinecraftConsoles is a multi-platform C++ project that recreates Minecraft Legacy Console Edition (TU19) for modern Windows, macOS, and Linux. Use it to build, run, and extend a desktop Minecraft experience with keyboard/mouse controls, LAN multiplayer, and dedicated server capabilities.

  • Build and compile the project using Visual Studio 2022 or CMake on Windows x64
  • Run the client with customizable username and launch arguments (fullscreen, debug modes)
  • Host LAN multiplayer sessions with automatic network discovery on local networks
  • Deploy and configure a dedicated server with customizable server.properties settings
  • Run dedicated server in Docker containers on Linux/Wine without local compilation
  • Access keyboard/mouse and controller input mappings with full hotkey documentation

How to install minecraftconsoles-lce

npx skills add https://github.com/reason-machines/trending-skills --skill minecraftconsoles-lce
Prerequisites
  • Visual Studio 2022 with C++ desktop workload (for local compilation)
  • Git for cloning the repository
  • Windows (primary platform); macOS/Linux via Wine or Docker
  • CMake (optional, alternative to Visual Studio)
Claude Code
Cursor
Windsurf
Cline

How to use minecraftconsoles-lce

  1. 1.Clone the repository: git clone https://github.com/smartcmd/MinecraftConsoles.git
  2. 2.Open MinecraftConsoles.sln in Visual Studio 2022 and set Minecraft.Client as startup project
  3. 3.Build and run with F5, or use CMake: cmake -S . -B build && cmake --build build
  4. 4.Create username.txt in the executable directory or use -name argument to set your username
  5. 5.Launch with optional arguments like -fullscreen or -name YourUsername
  6. 6.Configure server.properties for dedicated server (port, max-players, seed, world-size)
  7. 7.Use keyboard controls (WASD to move, E for inventory, T for chat, Space to jump)

Use cases

Good for
  • Setting up a private LAN multiplayer Minecraft server for local network play
  • Compiling and extending the MinecraftConsoles codebase with custom mods or features
  • Running a dedicated server on Windows or Linux (via Docker) for persistent multiplayer worlds
  • Migrating from console Minecraft to a desktop environment with enhanced controls
  • Contributing to the open-source project by fixing build errors or adding new functionality
Who it's for
  • C++ developers and game modders
  • Minecraft enthusiasts wanting legacy console edition on PC
  • System administrators setting up dedicated game servers
  • Contributors to open-source game reimplementation projects

minecraftconsoles-lce FAQ

Do I need to compile from source or can I use a pre-built version?

You can download the nightly release .zip from GitHub releases and run Minecraft.Client.exe directly without compiling. Compilation is only needed if you want to build from source or contribute changes.

How do I set up a dedicated server?

Download the nightly dedicated server build, create a server.properties file in the same directory, configure settings like server-port and max-players, then run Minecraft.Server.exe with optional CLI arguments like -port 25565 -maxplayers 8.

Can I run the dedicated server on Linux?

Yes, using Docker. Pull the pre-built image from GHCR with ./start-dedicated-server.sh or build locally with docker compose. This runs the Windows server under Wine in a container.

What are the default LAN multiplayer ports?

TCP port 25565 for game connections and UDP port 25566 for LAN discovery. These are used automatically when hosting a world.

How do I add custom key bindings or mods?

The codebase uses standard C++ patterns for input handling. Refer to CONTRIBUTING.md in the repository for contributor guidelines and project goals for extending functionality.

Full instructions (SKILL.md)

Source of truth, from reason-machines/trending-skills.


name: minecraftconsoles-lce description: Expert skill for building, running, and extending MinecraftConsoles (Minecraft Legacy Console Edition) — a C++ multi-platform reimplementation with dedicated server, LAN multiplayer, and modding support. triggers:

  • "help me build MinecraftConsoles"
  • "how do I run the Minecraft Legacy Console Edition project"
  • "set up dedicated server for MinecraftConsoles"
  • "add keyboard mouse controls to LCE"
  • "configure server.properties for MinecraftConsoles"
  • "compile MinecraftConsoles with CMake or Visual Studio"
  • "how do I mod or contribute to MinecraftConsoles"
  • "fix build errors in MinecraftConsoles C++ project"

MinecraftConsoles (Legacy Console Edition) Skill

Skill by ara.so — Daily 2026 Skills collection.

What This Project Is

MinecraftConsoles is a C++ reimplementation/continuation of Minecraft Legacy Console Edition v1.6.0560.0 (TU19), targeting modern Windows (and unofficially macOS/Linux via Wine). Goals include:

  • Multi-platform base for modding, backports, and LCE development
  • Quality desktop experience with keyboard/mouse and controller support
  • LAN multiplayer and dedicated server software
  • Splitscreen multiplayer support

Repository: smartcmd/MinecraftConsoles
Primary language: C++
Build system: Visual Studio 2022 solution (.sln) + CMake support


Quick Start

Prerequisites

Clone

git clone https://github.com/smartcmd/MinecraftConsoles.git
cd MinecraftConsoles

Build with Visual Studio

  1. Open MinecraftConsoles.sln in Visual Studio 2022
  2. Set Startup Project to Minecraft.Client
  3. Set configuration to Debug (or Release), platform to Windows64
  4. Press F5 or Ctrl+F5 to build and run

Build with CMake (Windows x64)

# Configure
cmake -S . -B build -G "Visual Studio 17 2022" -A x64

# Build the client
cmake --build build --config Debug --target MinecraftClient

# Build the dedicated server
cmake --build build --config Debug --target MinecraftServer

See COMPILE.md in the repo for additional platform-specific notes.


Running the Client

Nightly Build (No Compile Needed)

Download the .zip from the Nightly Release, extract, and run Minecraft.Client.exe.

Setting Your Username

Create username.txt in the same directory as the executable:

Steve

Or use a launch argument:

Minecraft.Client.exe -name Steve
Minecraft.Client.exe -name Steve -fullscreen

Client Launch Arguments

ArgumentDescription
-name <username>Override in-game username
-fullscreenLaunch in fullscreen mode

Keyboard & Mouse Controls

ActionKey/Button
MoveW A S D
Jump / Fly UpSpace
Sneak / Fly DownShift (hold)
SprintCtrl (hold) or double-tap W
InventoryE
ChatT
Drop ItemQ
CraftingC (tabs: Q / E)
Attack / DestroyLeft Click
Use / PlaceRight Click
Select hotbar slot1–9 or Mouse Wheel
PauseEsc
FullscreenF11
Toggle HUDF1
Toggle Debug InfoF3
Debug OverlayF4
Toggle Debug ConsoleF6
Toggle FPS/TPS viewF5
Player list / Host OptionsTab
Accept tutorial hintEnter
Decline tutorial hintB

LAN Multiplayer

LAN multiplayer works automatically on the Windows build:

  • Hosting a world auto-advertises it on the local network
  • Other players discover sessions via Join Game menu
  • TCP port: 25565 (game connections)
  • UDP port: 25566 (LAN discovery)
  • Use the Add Server button to connect to known IPs
  • Username changes are safe — keep uid.dat to preserve your data across renames
  • Splitscreen players can join LAN/multiplayer sessions

Dedicated Server

Download Nightly Server Build

Nightly Dedicated Server

Run Directly (Windows)

Minecraft.Server.exe -name MyServer -port 25565 -ip 0.0.0.0 -maxplayers 8 -loglevel info
Minecraft.Server.exe -seed 123456789

Server CLI Arguments

ArgumentDescription
-port <1-65535>Override server-port
-ip <addr>Override server-ip (bind address)
-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>debug, info, warn, error
-help / --help / -hPrint usage and exit

server.properties Configuration

Located in the same directory as Minecraft.Server.exe. Auto-generated with defaults if missing.

server-name=DedicatedServer
server-port=25565
server-ip=0.0.0.0
max-players=8
level-name=world
level-id=world
level-seed=
world-size=classic
log-level=info
white-list=false
lan-advertise=false
autosave-interval=60

Key property notes:

KeyValuesDefaultNotes
server-port1–6553525565TCP listen port
server-ipstring0.0.0.0Bind address
server-namestringDedicatedServerMax 16 chars
max-players1–88Player slots
level-seedint64 or emptyemptyEmpty = random
world-sizeclassic|small|medium|largeclassicNew world size
log-leveldebug|info|warn|errorinfoVerbosity
autosave-interval5–360060Seconds between autosaves
white-listtrue/falsefalseEnable whitelist
lan-advertisetrue/falsefalseLAN advertisement

Dedicated Server in Docker (Linux/Wine)

Recommended: Pull from GHCR (No Local Build)

# Start (pulls latest image automatically)
./start-dedicated-server.sh

# Start without pulling
./start-dedicated-server.sh --no-pull

# Equivalent manual command
docker compose -f docker-compose.dedicated-server.ghcr.yml up -d

Local Build Mode (Optional)

Requires a locally compiled Minecraft.Server.exe:

docker compose -f docker-compose.dedicated-server.yml up -d --build

Docker Persistent Volumes

Host PathContainer PathPurpose
./server-data/server.properties/srv/mc/server.propertiesServer config
./server-data/GameHDD/srv/mc/Windows64/GameHDDWorld save data

Docker Environment Variables

VariableDefaultDescription
XVFB_DISPLAY:99Virtual display number
XVFB_SCREEN64x64x16Virtual screen size (tiny, Wine needs it)

Project Structure (Key Areas)

MinecraftConsoles/
├── MinecraftConsoles.sln       # Visual Studio solution
├── CMakeLists.txt              # CMake build definition
├── COMPILE.md                  # Detailed compile instructions
├── CONTRIBUTING.md             # Contributor guide and project goals
├── docker-compose.dedicated-server.ghcr.yml  # Docker (GHCR image)
├── docker-compose.dedicated-server.yml       # Docker (local build)
├── start-dedicated-server.sh   # Quick-start script
├── server-data/
│   ├── server.properties       # Server config (auto-generated)
│   └── GameHDD/                # World save data
└── .github/
    └── banner.png

Common C++ Patterns in This Codebase

Adding a New Key Binding (Keyboard Input)

The project added keyboard/mouse support on top of the original controller-only code. When extending input:

// Typical pattern for checking key state in the input handler
// Find the keyboard input processing file and add your key check:

bool isKeyPressed(int virtualKey) {
    return (GetAsyncKeyState(virtualKey) & 0x8000) != 0;
}

// Example: adding a new toggle key
if (isKeyPressed(VK_F7)) {
    // toggle your feature
    myFeatureEnabled = !myFeatureEnabled;
}

Registering a Launch Argument

Follow the existing -name / -fullscreen pattern:

// In the argument parsing section (typically in main or init):
for (int i = 1; i < argc; i++) {
    std::string arg = argv[i];

    if (arg == "-name" && i + 1 < argc) {
        username = argv[++i];
    }
    else if (arg == "-fullscreen") {
        launchFullscreen = true;
    }
    // Add your argument:
    else if (arg == "-myoption" && i + 1 < argc) {
        myOption = argv[++i];
    }
}

Reading server.properties

#include <fstream>
#include <sstream>
#include <map>
#include <string>

std::map<std::string, std::string> loadServerProperties(const std::string& path) {
    std::map<std::string, std::string> props;
    std::ifstream file(path);
    std::string line;

    while (std::getline(file, line)) {
        if (line.empty() || line[0] == '#') continue;
        auto eq = line.find('=');
        if (eq == std::string::npos) continue;
        std::string key = line.substr(0, eq);
        std::string val = line.substr(eq + 1);
        props[key] = val;
    }
    return props;
}

// Usage:
auto props = loadServerProperties("server.properties");
int port = std::stoi(props.count("server-port") ? props["server-port"] : "25565");
std::string serverName = props.count("server-name") ? props["server-name"] : "DedicatedServer";

Writing server.properties (Normalize / Auto-generate)

void writeServerProperties(const std::string& path,
                            const std::map<std::string, std::string>& props) {
    std::ofstream file(path);
    for (auto& [key, val] : props) {
        file << key << "=" << val << "\n";
    }
}

// Normalize level-id from level-name
std::string normalizeLevelId(const std::string& levelName) {
    std::string id = levelName;
    // Remove unsafe characters, lowercase, replace spaces with underscores
    for (char& c : id) {
        if (!std::isalnum(c) && c != '_' && c != '-') c = '_';
    }
    return id;
}

Troubleshooting

Build Fails: Missing Windows SDK

  • Open Visual Studio Installer → Modify → add Windows 10/11 SDK
  • Make sure the platform is set to Windows64 (not x86)

CMake Can't Find Visual Studio Generator

# Confirm VS 2022 is installed, then:
cmake -S . -B build -G "Visual Studio 17 2022" -A x64
# "17 2022" is the generator name for VS 2022

Game Launches But No Display / Crashes Immediately

  • Ensure you're running from the directory containing all game assets
  • Check that your GPU drivers support the required DirectX version
  • Try Debug build for more verbose error output

Server Not Visible on LAN

  • Check firewall rules allow TCP 25565 and UDP 25566
  • Verify lan-advertise=true is NOT required for dedicated servers (it's for LAN broadcast; clients discover via Join Game)
  • Ensure both client and server are on the same subnet

Docker Server: Wine Can't Display

  • The XVFB_DISPLAY env var must match what Wine uses
  • The container uses a minimal 64x64x16 virtual framebuffer — don't change this unless you have a reason

Username Reset / UID Issues

  • Do not delete uid.dat — it stores your unique player ID
  • If you rename yourself via -name or username.txt, your existing uid.dat keeps world data linked to your account

macOS / Linux (Wine)

  • Download the Windows nightly .zip
  • Run via wine Minecraft.Client.exe or CrossOver
  • Stability issues (frametime pacing) are known and community-reported; not officially supported

Contributing

Read CONTRIBUTING.md before submitting PRs. Key points:

  • Follow existing code style and naming conventions
  • Console build compatibility should not be broken without discussion
  • Security fixes are always welcome
  • Check open issues (535+) for good first tasks
  • Join the Discord for contributor discussion

Platform Support Summary

PlatformStatus
Windows (VS 2022)✅ Fully supported
macOS / Linux (Wine)⚠️ Community-reported working, unofficial
Android (Wine)⚠️ Runs with frametime issues
iOS❌ No support
Consoles⚠️ Code present, not actively maintained