tazcraft annotate tazcraft @ rev 3
Add tazcraft utility
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Sun Mar 19 17:43:45 2017 +0100 (2017-03-19) |
parents | |
children | 6eac67be306d |
rev | line source |
---|---|
pankso@3 | 1 #!/bin/sh |
pankso@3 | 2 # |
pankso@3 | 3 # tazcraft - Minecraft server config & admin tool for SliTaz |
pankso@3 | 4 # |
pankso@3 | 5 # Authors: Kayam Lincoln-Vazquez, Christophe Lincoln |
pankso@3 | 6 # Copyright (C) 2017 SliTaz GNU/Linux - BSD License |
pankso@3 | 7 # |
pankso@3 | 8 # TODO: add spigot support, rcon handler, properties settings |
pankso@3 | 9 # |
pankso@3 | 10 . /lib/libtaz.sh |
pankso@3 | 11 |
pankso@3 | 12 version="1.11.2" |
pankso@3 | 13 home="/home/minecraft" |
pankso@3 | 14 server="$home/server" |
pankso@3 | 15 config="$server/server.properties" |
pankso@3 | 16 |
pankso@3 | 17 server_jar="minecraft_server.${version}.jar" |
pankso@3 | 18 client_jar="Minecraft.jar" |
pankso@3 | 19 client_path="$HOME/.local/share/minecraft/$client_jar" |
pankso@3 | 20 |
pankso@3 | 21 spigot_jar="spigot-${version}.jar" |
pankso@3 | 22 |
pankso@3 | 23 java_version="8u121" |
pankso@3 | 24 java_id="218821" |
pankso@3 | 25 java_md5="e9e7ea248e2c4826b92b3f075a80e441" |
pankso@3 | 26 java_tarball="jre-$java_version-linux-i586.tar.gz" |
pankso@3 | 27 |
pankso@3 | 28 # Prefer Sun Java JRE but support system wide icedtea6-jre if installed |
pankso@3 | 29 java="$home/jre/bin/java" |
pankso@3 | 30 if [ ! -x "$java" ]; then |
pankso@3 | 31 java="/usr/bin/java" |
pankso@3 | 32 fi |
pankso@3 | 33 |
pankso@3 | 34 # |
pankso@3 | 35 # Functions |
pankso@3 | 36 # |
pankso@3 | 37 help() { |
pankso@3 | 38 cat << EOT |
pankso@3 | 39 |
pankso@3 | 40 $(colorize 032 Usage:) $(basename $0) command |
pankso@3 | 41 |
pankso@3 | 42 $(colorize 032 Commands:) |
pankso@3 | 43 -d downlaod Download the Minecraft server |
pankso@3 | 44 -s start Start your Minecraft server |
pankso@3 | 45 -p play Launch the Minecraft client |
pankso@3 | 46 -j java Install Sun Java Runtime Environment |
pankso@3 | 47 -i info Display server and java information |
pankso@3 | 48 motd Raw display of the Message Of The Day |
pankso@3 | 49 ops Show server operators name |
pankso@3 | 50 |
pankso@3 | 51 $(colorize 032 Options:) |
pankso@3 | 52 --gui Run the server with a graphical user interface |
pankso@3 | 53 |
pankso@3 | 54 EOT |
pankso@3 | 55 } |
pankso@3 | 56 |
pankso@3 | 57 # Commands |
pankso@3 | 58 title() { |
pankso@3 | 59 echo ""; colorize 032 "$@"; separator "-" |
pankso@3 | 60 } |
pankso@3 | 61 |
pankso@3 | 62 # Check if Java is installed |
pankso@3 | 63 check_java() { |
pankso@3 | 64 if [ ! -x "$java" ]; then |
pankso@3 | 65 colorize 031 "Can't find Java Runtime Environment (JRE)"; return 1 |
pankso@3 | 66 fi |
pankso@3 | 67 } |
pankso@3 | 68 |
pankso@3 | 69 # Change default motd |
pankso@3 | 70 defaut_motd() { |
pankso@3 | 71 if [ -f "$config" ]; then |
pankso@3 | 72 motd=$(grep ^motd= ${config} | sed s'/motd=//') |
pankso@3 | 73 if [ "$motd" == "A Minecraft Server" ]; then |
pankso@3 | 74 sed -i s'#motd=.*#motd=\\u00A72A Tazcraft Server#' ${config} |
pankso@3 | 75 fi |
pankso@3 | 76 fi |
pankso@3 | 77 } |
pankso@3 | 78 |
pankso@3 | 79 # Get a value in |
pankso@3 | 80 get_value() { |
pankso@3 | 81 val=$(grep ^${1}= ${config} | cut -d "=" -f 2) |
pankso@3 | 82 echo -n "$1"; indent 15 ": $val" |
pankso@3 | 83 } |
pankso@3 | 84 |
pankso@3 | 85 # |
pankso@3 | 86 # Commands |
pankso@3 | 87 # |
pankso@3 | 88 case "$1" in |
pankso@3 | 89 |
pankso@3 | 90 -d|downlaod) |
pankso@3 | 91 if [ ! -f "$server/$jar" ]; then |
pankso@3 | 92 echo "Downloading Minecraft..." |
pankso@3 | 93 mkdir -p ${server} |
pankso@3 | 94 wget --no-check-certificate \ |
pankso@3 | 95 https://s3.amazonaws.com/Minecraft.Download/versions/${version}/minecraft_server.${version}.jar \ |
pankso@3 | 96 -O ${server}/minecraft_server.${version}.jar |
pankso@3 | 97 else |
pankso@3 | 98 colorize 032 "Minecraft is already downloaded :-)" |
pankso@3 | 99 fi ;; |
pankso@3 | 100 |
pankso@3 | 101 -s|start) |
pankso@3 | 102 check_java || exit 1 |
pankso@3 | 103 defaut_motd |
pankso@3 | 104 colorize 032 "Starting Minecraft server..." |
pankso@3 | 105 [ ! "$gui" ] && opts="nogui" |
pankso@3 | 106 cd ${server} |
pankso@3 | 107 ${java} -Xmx1024M -Xms1024M -jar ${server_jar} ${opts} ;; |
pankso@3 | 108 |
pankso@3 | 109 -p|play) |
pankso@3 | 110 if [ ! -f "$client_path" ]; then |
pankso@3 | 111 dest_dir="$(dirname $client_path)" |
pankso@3 | 112 mkdir -p ${dest_dir} |
pankso@3 | 113 xterm -e "wget \ |
pankso@3 | 114 http://s3.amazonaws.com/Minecraft.Download/launcher/${client_jar} \ |
pankso@3 | 115 -O $client_path" |
pankso@3 | 116 fi |
pankso@3 | 117 ${java} -jar ${client_path} & ;; |
pankso@3 | 118 |
pankso@3 | 119 -j|java) |
pankso@3 | 120 if [ ! -x "$home/jre/bin/java" ]; then |
pankso@3 | 121 echo "Installing Java Runtime Environment ($java_version)..." |
pankso@3 | 122 |
pankso@3 | 123 # Already downloaded |
pankso@3 | 124 if [ ! -f "$home/$java_tarball" ]; then |
pankso@3 | 125 wget \ |
pankso@3 | 126 http://javadl.oracle.com/webapps/download/AutoDL?BundleId=${java_id}_${java_md5} \ |
pankso@3 | 127 -O ${home}/${java_tarball} |
pankso@3 | 128 fi |
pankso@3 | 129 |
pankso@3 | 130 echo "Extracting: ${java_tarball}..." |
pankso@3 | 131 tar xzf ${home}/${java_tarball} -C ${home} || exit 1 |
pankso@3 | 132 rm -rf jre 2>/dev/null && mv ${home}/jre*_*/ ${home}/jre |
pankso@3 | 133 |
pankso@3 | 134 else |
pankso@3 | 135 colorize 032 "Java Runtime Environment is installed" |
pankso@3 | 136 ${java} -version |
pankso@3 | 137 fi ;; |
pankso@3 | 138 |
pankso@3 | 139 motd) |
pankso@3 | 140 defaut_motd |
pankso@3 | 141 motd=$(grep ^motd= ${config} | sed s'/motd=//') |
pankso@3 | 142 title "Message Of The Day (motd)" |
pankso@3 | 143 echo "$motd" |
pankso@3 | 144 newline ;; |
pankso@3 | 145 |
pankso@3 | 146 -o|ops) |
pankso@3 | 147 title "Server operators" |
pankso@3 | 148 ops_json="$server/ops.json" |
pankso@3 | 149 #echo "Config file: $server/ops.json" |
pankso@3 | 150 fgrep name ${ops_json} | cut -d '"' -f 4 |
pankso@3 | 151 newline ;; |
pankso@3 | 152 |
pankso@3 | 153 -w|white-list) |
pankso@3 | 154 # Usage: tazcraft -w [username|--true|--false] |
pankso@3 | 155 white_list="${server}/white-list.txt" |
pankso@3 | 156 title "Minecraft server white list" |
pankso@3 | 157 |
pankso@3 | 158 case "$2" in |
pankso@3 | 159 |
pankso@3 | 160 --true) |
pankso@3 | 161 echo "Activaction white list support..." |
pankso@3 | 162 sed -i s'/white-list=*./white-list=true/' ${config} |
pankso@3 | 163 touch ${white_list} ;; |
pankso@3 | 164 |
pankso@3 | 165 --false) ;; |
pankso@3 | 166 *) ;; |
pankso@3 | 167 esac |
pankso@3 | 168 # Add/remove users |
pankso@3 | 169 |
pankso@3 | 170 |
pankso@3 | 171 # --true |
pankso@3 | 172 if [ "$true" ]; then |
pankso@3 | 173 |
pankso@3 | 174 fi |
pankso@3 | 175 |
pankso@3 | 176 # Display white list users or give settings info |
pankso@3 | 177 if [ -f "$white_list" ]; then |
pankso@3 | 178 cat ${white_list} |
pankso@3 | 179 else |
pankso@3 | 180 get_value "white-list" |
pankso@3 | 181 colorize 031 "White list file is not activated $val" |
pankso@3 | 182 fi |
pankso@3 | 183 |
pankso@3 | 184 newline ;; |
pankso@3 | 185 |
pankso@3 | 186 -i|info) |
pankso@3 | 187 newline |
pankso@3 | 188 colorize 032 "Minecraft Server" |
pankso@3 | 189 echo "Version : $version" |
pankso@3 | 190 echo "Home : $home" |
pankso@3 | 191 newline |
pankso@3 | 192 |
pankso@3 | 193 colorize 032 "Server properties" |
pankso@3 | 194 for var in gamemode server-port level-name difficulty max-players \ |
pankso@3 | 195 allow-flight |
pankso@3 | 196 do |
pankso@3 | 197 get_value ${var} |
pankso@3 | 198 done |
pankso@3 | 199 newline |
pankso@3 | 200 |
pankso@3 | 201 if check_java; then |
pankso@3 | 202 colorize 032 "Java Runtime Environment" |
pankso@3 | 203 echo "Path: $java" |
pankso@3 | 204 ${java} -version #2>&1 | grep "version" |
pankso@3 | 205 fi |
pankso@3 | 206 newline ;; |
pankso@3 | 207 |
pankso@3 | 208 *) help ;; |
pankso@3 | 209 esac |
pankso@3 | 210 exit 0 |