#!/bin/bash # Copyright (c) 2026 fithwum # All rights reserved LOGFILE=/mcserver/logs/latest.log SESSION=mcserver cd /mcserver 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 # Start the Minecraft server in a detached screen session echo "INFO ! Starting Minecraft Server in a screen session." touch "$LOGFILE" screen -L -Logfile "$LOGFILE" -dmS "$SESSION" bash -c ./run-$MC_TYPE-$MC_VERSION.sh exec tail -F "$LOGFILE"