diff --git a/.github/LCRE-banner.png b/.github/LCE-Revelations-banner.png similarity index 100% rename from .github/LCRE-banner.png rename to .github/LCE-Revelations-banner.png diff --git a/README.md b/README.md index 85a5fe3c..b2dff42e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![Legacy Edition Banner](.github/LCRE-banner.png) +![LCE Revelations Banner](.github/LCE-Revelations-banner.png) # Minecraft Legacy Revelations [![Discord](https://img.shields.io/badge/Discord-Join%20Server-5865F2?logo=discord&logoColor=white)](https://discord.gg/ycYvGjWmhu) @@ -51,7 +51,7 @@ This project is based on source code of Minecraft Legacy Console Edition v1.6.05 - Fixed a critical bug where the security gate (packet buffer) was closed before the LoginPacket was sent during `placeNewPlayer`. Under high-latency connections (e.g. players connecting through tunnels or from distant regions), the LoginPacket and all login setup packets were buffered behind the cipher handshake. When the handshake completed and the gate flushed, game data arrived before the player object was initialized, causing a null pointer crash on the client - The security gate now closes after the login sequence and MC|CKey are sent, so essential setup packets arrive in plaintext before the cipher handshake completes -- **Server owners must update their dedicated server binary to this version.** Players connecting to an updated server must also use the updated client (LCRE builds that include the cipher handshake support) +- **Server owners must update their dedicated server binary to this version.** Players connecting to an updated server must also use the updated client (LCE Revelations builds that include the cipher handshake support) ### Uncapped FPS (VSync Off) @@ -117,7 +117,7 @@ proxy-protocol=true - Security events appear in the CLI with `[security]` tags - Each join shows a security summary: cipher status, token status, XUID, and real IP -**Important:** When `require-secure-client=true` and `enable-stream-cipher=true`, only the secured client (`LCREWindows64.zip`) can connect. Old/upstream clients will be blocked before receiving any game data. Set both to `false` if you want to allow all clients. +**Important:** When `require-secure-client=true` and `enable-stream-cipher=true`, only the secured client (`LCE-Revelations-Client-Win64.zip`) can connect. Old/upstream clients will be blocked before receiving any game data. Set both to `false` if you want to allow all clients. ### Player List Map Icon Color Fix @@ -215,9 +215,9 @@ proxy-protocol=true ### Dedicated Server Hardcore Mode - Dedicated server is fully compatible with `smartcmd/MinecraftConsoles` clients, even with hardcore mode -- Client (`LCREWindows64.zip`): download from the Nightly release on GitHub -- Dedicated Server (`LCREServerWindows64.zip`): download from the Nightly-Dedicated-Server release on GitHub -- Docker: pull `ghcr.io/itsrevela/minecraft-lce-dedicated-server:nightly` for server container +- Client (`LCE-Revelations-Client-Win64.zip`): download from the Nightly release on GitHub +- Dedicated Server (`LCE-Revelations-Server-Win64.zip`): download from the Nightly-Dedicated-Server release on GitHub +- Docker: pull `ghcr.io/lce-hub/lce-revelations-dedicated-server:nightly` for server container ### Screenshot Functionality @@ -225,7 +225,7 @@ proxy-protocol=true - Works in any context: main menu, pause menu, settings, inventory, crafting, and during gameplay - A local-only chat message is shown to the player when in-game -Proper implementation of Hardcore Mode in LCRE! +Proper implementation of Hardcore Mode in LCE Revelations! - 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 diff --git a/build-start-dedicated-server.sh b/build-start-dedicated-server.sh index 7f6bd3a7..57afe4d9 100644 --- a/build-start-dedicated-server.sh +++ b/build-start-dedicated-server.sh @@ -3,7 +3,7 @@ set -euo pipefail SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" COMPOSE_FILE="${SCRIPT_DIR}/docker-compose.dedicated-server.yml" -SERVICE_NAME="minecraft-lce-dedicated-server" +SERVICE_NAME="lce-revelations-dedicated-server" PERSIST_DIR="${SCRIPT_DIR}/server-data" if [[ ! -f "${COMPOSE_FILE}" ]]; then diff --git a/docker-compose.dedicated-server.ghcr.yml b/docker-compose.dedicated-server.ghcr.yml index cd6e45f0..e03d6bf9 100644 --- a/docker-compose.dedicated-server.ghcr.yml +++ b/docker-compose.dedicated-server.ghcr.yml @@ -1,7 +1,7 @@ services: - minecraft-lce-dedicated-server: - image: ghcr.io/itsrevela/minecraft-lce-dedicated-server:nightly - container_name: minecraft-lce-dedicated-server + lce-revelations-dedicated-server: + image: ghcr.io/lce-hub/lce-revelations-dedicated-server:nightly + container_name: lce-revelations-dedicated-server restart: unless-stopped tty: true stdin_open: true diff --git a/docker-compose.dedicated-server.yml b/docker-compose.dedicated-server.yml index 23caf26f..50debaf1 100644 --- a/docker-compose.dedicated-server.yml +++ b/docker-compose.dedicated-server.yml @@ -1,11 +1,15 @@ services: - minecraft-lce-dedicated-server: + lce-revelations-dedicated-server: build: context: . dockerfile: docker/dedicated-server/Dockerfile args: - MC_RUNTIME_DIR: ${MC_RUNTIME_DIR:-x64/Minecraft.Server/Release} - container_name: minecraft-lce-dedicated-server + # Bakes the vanilla (no plugin support) server flavour built with CMake. + # The FourKit-enabled flavour is intentionally NOT shipped via Docker + # yet because hosting .NET 10 self-contained through Wine has not been + # smoke-tested. Run the FourKit server natively on Windows instead. + MC_RUNTIME_DIR: ${MC_RUNTIME_DIR:-build/windows64/Minecraft.Server/Release} + container_name: lce-revelations-dedicated-server restart: unless-stopped tty: true stdin_open: true diff --git a/docker/dedicated-server/Dockerfile b/docker/dedicated-server/Dockerfile index 14760afd..26ccbce2 100644 --- a/docker/dedicated-server/Dockerfile +++ b/docker/dedicated-server/Dockerfile @@ -1,8 +1,17 @@ FROM debian:bookworm-slim ARG DEBIAN_FRONTEND=noninteractive -# basically, it only works with a Release build.(libs are not included in Debug build) -ARG MC_RUNTIME_DIR=x64/Minecraft.Server/Release +# Build the server with CMake first (see COMPILE.md). The build context is +# the repo root, and the path below points at the **vanilla** server's Release +# output. The vanilla flavour is shipped because it has no .NET dependency +# and runs reliably under Wine. +# +# A FourKit-enabled image is intentionally NOT built here yet: hosting the +# .NET 10 self-contained runtime through Wine has not been smoke-tested. +# Once it's validated, this Dockerfile can be extended (or split into a +# second variant) to bake in the runtime/ and plugins/ folders from +# build/windows64/Minecraft.Server.FourKit/Release. +ARG MC_RUNTIME_DIR=build/windows64/Minecraft.Server/Release RUN dpkg --add-architecture i386 \ && apt-get update \ diff --git a/start-dedicated-server.sh b/start-dedicated-server.sh index 8169601c..4bf91d35 100644 --- a/start-dedicated-server.sh +++ b/start-dedicated-server.sh @@ -3,7 +3,7 @@ set -euo pipefail SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" COMPOSE_FILE="${SCRIPT_DIR}/docker-compose.dedicated-server.ghcr.yml" -SERVICE_NAME="minecraft-lce-dedicated-server" +SERVICE_NAME="lce-revelations-dedicated-server" PERSIST_DIR="${SCRIPT_DIR}/server-data" if [[ ! -f "${COMPOSE_FILE}" ]]; then