| #!/bin/bash |
| set -e |
|
|
| |
| retry() { |
| local n=1 max=4 delay=5 |
| until "$@"; do |
| if [ $n -ge $max ]; then |
| echo "[ERROR] Command failed after $max attempts: $*" |
| exit 1 |
| fi |
| echo "[RETRY] Attempt $n/$max failed. Retrying in ${delay}s..." |
| sleep $delay |
| n=$((n + 1)) |
| delay=$((delay * 2)) |
| done |
| } |
|
|
| |
| echo "[*] Fetching Minecraft Bedrock download URL..." |
|
|
| MINECRAFT_PAGE=$(curl -fsSL \ |
| --retry 3 --retry-delay 3 \ |
| -H "Accept-Language: en-US,en;q=0.9" \ |
| -H "Accept: text/html" \ |
| -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" \ |
| "https://www.minecraft.net/en-us/download/server/bedrock") |
|
|
| |
| MINECRAFT_URL=$(echo "$MINECRAFT_PAGE" | grep -oP 'https://[^"]+bin-linux/[^"]+\.zip' | head -1) |
|
|
| if [ -z "$MINECRAFT_URL" ]; then |
| MINECRAFT_URL=$(echo "$MINECRAFT_PAGE" | grep -oP 'https://minecraft\.azureedge\.net/bin-linux/[^"]+' | head -1) |
| fi |
|
|
| if [ -z "$MINECRAFT_URL" ]; then |
| MINECRAFT_URL=$(echo "$MINECRAFT_PAGE" | grep -oP 'https://[^"]*bedrock[^"]*linux[^"]*\.zip' | head -1) |
| fi |
|
|
| if [ -z "$MINECRAFT_URL" ]; then |
| echo "[ERROR] Could not find Minecraft Bedrock download URL." |
| echo " Minecraft.net may have changed its page layout." |
| echo " Page snippet:" |
| echo "$MINECRAFT_PAGE" | grep -i "bedrock" | head -5 |
| exit 1 |
| fi |
|
|
| echo "[OK] Found URL: $MINECRAFT_URL" |
| echo "[*] Downloading Minecraft Bedrock server..." |
| retry curl -fsSL --retry 3 -o /tmp/bedrock-server.zip "$MINECRAFT_URL" |
|
|
| echo "[*] Extracting..." |
| unzip -o /tmp/bedrock-server.zip -d /data/bedrock-server > /dev/null |
| rm /tmp/bedrock-server.zip |
| chmod +x /data/bedrock-server/bedrock_server |
| echo "[OK] Minecraft Bedrock server installed." |
|
|
| |
| echo "[*] Downloading playit agent..." |
| retry curl -fsSL --retry 3 \ |
| -o /usr/local/bin/playit \ |
| "https://github.com/playit-cloud/playit-agent/releases/latest/download/playit-linux-amd64" |
| chmod +x /usr/local/bin/playit |
| echo "[OK] playit agent installed: $(playit --version 2>/dev/null || echo 'version unknown')" |
|
|
| echo "" |
| echo "===== prepare.sh complete =====" |
|
|