mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2026-08-15 13:04:36 +00:00
59 lines
1.5 KiB
Bash
Executable file
59 lines
1.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
REPO_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
|
# shellcheck source=tools/mcc-env.sh
|
|
source "$REPO_ROOT/tools/mcc-env.sh"
|
|
# shellcheck source=.skills/mcc-integration-testing/scripts/common.sh
|
|
source "$SCRIPT_DIR/common.sh"
|
|
|
|
VERSION="${1:-1.21.11-Vanilla}"
|
|
SERVER_DIR="${MCC_SERVERS:?}/$VERSION"
|
|
PROPS_FILE="$SERVER_DIR/server.properties"
|
|
SESSION_NAME="mc-${VERSION//./_}"
|
|
|
|
if [[ ! -d "$SERVER_DIR" ]]; then
|
|
echo "Server directory not found: $SERVER_DIR" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -f "$SERVER_DIR/eula.txt" ]] || ! grep -Eq '^eula=true$' "$SERVER_DIR/eula.txt"; then
|
|
echo "Missing accepted EULA in $SERVER_DIR/eula.txt" >&2
|
|
exit 1
|
|
fi
|
|
|
|
server_running() {
|
|
mc-list | grep -Fq "$SESSION_NAME"
|
|
}
|
|
|
|
upsert_property() {
|
|
local key="$1"
|
|
local value="$2"
|
|
|
|
if grep -Eq "^${key}=" "$PROPS_FILE"; then
|
|
sed_in_place "s#^${key}=.*#${key}=${value}#" "$PROPS_FILE"
|
|
else
|
|
printf '%s=%s\n' "$key" "$value" >> "$PROPS_FILE"
|
|
fi
|
|
}
|
|
|
|
if [[ ! -f "$PROPS_FILE" ]]; then
|
|
mc-start "$VERSION"
|
|
wait_for_server_ready "$VERSION"
|
|
mc-stop "$VERSION" --confirm
|
|
wait_for_server_stop "$VERSION"
|
|
fi
|
|
|
|
if server_running; then
|
|
mc-stop "$VERSION" --confirm
|
|
wait_for_server_stop "$VERSION"
|
|
fi
|
|
|
|
upsert_property "online-mode" "false"
|
|
upsert_property "enforce-secure-profile" "false"
|
|
upsert_property "enable-rcon" "true"
|
|
upsert_property "rcon.port" "25575"
|
|
upsert_property "rcon.password" "test123"
|
|
|
|
echo "Configured $VERSION for persistent offline testing"
|