Last active
November 25, 2020 19:07
-
-
Save notyal/a720d59d030a3b4a913a3831c73d46fb to your computer and use it in GitHub Desktop.
Script to run a Minecraft server in a screen session
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
cd /opt/ftbr-minecraft | |
sudo -u minecraft _0="$0" /bin/bash ./serverstarter.sh $* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# partially borrowed from https://minecraft.gamepedia.com/Tutorials/Server_startup_script | |
# Config | |
############################################################################### | |
# java binary | |
_java=/usr/lib/jvm/adoptopenjdk-8-hotspot-jre-amd64/bin/java | |
# screen session name | |
_screenS=ftbr-minecraft | |
############################################################################### | |
start_server() { | |
screen -dmS $_screenS \ | |
$_java \ | |
-server \ | |
-XX:+UseG1GC \ | |
-XX:+UnlockExperimentalVMOptions \ | |
-Xmx4096M \ | |
-Xms4096M \ | |
-jar forge-1.12.2-14.23.5.2846-universal.jar nogui | |
} | |
############################################################################### | |
# set script name to calling script if _0 is set | |
[[ "$_0" == "" ]] && _0="$0" | |
stop_server() { | |
screen -p 0 -S $_screenS -X eval 'stuff "say Shutting down and saving map..."\\015' | |
screen -p 0 -S $_screenS -X eval 'stuff "save-all"\\015' | |
screen -p 0 -S $_screenS -X eval 'stuff "stop"\\015' | |
} | |
check_screen() { | |
screen -S $_screenS -Q 'select .' > /dev/null 2>&1 | |
return $? | |
# 0 = running, 1 = not-running | |
} | |
usage() { | |
echo "Usage: $_0 [command]" | |
echo | |
echo "Commands:" | |
echo " start - start server" | |
echo " stop - stop server" | |
echo " check - check if server is running" | |
echo " attach - attach to screen session" | |
} | |
# parse commands | |
case $1 in | |
""|start) | |
if check_screen; then | |
echo | |
echo "----------------------------------------------" | |
echo "SERVER RUNNING: The server is already running." | |
echo "----------------------------------------------" | |
echo | |
usage | |
echo | |
else | |
echo "Starting minecraft server in screen..." | |
start_server | |
echo "Use '$_0 help' to see commands." | |
fi | |
echo "Use '$_0 attach' to reattach." | |
;; | |
stop) | |
if check_screen; then | |
echo "Stopping server..." | |
stop_server | |
else | |
echo "Server is not running." | |
fi | |
;; | |
check|status) | |
if check_screen; then | |
echo "Server is running." | |
echo "Use '$_0 attach' to reattach." | |
else | |
echo "Server is not running." | |
echo "Use '$_0 start' to start." | |
fi | |
;; | |
attach) | |
if check_screen; then | |
echo | |
echo "Use [ctrl-a] [d] to detach." | |
echo | |
sleep 1 | |
screen -S $_screenS -x | |
else | |
echo "Server is not running." | |
echo "Use '$_0 start' to start." | |
fi | |
;; | |
help|usage) | |
usage | |
;; | |
*) | |
echo "Error: invalid command, '$1'." | |
echo | |
usage | |
exit 1 | |
;; | |
esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment