gelatine87 icon

start.sh

gelatine87 | PRO | 07/15/17 12:09:02 AM UTC | 0 ⭐ | 499 👁️ | Never ⏰ | []
Bash |

5.76 KB

|

None

|

0 👍

/

0 👎

#!/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