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