fix: linux cross-compiling

This commit is contained in:
neoapps-dev 2026-04-08 13:07:04 +03:00
parent 9babdac928
commit 0ddac15fad
2 changed files with 52 additions and 3 deletions

View file

@ -19,7 +19,7 @@
#include "../../../Minecraft.World/DisconnectPacket.h"
#include "../../Minecraft.h"
#include <windns.h>
#pragma comment(lib, "Dnsapi.lib")
#pragma comment(lib, "dnsapi.lib")
#include "../4JLibs/inc/4J_Profile.h"
#include <string>

View file

@ -125,9 +125,11 @@ do_build() {
do_install() {
info "Installing to $INSTALL_DIR..."
mkdir -p "$INSTALL_DIR"/{client,server}
mkdir -p "$INSTALL_DIR"/{client,server,fourkit}
cp "$BUILD_DIR/Minecraft.Client/Minecraft.Client.exe" "$INSTALL_DIR/client/"
cp "$BUILD_DIR/Minecraft.Server/Minecraft.Server.exe" "$INSTALL_DIR/server/"
cp "$BUILD_DIR/Minecraft.Server/$BUILD_TYPE/Minecraft.Server.exe" "$INSTALL_DIR/server/"
cp "$BUILD_DIR/Minecraft.Server.FourKit/$BUILD_TYPE/Minecraft.Server.exe" "$INSTALL_DIR/fourkit/"
cp "$BUILD_DIR/Minecraft.Server.FourKit/bin/$BUILD_TYPE/Minecraft.Server.*" "$INSTALL_DIR/fourkit/"
for asset in iggy_w64.dll Common music Windows64 Windows64Media; do
[[ -e "$BUILD_DIR/Minecraft.Client/$asset" ]] && \
cp -r "$BUILD_DIR/Minecraft.Client/$asset" "$INSTALL_DIR/client/" || true
@ -136,11 +138,17 @@ do_install() {
[[ -e "$BUILD_DIR/Minecraft.Server/$asset" ]] && \
cp -r "$BUILD_DIR/Minecraft.Server/$asset" "$INSTALL_DIR/server/" || true
done
for asset in iggy_w64.dll Common Windows64 runtime plugins; do
[[ -e "$BUILD_DIR/Minecraft.Server.Fourkit/$BUILD_TYPE/$asset" ]] && \
cp -r "$BUILD_DIR/Minecraft.Server.FourKit/$BUILD_TYPE/$asset" "$INSTALL_DIR/fourkit/" || true
done
write_client_launcher
write_server_launcher
write_fourkit_launcher
success "Installed to $INSTALL_DIR"
info "Run the client: $INSTALL_DIR/minecraft-lce-client"
info "Run the server: $INSTALL_DIR/minecraft-lce-server"
info "Run the FourKit server: $INSTALL_DIR/minecraft-lce-fourkit"
}
write_client_launcher() {
@ -209,6 +217,47 @@ LAUNCHER
chmod +x "$INSTALL_DIR/minecraft-lce-server"
}
write_fourkit_launcher() {
cat > "$INSTALL_DIR/minecraft-lce-fourkit" <<LAUNCHER
#!/usr/bin/env bash
set -euo pipefail
GAME_DIR="$INSTALL_DIR/fourkit"
SERVER_PORT="\${MC_PORT:-25565}"
SERVER_BIND_IP="\${MC_BIND:-0.0.0.0}"
PERSIST_DIR="\${MC_DATA_DIR:-\$HOME/.local/share/minecraft-lce-fourkit}"
export WINEARCH=win64
export WINEPREFIX="\${WINEPREFIX:-\$HOME/.local/share/minecraft-lce-fourkit-prefix}"
export WINEDLLOVERRIDES="winemenubuilder.exe=d"
export WINEESYNC=1
export WINEFSYNC=1
mkdir -p "\$PERSIST_DIR" "\$WINEPREFIX"
WORK_DIR="\$(mktemp -d)"
trap 'rm -rf "\$WORK_DIR"' EXIT
cp -rs "\$GAME_DIR"/* "\$WORK_DIR/"
chmod -R u+w "\$WORK_DIR"
mkdir -p "\$PERSIST_DIR/GameHDD"
for file in server.properties banned-players.json banned-ips.json; do
if [[ ! -f "\$PERSIST_DIR/\$file" ]]; then
[[ -f "\$WORK_DIR/\$file" ]] && cp "\$WORK_DIR/\$file" "\$PERSIST_DIR/\$file" || echo "[]" > "\$PERSIST_DIR/\$file"
fi
ln -sf "\$PERSIST_DIR/\$file" "\$WORK_DIR/\$file"
done
rm -rf "\$WORK_DIR/Windows64/GameHDD" 2>/dev/null || true
ln -sf "\$PERSIST_DIR/GameHDD" "\$WORK_DIR/Windows64/GameHDD"
cd "\$WORK_DIR"
if [[ -z "\${DISPLAY:-}" ]]; then
export DISPLAY=":99"
Xvfb "\$DISPLAY" -nolisten tcp -screen 0 64x64x16 &
XVFB_PID=\$!
trap 'kill \$XVFB_PID 2>/dev/null || true; rm -rf "\$WORK_DIR"' EXIT
sleep 1
fi
exec wine "\$WORK_DIR/Minecraft.Server.exe" -port "\$SERVER_PORT" -bind "\$SERVER_BIND_IP" "\$@"
LAUNCHER
chmod +x "$INSTALL_DIR/minecraft-lce-fourkit"
}
BUILD_DIR="$SOURCE_DIR/build/windows64-clang"
mkdir -p "$BUILD_DIR"
info "Revelations LCE v$VERSION build script"