Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --- minecraft_server Wed Nov 21 19:22:52 2012
- +++ minecraft_server_a Thu Nov 22 00:52:04 2012
- @@ -79,24 +79,37 @@
- ## Minecraft server options.
- +SERVER_TYPES="mojang bukkit tekkit"
- -# Choose only one server distribution, leave the other commented out.
- +## Some extra Java Options
- +#JAVA_OPTS="-Xmx1536M -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=2 -XX:+AggressiveOpts"
- # Default Mojang server distribution.
- -SERVER_URL="http://www.minecraft.net/download/minecraft_server.jar"
- -SERVER_JAR="minecraft_server.jar"
- -SERVER_ARGS="nogui"
- +SERVER_MOJANG_URL="https://s3.amazonaws.com/MinecraftDownload/launcher/Minecraft_Server.exe"
- +SERVER_MOJANG_JAR="minecraft_server.jar"
- +SERVER_MOJANG_ARGS="nogui"
- +SERVER_MOJANG_JAVA_OPTS="-Xms512M -Xmx1G"
- # CraftBukkit server distribution.
- -# SERVER_URL="http://repo.bukkit.org/service/local/artifact/maven/redirect?g=org.bukkit&a=craftbukkit&v=RELEASE&r=releases"
- -# SERVER_JAR="craftbukkit.jar"
- -# SERVER_ARGS=""
- +SERVER_BUKKIT_URL="http://cbukk.it/craftbukkit.jar"
- +SERVER_BUKKIT_JAR="craftbukkit.jar"
- +SERVER_BUKKIT_JAVA_OPTS="-Xms512M -Xmx1G"
- +SERVER_BUKKIT_ARGS=""
- +
- +# Tekkit server distribution.
- +SERVER_TEKKIT_URL="http://mirror.technicpack.net/Technic/servers/tekkit/Tekkit_Server_3.1.3.zip"
- +SERVER_TEKKIT_JAR="Tekkit.jar"
- +SERVER_TEKKIT_JAVA_OPTS="-Xms512M -Xmx1G"
- +SERVER_TEKKIT_ARGS="nogui"
- +
- +# Feed the Beast server distribution.
- +SERVER_FTB_URL="http://repo.creeperhost.net/direct/FTB2/71a030a9197ede2920757ecdc59cd6c1/FTBBetaA_Server.zip"
- +SERVER_FTB_JAR="FTB-Beta-A.jar"
- +SERVER_FTB_JAVA_OPTS="-Xms512M -Xmx1G"
- +SERVER_FTB_ARGS="nogui"
- # Generic server options.
- -INITIAL_MEMORY="128M"
- -MAXIMUM_MEMORY="2048M"
- SERVER_LOCATION="$LOCATION/minecraft_server"
- -SERVER_COMMAND="$JAVA -Xms$INITIAL_MEMORY -Xmx$MAXIMUM_MEMORY -jar $SERVER_LOCATION/$SERVER_JAR $SERVER_ARGS"
- ## World configuration.
- @@ -111,16 +124,18 @@
- # address blank if not needed.
- #
- # # Minecraft world configuration file
- -# # <world> <port> <ip>
- -# alpha 25565
- -# beta 25566
- -# gamma 25567
- -# delta 25568
- -# epsilon 25569
- +# # <world> <server> <port> <ip>
- +# alpha mojang 25565
- +# beta mojang 25566
- +# gamma bukkit 25567
- +# delta tekkit 25568
- +# epsilon ftb 25569
- WORLDS_CONF="$LOCATION/worlds.conf"
- -# Default world name, port, and IP address if the worlds.conf file is missing.
- +# Default world name, server type, port, and IP address if the worlds.conf file is missing.
- +# Supported server types are ( mojang bukkit tekkit )
- DEFAULT_WORLD="world"
- +DEFAULT_SERVER="mojang"
- DEFAULT_PORT="25565"
- DEFAULT_IP=""
- @@ -314,7 +329,7 @@
- # @return The port that the world is configured to use.
- getPort() {
- local PORT
- - PORT=$(execute "cat $WORLDS_CONF" $USER_NAME | $PERL -ne 'if ($_ =~ /^'$1'\s+(\d+)/) { print "$1"; }')
- + PORT=$(execute "cat $WORLDS_CONF" $USER_NAME | $PERL -ne 'if ($_ =~ /^'$1'\s+[\w\d]+\s+(\d+)/) { print "$1"; }')
- echo $PORT
- }
- @@ -324,10 +339,20 @@
- # @return The IP address that the world is configured to run on.
- getIP() {
- local IP
- - IP=$(execute "cat $WORLDS_CONF" $USER_NAME | $PERL -ne 'if ($_ =~ /^'$1'\s+\d+\s+([\d\.]+)/) { print "$1"; }')
- + IP=$(execute "cat $WORLDS_CONF" $USER_NAME | $PERL -ne 'if ($_ =~ /^'$1'\s+[\w\d]+\s+\d+\s+([\d\.]+)/) { print "$1"; }')
- echo $IP
- }
- +# Grab the server type for the given world.
- +#
- +# @param 1 The world server of interest.
- +# @return The server type that the world is configured to run on.
- +getServerType() {
- + local SERVER
- + SERVER=$(execute "cat $WORLDS_CONF" $USER_NAME | $PERL -ne 'if ($_ =~ /^'$1'\s+([\w\d]+)/) { print "$1"; }')
- + echo $SERVER
- +}
- +
- # Grab the first line of the Message of the Day file as a summary, and strip
- # any color codes from it.
- getMOTD() {
- @@ -344,7 +369,7 @@
- # @return The list of worlds.
- getWorlds() {
- local WORLDS
- - WORLDS=$(execute "cat $WORLDS_CONF" $USER_NAME | $PERL -ne 'if ($_ =~ /^(\w+)\s+(\d+)/) { print "$1 "; }')
- + WORLDS=$(execute "cat $WORLDS_CONF" $USER_NAME | $PERL -ne 'if ($_ =~ /^([\w\d]+)\s+[\w\d]+\s+\d+/) { print "$1 "; }')
- echo $WORLDS
- }
- @@ -534,15 +559,63 @@
- #
- # @param 1 The world server to start.
- start() {
- - local PID WORLD_DIR
- + local PID WORLD_DIR SERVER_TYPE SERVER_JAR SERVER_ARGS JAVA_OPTS
- +
- # Make sure that the world's directory exists.
- WORLD_DIR="$WORLDS_LOCATION/$1"
- - execute "mkdir -p $WORLD_DIR" $USER_NAME
- - # Make sure that the server.properties file holds the correct values.
- - setPropertiesValue $WORLDS_LOCATION/$1/server.properties "level-name" "$1"
- - setPropertiesValue $WORLDS_LOCATION/$1/server.properties "server-port" "$(getPort $1)"
- - setPropertiesValue $WORLDS_LOCATION/$1/server.properties "server-ip" "$(getIP $1)"
- - setPropertiesValue $WORLDS_LOCATION/$1/server.properties "motd" "$(getMOTD)"
- + if [ ! -d "$WORLDS_LOCATION/$1" ]; then
- + execute "mkdir -p $WORLD_DIR" $USER_NAME
- + fi
- +
- + # Get the world server type
- + SERVER_TYPE=$(getServerType "$1")
- +
- + # Set the server location, and args
- + if [ $SERVER_TYPE = "mojang" ]; then
- + SERVER_JAR=$SERVER_MOJANG_JAR
- + SERVER_ARGS=$SERVER_MOJANG_ARGS
- + JAVA_OPTS=$SERVER_MOJANG_JAVA_OPTS
- + elif [ $SERVER_TYPE = "bukkit" ]; then
- + SERVER_JAR=$SERVER_BUKKIT_JAR
- + SERVER_ARGS=$SERVER_BUKKIT_ARGS
- + JAVA_OPTS=$SERVER_BUKKIT_JAVA_OPTS
- + elif [ $SERVER_TYPE = "tekkit" ]; then
- + SERVER_JAR=$SERVER_TEKKIT_JAR
- + SERVER_ARGS=$SERVER_TEKKIT_ARGS
- + JAVA_OPTS=$SERVER_TEKKIT_JAVA_OPTS
- + elif [ $SERVER_TYPE = "ftb" ]; then
- + SERVER_JAR=$SERVER_FTB_JAR
- + SERVER_ARGS=$SERVER_FTB_ARGS
- + JAVA_OPTS=$SERVER_FTB_JAVA_OPTS
- + else
- + SERVER_JAR=$SERVER_MOJANG_JAR
- + SERVER_ARGS=$SERVER_MOJANG_ARGS
- + JAVA_OPTS=$SERVER_MOJANG_JAVA_OPTS
- + fi
- +
- + # Make sure that the server software exists.
- + if [ ! -e $SERVER_LOCATION/$SERVER_TYPE/$SERVER_JAR ]; then
- + printf "\nServer software not found, downloading it...\n"
- + update "server"
- + fi
- +
- + # Custom actions for tekkit
- + if [ $SERVER_TYPE = "tekkit" ] && [ ! -e "$WORLDS_LOCATION/$1/$SERVER_TEKKIT_JAR" ]; then
- + execute "cp -Rp $SERVER_LOCATION/$SERVER_TYPE/* $WORLDS_LOCATION/$1/" $USER_NAME
- + fi
- +
- + # Custom actions for feed-the-beast
- + if [ $SERVER_TYPE = "ftb" ] && [ ! -e "$WORLDS_LOCATION/$1/$SERVER_FTB_JAR" ]; then
- + execute "cp -Rp $SERVER_LOCATION/$SERVER_TYPE/* $WORLDS_LOCATION/$1/" $USER_NAME
- + fi
- +
- + # Make sure that the server.properties file holds the same values as
- + # the worlds.conf and motd.txt files.
- + setPropertiesValue $WORLDS_LOCATION/$1/server.properties "level-name" $1
- + setPropertiesValue $WORLDS_LOCATION/$1/server.properties "server-port" $(getPort $1)
- + setPropertiesValue $WORLDS_LOCATION/$1/server.properties "server-ip" $(getIP $1)
- + setPropertiesValue $WORLDS_LOCATION/$1/server.properties "motd" "$(getMOTD $1)"
- +
- # Make a mirror image of the world directory if requested.
- if [ $ENABLE_MIRROR -eq 1 ] && [ -d $MIRROR_PATH ]; then
- execute "mkdir -p $MIRROR_PATH/$1" $USER_NAME
- @@ -560,7 +633,7 @@
- # case it is not already empty for some reason.
- execute "printf \"\" > \"$WORLDS_LOCATION/$1.users\"" $USER_NAME
- # Start the server.
- - execute "$SCREEN -dmS minecraft-$1 $SERVER_COMMAND" $USER_NAME
- + execute "$SCREEN -dmS minecraft-$1 $JAVA $JAVA_OPTS -jar $SERVER_LOCATION/$SERVER_TYPE/$SERVER_JAR $SERVER_ARGS" $USER_NAME
- if [ $? -ne 0 ]; then
- printf "Error starting the server.\n"
- exit 1
- @@ -637,21 +710,72 @@
- # Update the server software.
- updateServerSoftware() {
- - execute "mkdir -p $SERVER_LOCATION" $USER_NAME
- - # Backup the old minecraft.jar file.
- - if [ -e $SERVER_LOCATION/$SERVER_JAR ]; then
- - execute "mv -f $SERVER_LOCATION/$SERVER_JAR $SERVER_LOCATION/$SERVER_JAR.old" $USER_NAME
- - fi
- - # Download the new minecraft server software.
- - execute "$WGET -qO \"$SERVER_LOCATION/$SERVER_JAR\" \"$SERVER_URL\"" $USER_NAME
- - # Check for error and restore backup if found.
- - if [ $? -ne 0 ]; then
- - printf "\nError updating server software.\n"
- - if [ -e "$SERVER_LOCATION/$SERVER_JAR.old" ]; then
- - execute "mv -f $SERVER_LOCATION/$SERVER_JAR.old $SERVER_LOCATION/$SERVER_JAR" $USER_NAME
- + local SERVER_JAR SERVER_URL
- +
- + for SERVER_TYPE in $SERVER_TYPES; do
- + # Set the server location, and args
- + if [ $SERVER_TYPE = "mojang" ]; then
- + SERVER_URL=$SERVER_MOJANG_URL
- + SERVER_JAR=$SERVER_MOJANG_JAR
- + elif [ $SERVER_TYPE = "bukkit" ]; then
- + SERVER_URL=$SERVER_BUKKIT_URL
- + SERVER_JAR=$SERVER_BUKKIT_JAR
- + elif [ $SERVER_TYPE = "tekkit" ]; then
- + SERVER_URL=$SERVER_TEKKIT_URL
- + SERVER_JAR=$SERVER_TEKKIT_JAR
- + elif [ $SERVER_TYPE = "ftb" ]; then
- + SERVER_URL=$SERVER_FTB_URL
- + SERVER_JAR=$SERVER_FTB_JAR
- fi
- - exit 1
- - fi
- +
- + execute "mkdir -p $SERVER_LOCATION/$SERVER_TYPE" $USER_NAME
- +
- + # Custom actions for tekkit
- + if [ $SERVER_TYPE = "tekkit" ]; then
- + printf "\nNot updating Tekkit.\n"
- + # Backup the old server package.
- + # if [ -e "$SERVER_LOCATION/$SERVER_TYPE/$SERVER_JAR" ]; then
- + # execute "tar zcf $SERVER_LOCATION/$SERVER_TYPE.old.tar.gz $SERVER_LOCATION/$SERVER_TYPE/" $USER_NAME
- + # execute "rm -rf $SERVER_LOCATION/$SERVER_TYPE/" $USER_NAME
- + # execute "rm $SERVER_LOCATION/$SERVER_TYPE.zip" $USER_NAME
- + # fi
- +
- + # Download the new server software.
- + # execute "$WGET -qO $SERVER_LOCATION/$SERVER_TYPE.zip $SERVER_URL" $USER_NAME
- +
- + # Check for error and restore backup if found.
- + # if [ $? -ne 0 ]; then
- + # printf "\nError updating server software.\n"
- + # if [ -e "$SERVER_LOCATION/$SERVER_TYPE/$SERVER_JAR.old.tar.gz" ]; then
- + # execute "tar xzf $SERVER_LOCATION/$SERVER_TYPE/$SERVER_JAR.old.tar.gz" $USER_NAME
- + # fi
- + # exit 1
- + # else
- + # execute "unzip -qq $SERVER_LOCATION/$SERVER_TYPE.zip -d $SERVER_LOCATION/$SERVER_TYPE/" $USER_NAME
- + #TODO - copy new update to all tekkit servers
- + #fi
- + # Custom actions for feed-the-beast
- + elif [ $SERVER_TYPE = "ftb" ]; then
- + printf "\nNot updating Feed the Beast.\n"
- + else
- + # Backup the old server jar.
- + if [ -e "$SERVER_LOCATION/$SERVER_TYPE/$SERVER_JAR" ]; then
- + execute "mv -f $SERVER_LOCATION/$SERVER_TYPE/$SERVER_JAR $SERVER_LOCATION/$SERVER_TYPE/$SERVER_JAR.old" $USER_NAME
- + fi
- +
- + # Download the new server software.
- + execute "$WGET -qO $SERVER_LOCATION/$SERVER_TYPE/$SERVER_JAR $SERVER_URL" $USER_NAME
- +
- + # Check for error and restore backup if found.
- + if [ $? -ne 0 ]; then
- + printf "\nError updating server software.\n"
- + if [ -e "$SERVER_LOCATION/$SERVER_TYPE/$SERVER_JAR.old" ]; then
- + execute "mv -f $SERVER_LOCATION/$SERVER_TYPE/$SERVER_JAR.old $SERVER_LOCATION/$SERVER_TYPE/$SERVER_JAR" $USER_NAME
- + fi
- + exit 1
- + fi
- + fi
- + done
- }
- # Update the c10t mapping software. If already installed, compare version
- @@ -845,7 +969,7 @@
- if [ ! -e $JAVA ] || [ ! -e $JAR ]; then
- printf "ERROR: Java not found!\n"
- printf "Try installing this with:\n"
- - printf "sudo apt-get install openjdk-6-jdk"
- + printf "sudo apt-get install openjdk-7-jre\n"
- exit 1
- fi
- if [ ! -e $PERL ]; then
- @@ -898,8 +1022,8 @@
- # Generate a default worlds.conf file if it does not already exist.
- if [ ! -e $WORLDS_CONF ]; then
- execute "printf \"# Minecraft world configuration file\n\" > $WORLDS_CONF" $USER_NAME
- - execute "printf \"# <world>\t<port>\t<ip>\n\" >> $WORLDS_CONF" $USER_NAME
- - execute "printf \"$DEFAULT_WORLD\t$DEFAULT_PORT\t$DEFAULT_IP\n\" >> $WORLDS_CONF" $USER_NAME
- + execute "printf \"# <world>\t<server>\t<port>\t<ip>\n\" >> $WORLDS_CONF" $USER_NAME
- + execute "printf \"$DEFAULT_WORLD\t$DEFAULT_SERVER\t$DEFAULT_PORT\t$DEFAULT_IP\n\" >> $WORLDS_CONF" $USER_NAME
- fi
- # Make sure that the server software exists.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement