Minecraft

Minecraft

Da ich mehrfach das Problem mit dem Start Stop Script hatte, dachte ich mir das ganze richtig in eine init. zu setzten.

[sourcecode lang=”bash”]
sudo vim /etc/init.d/minecraft

#!/bin/bash
#Directory of Minecraft
DIR=/home/minecraft
#Your Max. RAM for Minecraft
MAX=2048M
#Your Min. RAM for Minecraft
MIN=768M

#File because Bukkit or Minecraft
CRAFT=minecraft_server.jar

echo "\n"

case "$1" in
start)
is_it_running=`screen -ls | grep minecraft`
if [ "$is_it_running" != "" ]
then
echo "*** There is already a screen called ‘minecraft’ running. Aborting!"
else
echo "*** Starting minecraft-Server on screen ‘minecraft’"
cd $DIR
screen -L -A -m -d -S minecraft java -Xms$MIN -Xmx$MAX -jar $CRAFT nogui

status=`screen -ls | grep minecraft`
if [ "$status" == "" ]
then
echo "*** Starting failed!"
else
echo "*** Server started successfully!"
echo "*** You may now connect to console via ‘screen -r minecraft’"
echo $status
fi
fi
echo "\n";;
stop)
echo "*** Looking for running minecraft-Server via ‘screen’"
is_it_running=`screen -ls | grep minecraft`
if [ "$is_it_running" != "" ]
then
echo "*** Running minecraft-Server found:" $is_it_running
echo "*** Saving chunks with ‘save-all’"
screen -S minecraft -X stuff $’save-all\n’
echo "*** Sending message to players, that server will shutdown in 30 sec"
screen -S minecraft -X stuff $’say Server will shut down in 30 sec\n’
echo "*** Message sent. Wait 30 sec …"
sleep 30
echo ""
echo "*** Stopping" $is_it_running "now."
screen -S minecraft -X stuff $’stop\n’
sleep 5
status_off=`screen -ls | grep minecraft`
if [ "$status_off" == "" ]
then
echo "*** minecraft-Server stopped!" $status_off
else
echo "*** Something went wrong!" $status_off
fi
else
echo "*** No screen called ‘minecraft’ found. Is server really running?"
fi
echo "\n";;

restart)
$0 stop
sleep 3
$0 start
;;
*)
echo $"*** Usage: $0 {start|restart|stop}"
exit 1
esac
[/sourcecode]

Wenn der Host neustartet, hat man zwar nicht mehr das Problem das man sich den Befehl merken muss, jedoch muss man den Befehl noch ausführen.
Auf meinem Server läuft soviel, das ich dies gerne mal vergesse, daher kann man das ganze auch noch in den Autostart verlegen.
Einfach entsprechend nach rc2.d linken:

[sourcecode lang=”bash”]
ln -s /etc/init.d/minecraft /etc/rc2.d/$USER
[/sourcecode]

Wenn man nun den Server noch herunterfährt, killt er das Spiel einfach, das wollen wir natürlich nicht und er soll ordentlich herunterfahren, damit man auch alles gespeichert hat.

[sourcecode lang=”bash”]
ln -s /etc/init.d/minecraft /etc/rc0.d/$USER
[/sourcecode]

Wenn man den Befehl von überall aus nutzen möchte, muss man noch einen Hardlink setzten.

[sourcecode lang=”bash”]
ln /etc/init.d/minecraft /usr/bin
[/sourcecode]

Achso, bash neuladen nicht vergessen, einfach neu einloggen oder bash eingeben. :)

Ich denke das war alles, sofern es Verbesserungsvorschläge gibt, würde ich mich über ein Feedback freuen. :)
Fragen? Anregungen? Kritik? Her damit!