#!/bin/bash # Copyright (c) 2026 fithwum # All rights reserved LOG_FILE=/vs_server/server/data/Logs/server-main.log SESSION=server # cd /vs_server/server echo "INFO ! A screen session for the Vintage-Story server is already running." cleanup() { echo "[INFO] Stopping Vintage-Story ..." screen -S "$SESSION" -X $SESSION "stop$(printf '\r')" # Wait up to 60 seconds for i in {1..60}; do if ! screen -list | grep -q "$SESSION"; then break fi sleep 1 done # Kill it if it's still alive screen -S "$SESSION" -X quit 2>/dev/null || true exit 0 } trap cleanup SIGINT SIGTERM # Start the Minecraft server in a detached screen session echo "INFO ! Starting Vintage-Story Server in a screen session." touch "$LOG_FILE" screen -L -Logfile "$LOG_FILE" -dmS "$SESSION" bash -c dotnet /vs_server/server/VintagestoryServer.dll --data-path /vs_server/server/data exec tail -F "$LOG_FILE"