7.2 KiB
Compile Instructions
Prerequisites
- Visual Studio 2022 with the Desktop development with C++ workload (this includes the CMake tools, MSVC toolchain, and Windows 10 SDK).
- .NET 10 SDK, required to build the FourKit plugin host (
Minecraft.Server.FourKit).- Download: https://dotnet.microsoft.com/download/dotnet/10.0 (pick the x64 SDK installer)
- The exact SDK version is pinned in
global.jsonat the repo root. - CMake will fail configure with a clear error message if .NET 10 is not installed, so you find out immediately rather than partway through a build.
- The build invokes
dotnet publish ... --runtime win-x64 --self-contained true, so the published output bundles a complete .NET 10 runtime alongside the FourKit assembly. End users running the produced server do not need to install .NET themselves. - All FourKit runtime files (DLL + .NET runtime +
hostfxr.dll) land in aruntime/subfolder next toMinecraft.Server.exe. An emptyplugins/folder is also created. Both are produced automatically by the build.
Visual Studio 2022 quick start (recommended)
VS 2022 has built-in CMake support, so there is no need to generate a .sln file by hand.
- Install the prerequisites above.
- Clone the repo with submodules. If you don't, you will get a build error!
git clone --recurse-submodules https://github.com/itsRevela/LCE-Revelations.git
- In Visual Studio:
File > Open > Folder...and select the repo root (the folder that containsCMakeLists.txt). - Wait for CMake to configure (~5 seconds on a warm cache, a few minutes on the first run while assets copy).
- Pick a build configuration in the dropdown, for example
windows64-release. Build > Build All(orF7). Targets of interest:Minecraft.Client: the game client.Minecraft.Server: the vanilla dedicated server. Standalone C++ binary, no plugin host, no .NET dependency at runtime, smallest distribution.Minecraft.Server.FourKit: the FourKit-enabled dedicated server. Bundles the .NET 10 plugin host alongside the exe (inruntime/) and creates an emptyplugins/folder for end users to drop plugin DLLs into. Building this target also triggers theMinecraft.Server.FourKit.Managedtarget which publishes the C# project.
- Use the debug target dropdown to pick
Minecraft.Client.exeor whichever server flavour you want, thenF5to launch.
Server flavours
Both server targets compile from the same source tree and produce a binary literally named Minecraft.Server.exe. The variant identity lives in the build directory:
build/<preset>/Minecraft.Server/Release/
Minecraft.Server.exe (vanilla, no plugin support)
Common/, Windows64/, ...
build/<preset>/Minecraft.Server.FourKit/Release/
Minecraft.Server.exe (FourKit-enabled, same exe name on purpose)
runtime/ (self-contained .NET 10 + Minecraft.Server.FourKit.dll)
plugins/ (empty drop point)
Common/, Windows64/, ...
The FourKit target gets the MINECRAFT_SERVER_FOURKIT_BUILD preprocessor define. Inside FourKitBridge.h, the real plugin entry points are conditional on that define; the vanilla target sees inline no-op stubs instead, so gameplay code can call FourKitBridge::Fire* unconditionally and produce the right behaviour for each flavour without per-call-site #ifdefs.
Dedicated server debug arguments
- Default debugger arguments for both
Minecraft.ServerandMinecraft.Server.FourKit:-port 25565 -bind 0.0.0.0 -name DedicatedServer
- You can override arguments in:
Project Properties > Debugging > Command Arguments
- Both server targets post-build copy the dedicated-server asset set:
Common/Media/MediaWindows64.arcCommon/resWindows64/GameHDD
CMake (Windows x64)
Configure (use your VS Community instance explicitly):
Open Developer PowerShell for VS and run:
cmake --preset windows64
Build Debug:
cmake --build --preset windows64-debug --target Minecraft.Client
Build Release:
cmake --build --preset windows64-release --target Minecraft.Client
Build vanilla Dedicated Server (Debug):
cmake --build --preset windows64-debug --target Minecraft.Server
Build vanilla Dedicated Server (Release):
cmake --build --preset windows64-release --target Minecraft.Server
Build FourKit Dedicated Server (Debug):
cmake --build --preset windows64-debug --target Minecraft.Server.FourKit
Build FourKit Dedicated Server (Release):
cmake --build --preset windows64-release --target Minecraft.Server.FourKit
Build everything (client + both server flavours):
cmake --build --preset windows64-release
Run executable:
cd .\build\windows64\Minecraft.Client\Debug
.\Minecraft.Client.exe
Run vanilla dedicated server:
cd .\build\windows64\Minecraft.Server\Debug
.\Minecraft.Server.exe -port 25565 -bind 0.0.0.0 -name DedicatedServer
Run FourKit dedicated server:
cd .\build\windows64\Minecraft.Server.FourKit\Debug
.\Minecraft.Server.exe -port 25565 -bind 0.0.0.0 -name DedicatedServer
Notes:
- Post-build asset copy is automatic for
Minecraft.Clientin CMake (Debug and Release variants). - The game relies on relative paths (for example
Common\Media\...), so launching from the output directory is required.
CMake (Linux x64 Cross-Compile with Clang)
Cross-compile Windows x64 binaries on Linux using LLVM/Clang and the Windows SDK obtained via xwin.
Prerequisites
Install the following packages (example for Ubuntu):
sudo apt install clang lld llvm cmake ninja-build rsync cargo
Install xwin for downloading the Windows SDK:
cargo install xwin
Compile
Run this (Release):
./build-linux.sh
Or, for debug:
./build-linux.sh . Debug
NixOS / Nix
For NixOS or systems with Nix installed, use the provided flake:
nix build .#client
nix build .#server
Or enter the development shell with all dependencies:
nix develop
Notes:
- Requires LLVM 15+ with clang-cl, lld-link, llvm-rc, and llvm-mt.
- Wine is required to run the compiled Windows executables on Linux.
Troubleshooting
'vswhere.exe' is not recognized: harmless warning. This appears if you ranvcvars64.batfrom a plain command prompt instead ofDeveloper PowerShell for VS. The Visual Studio Installer'svswhere.exelives atC:\Program Files (x86)\Microsoft Visual Studio\Installer\and is not on the defaultPATH. Use the Developer PowerShell shortcut, or open the repo folder directly in VS (which handles the dev env for you)..NET 10 SDK not foundat configure time: install the x64 SDK from https://dotnet.microsoft.com/download/dotnet/10.0 and re-run CMake configure (Project > Configure Cachein VS, orcmake --preset windows64from a shell).- Server starts but logs
hostfxr_initialize_for_dotnet_command_line failed: theruntime/folder next toMinecraft.Server.exeis missing or stale. Rebuild theMinecraft.Server.FourKittarget (which re-stagesruntime/), or do a clean rebuild ofMinecraft.Server.