#!/bin/bash # ========================================== # CONFIGURATION # ========================================== CONTAINER_NAME="game-servers-mc-1" # Path to your world folder on the HOST machine (Change this to your actual path!) WORLD_PATH="./world" # ========================================== echo "==> Stopping container: $CONTAINER_NAME" docker stop "$CONTAINER_NAME" echo "==> Waiting for container to close completely..." docker wait "$CONTAINER_NAME" > /dev/null echo "==> Deleting the old world folder..." if [ -d "$WORLD_PATH" ]; then rm -rf "$WORLD_PATH" echo " Success: World folder deleted." else echo " Warning: World folder not found at $WORLD_PATH." echo " Please verify the WORLD_PATH variable inside this script!" fi # Capture the current time (in seconds since epoch) BEFORE starting BOOT_TIME=$(date +%s) echo "==> Starting container: $CONTAINER_NAME" docker start "$CONTAINER_NAME" echo "==> Waiting for Minecraft server and BlueMap to fully load..." sleep 3 # Loop until BOTH "Done" and "[BlueMap/]: Loaded!" appear in the logs while true; do # Fetch logs since boot time once per loop iteration CURRENT_LOGS=$(docker logs --since "$BOOT_TIME" "$CONTAINER_NAME" 2>&1) # Check for both strings echo "$CURRENT_LOGS" | grep -q -E "Done \(" MC_DONE=$? echo "$CURRENT_LOGS" | grep -q "\[BlueMap/\]: Loaded!" BM_DONE=$? # If both grep commands succeeded (exit code 0), break the loop if [ $MC_DONE -eq 0 ] && [ $BM_DONE -eq 0 ]; then break fi echo -n "." sleep 3 done echo -e "\n==> Server and BlueMap are up! Connecting and executing commands..." # Helper function to send commands using your exact docker rcon command send_cmd() { echo " Sending: /$1" docker exec -i "$CONTAINER_NAME" rcon-cli "$1" sleep 0.5 } # Executing commands in strict order send_cmd "worldborder center 0 0" send_cmd "worldborder set 15000" send_cmd "chunky world world" send_cmd "chunky worldborder" send_cmd "chunky radius +25c" send_cmd "chunky start" send_cmd "chunky confirm" send_cmd "bluemap purge world" echo "==> All tasks completed successfully!"