#!/bin/bash # Copyright (c) 2026 fithwum # All rights reserved LOGFILE=/mcserver/logs/latest.log SESSION=mcserver cd /mcserver # Check if a screen session is already running if screen -list | grep -q "$SESSION"; then echo "INFO ! A screen session for the Minecraft server is already running." cleanup() { echo "[INFO] Stopping Minecraft..." 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 else # Start the Minecraft server in a detached screen session echo "INFO ! Starting Minecraft Server in a screen session." touch "$LOGFILE" screen -L -Logfile "$LOGFILE" -S "$SESSION" bash -c ./run-$MC_TYPE-$MC_VERSION.sh exec tail -F "$LOGFILE" fi