#!/bin/bash
ARGS=""
JARNAME="minecraft_server.jar"
bashargs=( "$@" )
for (( argindex=0; ((argindex<$#)); argindex++ )) ; do
arg=${bashargs[$argindex]}
((argindex++))
param=${bashargs[$argindex]}
if [[ $param == \"* ]] ; then
until [[ $param == *\" ]] ; do
((argindex++))
param="$param"" "${bashargs[$argindex]}
done
fi
case "$arg" in
"-IP")
IP="$param" ;;
"-PORT")
PORT="$param" ;;
"-PLAYER")
PLAYER="$param" ;;
"-JAR")
JARNAME="$param" ;;
"-RAM")
RAM="$param" ;;
"-ARGS")
RAWARGS="$param"
TEMPARGS="${RAWARGS%\"}"
ARGS="${TEMPARGS#\"}" ;;
"-ADDON")
ADDON="$param" ;;
"-LIMIT")
LIMIT="$param" ;;
"-RTKUSER")
RTKUSER="$param" ;;
"-PRIVATE")
PRIVATE="$param" ;;
esac
shift
done
#for test $# -gt 0; do #"$@"
# case "$1" in
# "-IP")
# IP="$2"
# shift;;
# "-PORT")
# PORT="$2"
# shift ;;
# "-PLAYER")
# PLAYER="$2"
# shift ;;
# "-JAR")
# JARNAME="$2"
# shift ;;
# "-RAM")
# RAM="$2"
# shift ;;
# "-ARGS")
# RAWARGS="$2"
# TEMPARGS="${RAWARGS%\"}"
# ARGS="${TEMPARGS#\"}"
# shift ;;
# "-ADDON")
# ADDON="$2"
# shift ;;
# "-LIMIT")
# LIMIT="$2"
# shift ;;
# "-RTKUSER")
# RTKUSER="$2"
# shift ;;
# "-PRIVATE")
# PRIVATE="$2"
# shift ;;
# esac
# shift
#done
## kill den alten port =)
if [ ! -f minecraft_server.pid ]; then
echo ""
else
pid=`cat minecraft_server.pid`
kill -KILL $pid
rm -rf minecraft_server.pid
fi
let REMOTE=${PORT}+1
echo "eula=true" > eula.txt
## serversettings
grep server-ip= server.properties &>/dev/null
if [[ $? -eq 0 ]]; then # Vorhanden!
sed -i server.properties -e "s/^\(server-ip=\).*$/\1${IP}/"
else # Nicht vorhanden!
echo "server-ip=${IP}" >> server.properties
fi
grep server-port= server.properties &>/dev/null
if [[ $? -eq 0 ]]; then # Vorhanden!
sed -i server.properties -e "s/^\(server-port=\).*$/\1${PORT}/"
else # Nicht vorhanden!
echo "server-port=${PORT}" >> server.properties
fi
grep max-players= server.properties &>/dev/null
if [[ $? -eq 0 ]]; then # Vorhanden!
sed -i server.properties -e "s/^\(max-players=\).*$/\1${PLAYER}/"
else # Nicht vorhanden!
echo "max-players=${PLAYER}" >> server.properties
fi
grep enable-query= server.properties &>/dev/null
if [[ $? -eq 0 ]]; then # Vorhanden!
sed -i server.properties -e "s/^\(enable-query=\).*$/\1true/"
else # Nicht vorhanden!
echo "enable-query=true" >> server.properties
fi
grep query.port= server.properties &>/dev/null
if [[ $? -eq 0 ]]; then # Vorhanden!
sed -i server.properties -e "s/^\(query.port=\).*$/\1${PORT}/"
else # Nicht vorhanden!
echo "query.port=${PORT}" >> server.properties
fi
mkdir toolkit
grep maximum-heap-size= ./toolkit/wrapper.properties &>/dev/null
if [[ $? -eq 0 ]]; then # Vorhanden!
sed -i ./toolkit/wrapper.properties -e "s/^\(maximum-heap-size=\).*$/\1${RAM}M/"
else # Nicht vorhanden!
echo "maximum-heap-size=${RAM}M" >> ./toolkit/wrapper.properties
fi
grep initial-heap-size= ./toolkit/wrapper.properties &>/dev/null
if [[ $? -eq 0 ]]; then # Vorhanden!
sed -i ./toolkit/wrapper.properties -e "s/^\(initial-heap-size=\).*$/\1${RAM}M/"
else # Nicht vorhanden!
echo "initial-heap-size=${RAM}M" >> ./toolkit/wrapper.properties
fi
grep remote-bind-address= ./toolkit/remote.properties &>/dev/null
if [[ $? -eq 0 ]]; then # Vorhanden!
sed -i ./toolkit/remote.properties -e "s/^\(remote-bind-address=\).*$/\1${IP}/"
else # Nicht vorhanden!
echo "remote-bind-address=${IP}" >> ./toolkit/remote.properties
fi
grep remote-control-port= ./toolkit/remote.properties &>/dev/null
if [[ $? -eq 0 ]]; then # Vorhanden!
sed -i ./toolkit/remote.properties -e "s/^\(remote-control-port=\).*$/\1${REMOTE}/"
else # Nicht vorhanden!
echo "remote-control-port=${REMOTE}" >> ./toolkit/remote.properties
fi
if [[ $PRIVATE == "true" ]]; then
echo Server startet im PRIVATEN modus. Bitte setzen sie Spieler auf die Whitelist um ihn benutzen zu koennen!
grep white-list= server.properties &>/dev/null
if [[ $? -eq 0 ]]; then # Vorhanden!
sed -i server.properties -e "s/^\(white-list=\).*$/\1true/"
else # Nicht vorhanden!
echo "white-list=true" >> server.properties
fi
else
echo Server Startet als Publicserver
fi
MINRAM=$(($RAM / 2))
autorestart="1"
while [[ $autorestart == "1" ]]; do
# Start Server
echo Starting Server with command \' java -Xmx"$RAM"M -Xms"$MINRAM"M $ARGS -server -jar "$JARNAME" nogui $IP $PORT \'
java -Xmx"$RAM"M -Xms"$MINRAM"M $ARGS -server -jar "$JARNAME" nogui $IP $PORT
# After the Server JVM exited
echo Server JVM closed
echo Scheduling auto-restart - enter \'stop\' to cancel or \'start\' to skip the countdown
countdown="120"
cdindex="1"
cdwait[1]="60"
cdwait[2]="30"
cdwait[3]="20"
cdwait[4]="10"
cdwait[5]="5"
while [[ $countdown -gt 0 ]] ; do
echo Commencing restart in $countdown seconds!
read -t ${cdwait[$cdindex]} reply
echo
if [[ -z "$reply" ]]; then
if [[ $countdown == "0" ]]; then
echo Commencing restart NOW!
else
countdown=$(($countdown - ${cdwait[$cdindex]}))
((cdindex++))
fi
elif [[ "$reply" == "stop" ]]; then
echo Restart canceled!
autorestart="0"
break
elif [[ "$reply" == "start" ]]; then
echo Commencing restart NOW!
break
fi
done
done
echo start.sh finalized!
Comments