slitaz-dev-tools annotate tazcraft/tazcraft @ rev 295

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