Advertisement
gelatine87

start.sh

Jul 14th, 2017
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.76 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. ARGS=""
  4. JARNAME="minecraft_server.jar"
  5.  
  6. bashargs=( "$@" )
  7. for (( argindex=0; ((argindex<$#)); argindex++ )) ; do
  8.     arg=${bashargs[$argindex]}
  9.     ((argindex++))
  10.     param=${bashargs[$argindex]}
  11.     if [[ $param == \"* ]] ; then
  12.         until [[ $param == *\" ]] ; do
  13.             ((argindex++))
  14.             param="$param"" "${bashargs[$argindex]}
  15.         done
  16.     fi
  17.     case "$arg" in
  18.      "-IP")
  19.         IP="$param" ;;
  20.      "-PORT")
  21.         PORT="$param" ;;
  22.      "-PLAYER")
  23.         PLAYER="$param" ;;
  24.      "-JAR")
  25.         JARNAME="$param" ;;
  26.      "-RAM")
  27.         RAM="$param" ;;
  28.      "-ARGS")
  29.         RAWARGS="$param"
  30.         TEMPARGS="${RAWARGS%\"}"
  31.         ARGS="${TEMPARGS#\"}" ;;
  32.      "-ADDON")
  33.         ADDON="$param" ;;
  34.      "-LIMIT")
  35.         LIMIT="$param" ;;
  36.      "-RTKUSER")
  37.         RTKUSER="$param" ;;
  38.      "-PRIVATE")
  39.         PRIVATE="$param" ;;
  40.     esac
  41.     shift
  42. done
  43.  
  44. #for test $# -gt 0; do #"$@"
  45. # case "$1" in
  46. # "-IP")
  47. #    IP="$2"
  48. #    shift;;
  49. # "-PORT")
  50. #    PORT="$2"
  51. #    shift ;;
  52. # "-PLAYER")
  53. #    PLAYER="$2"
  54. #    shift ;;
  55. # "-JAR")
  56. #   JARNAME="$2"
  57. #   shift ;;
  58. # "-RAM")
  59. #    RAM="$2"
  60. #    shift ;;
  61. # "-ARGS")
  62. #   RAWARGS="$2"
  63. #   TEMPARGS="${RAWARGS%\"}"
  64. #   ARGS="${TEMPARGS#\"}"
  65. #   shift ;;
  66. # "-ADDON")
  67. #    ADDON="$2"
  68. #    shift ;;
  69. # "-LIMIT")
  70. #    LIMIT="$2"
  71. #    shift ;;
  72. # "-RTKUSER")
  73. #    RTKUSER="$2"
  74. #    shift ;;
  75. # "-PRIVATE")
  76. #    PRIVATE="$2"
  77. #    shift ;;
  78. # esac
  79. # shift
  80. #done
  81.  
  82. ## kill den alten port =)
  83. if [ ! -f minecraft_server.pid ]; then
  84.   echo ""
  85. else
  86.   pid=`cat minecraft_server.pid`
  87.   kill -KILL $pid
  88.   rm -rf minecraft_server.pid
  89. fi
  90.  
  91. let REMOTE=${PORT}+1
  92. echo "eula=true" > eula.txt
  93. ## serversettings
  94. grep server-ip= server.properties &>/dev/null
  95. if [[ $? -eq 0 ]]; then  # Vorhanden!
  96.   sed -i server.properties -e "s/^\(server-ip=\).*$/\1${IP}/"
  97. else  # Nicht vorhanden!
  98.   echo "server-ip=${IP}" >> server.properties
  99. fi
  100.  
  101. grep server-port= server.properties &>/dev/null
  102. if [[ $? -eq 0 ]]; then  # Vorhanden!
  103.   sed -i server.properties -e "s/^\(server-port=\).*$/\1${PORT}/"
  104. else  # Nicht vorhanden!
  105.   echo "server-port=${PORT}" >> server.properties
  106. fi
  107.  
  108. grep max-players= server.properties &>/dev/null
  109. if [[ $? -eq 0 ]]; then  # Vorhanden!
  110.   sed -i server.properties -e "s/^\(max-players=\).*$/\1${PLAYER}/"
  111. else  # Nicht vorhanden!
  112.   echo "max-players=${PLAYER}" >> server.properties
  113. fi
  114.  
  115. grep enable-query= server.properties &>/dev/null
  116. if [[ $? -eq 0 ]]; then  # Vorhanden!
  117.   sed -i server.properties -e "s/^\(enable-query=\).*$/\1true/"
  118. else  # Nicht vorhanden!
  119.   echo "enable-query=true" >> server.properties
  120. fi
  121.  
  122. grep query.port= server.properties &>/dev/null
  123. if [[ $? -eq 0 ]]; then  # Vorhanden!
  124.   sed -i server.properties -e "s/^\(query.port=\).*$/\1${PORT}/"
  125. else  # Nicht vorhanden!
  126.   echo "query.port=${PORT}" >> server.properties
  127. fi
  128.  
  129. mkdir toolkit
  130.  
  131. grep maximum-heap-size= ./toolkit/wrapper.properties &>/dev/null
  132. if [[ $? -eq 0 ]]; then  # Vorhanden!
  133.   sed -i ./toolkit/wrapper.properties -e "s/^\(maximum-heap-size=\).*$/\1${RAM}M/"
  134. else  # Nicht vorhanden!
  135.   echo "maximum-heap-size=${RAM}M" >> ./toolkit/wrapper.properties
  136. fi
  137.  
  138. grep initial-heap-size= ./toolkit/wrapper.properties &>/dev/null
  139. if [[ $? -eq 0 ]]; then  # Vorhanden!
  140.   sed -i ./toolkit/wrapper.properties -e "s/^\(initial-heap-size=\).*$/\1${RAM}M/"
  141. else  # Nicht vorhanden!
  142.   echo "initial-heap-size=${RAM}M" >> ./toolkit/wrapper.properties
  143. fi
  144.  
  145. grep remote-bind-address= ./toolkit/remote.properties &>/dev/null
  146. if [[ $? -eq 0 ]]; then  # Vorhanden!
  147.   sed -i ./toolkit/remote.properties -e "s/^\(remote-bind-address=\).*$/\1${IP}/"
  148. else  # Nicht vorhanden!
  149.   echo "remote-bind-address=${IP}" >> ./toolkit/remote.properties
  150. fi
  151.  
  152. grep remote-control-port= ./toolkit/remote.properties &>/dev/null
  153. if [[ $? -eq 0 ]]; then  # Vorhanden!
  154.   sed -i ./toolkit/remote.properties -e "s/^\(remote-control-port=\).*$/\1${REMOTE}/"
  155. else  # Nicht vorhanden!
  156.   echo "remote-control-port=${REMOTE}" >> ./toolkit/remote.properties
  157. fi
  158.  
  159. if [[ $PRIVATE == "true" ]]; then
  160.   echo Server startet im PRIVATEN modus. Bitte setzen sie Spieler auf die Whitelist um ihn benutzen zu koennen!
  161.   grep white-list= server.properties &>/dev/null
  162.   if [[ $? -eq 0 ]]; then  # Vorhanden!
  163.     sed -i server.properties -e "s/^\(white-list=\).*$/\1true/"
  164.   else  # Nicht vorhanden!
  165.     echo "white-list=true" >> server.properties
  166.   fi
  167. else
  168. echo Server Startet als Publicserver
  169. fi
  170.  
  171. MINRAM=$(($RAM / 2))
  172.  
  173. autorestart="1"
  174.  
  175. while [[ $autorestart == "1" ]]; do
  176.         # Start Server
  177.         echo Starting Server with command \' java -Xmx"$RAM"M -Xms"$MINRAM"M $ARGS -server -jar "$JARNAME" nogui $IP $PORT \'
  178.         java -Xmx"$RAM"M -Xms"$MINRAM"M $ARGS -server -jar "$JARNAME" nogui $IP $PORT
  179.         # After the Server JVM exited
  180.         echo Server JVM closed
  181.         echo Scheduling auto-restart - enter \'stop\' to cancel or \'start\' to skip the countdown
  182.         countdown="120"
  183.         cdindex="1"
  184.         cdwait[1]="60"
  185.         cdwait[2]="30"
  186.         cdwait[3]="20"
  187.         cdwait[4]="10"
  188.         cdwait[5]="5"
  189.         while [[ $countdown -gt 0 ]] ; do
  190.                 echo Commencing restart in $countdown seconds!
  191.                 read -t ${cdwait[$cdindex]}  reply
  192.                 echo
  193.                 if [[ -z "$reply" ]]; then
  194.                         if [[ $countdown == "0" ]]; then
  195.                                 echo Commencing restart NOW!
  196.                         else
  197.                                 countdown=$(($countdown - ${cdwait[$cdindex]}))
  198.                                 ((cdindex++))
  199.                         fi
  200.                 elif [[ "$reply" == "stop" ]]; then
  201.                         echo Restart canceled!
  202.                         autorestart="0"
  203.                         break
  204.                 elif [[ "$reply" == "start" ]]; then
  205.                         echo Commencing restart NOW!
  206.                         break
  207.                 fi
  208.         done
  209. done
  210.  
  211. echo start.sh finalized!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement