aboutsummarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorSchala2016-06-29 15:55:28 -0700
committerSchala2016-06-29 15:55:28 -0700
commit8d0c19886f6ad85235c69cd2d950e223aee24681 (patch)
treed115f5453d28c9bba2f786033f45a7379f156ac5
parent3b34a3c2d74366554cae418bbba63bd364190df3 (diff)
downloadaur-8d0c19886f6ad85235c69cd2d950e223aee24681.tar.gz
1.10.2
-rw-r--r--.SRCINFO17
-rwxr-xr-xPKGBUILD15
-rw-r--r--spigot.conf9
-rwxr-xr-xspigot.install12
-rwxr-xr-xspigot.sh46
5 files changed, 45 insertions, 54 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 55b48981b8c6..2a544c8fca94 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,9 +1,9 @@
# Generated by mksrcinfo v8
-# Tue Jun 21 08:20:57 UTC 2016
+# Wed Jun 29 22:54:56 UTC 2016
pkgbase = spigot
pkgdesc = High performance Minecraft server implementation
- pkgver = 1.10
- pkgrel = 3
+ pkgver = 1.10.2
+ pkgrel = 1
url = https://www.spigotmc.org/
install = spigot.install
arch = any
@@ -15,12 +15,13 @@ pkgbase = spigot
depends = sudo
depends = fontconfig
depends = bash
+ depends = awk
depends = sed
optdepends = tar: needed in order to create world backups
optdepends = netcat: required in order to suspend an idle server
- provides = minecraft-server=1.10
- provides = bukkit=1.10
- provides = craftbukkit=1.10
+ provides = minecraft-server=1.10.2
+ provides = bukkit=1.10.2
+ provides = craftbukkit=1.10.2
conflicts = bukkit
conflicts = craftbukkit
conflicts = spigot-patcher
@@ -36,8 +37,8 @@ pkgbase = spigot
md5sums = 7bb2dc610c5f55e133bd41ab608ec7a1
md5sums = 872d2e03799f1f8f0c75acdebce91894
md5sums = 1eb2d5f485cf9eff7a99c826ad56fcf4
- md5sums = f04e0bcf8d771b0d1dc0206dc173d77a
- md5sums = d5253665976acd7206339a713b62f220
+ md5sums = d0ae1d07bfa6dd5b628a2b5cd61feebd
+ md5sums = 016361b2a94c7be32a2816adcd5b3dca
pkgname = spigot
diff --git a/PKGBUILD b/PKGBUILD
index e88b617a182d..79b0712d7405 100755
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,12 +1,12 @@
# Maintainer: Gordian Edenhofer <gordian.edenhofer[at]yahoo[dot]de>
pkgname=spigot
-pkgver=1.10
-pkgrel=3
+pkgver=1.10.2
+pkgrel=1
pkgdesc="High performance Minecraft server implementation"
arch=(any)
url="https://www.spigotmc.org/"
license=("LGPL")
-depends=(java-runtime-headless screen sudo fontconfig bash sed)
+depends=(java-runtime-headless screen sudo fontconfig bash awk sed)
optdepends=("tar: needed in order to create world backups"
"netcat: required in order to suspend an idle server")
makedepends=(java-environment git)
@@ -25,8 +25,8 @@ md5sums=('SKIP'
'7bb2dc610c5f55e133bd41ab608ec7a1'
'872d2e03799f1f8f0c75acdebce91894'
'1eb2d5f485cf9eff7a99c826ad56fcf4'
- 'f04e0bcf8d771b0d1dc0206dc173d77a'
- 'd5253665976acd7206339a713b62f220')
+ 'd0ae1d07bfa6dd5b628a2b5cd61feebd'
+ '016361b2a94c7be32a2816adcd5b3dca')
_game="spigot"
_server_root="/srv/craftbukkit"
@@ -52,7 +52,6 @@ package() {
# Give the group write permissions and set user or group ID on execution
chmod g+ws "${pkgdir}${_server_root}"
- # make plugins folder drag n drop easy
- mkdir -p "${pkgdir}/${_server_root}/plugins"
- chmod -R 777 "${pkgdir}/${_server_root}/plugins"
+ # Make plugins folder ready for drag and drop
+ install -dm777 "${pkgdir}/${_server_root}/plugins"
}
diff --git a/spigot.conf b/spigot.conf
index ebe90d70c615..17446f361767 100644
--- a/spigot.conf
+++ b/spigot.conf
@@ -4,7 +4,6 @@
# General parameters
SERVER_ROOT="/srv/craftbukkit"
BACKUP_DEST="/srv/craftbukkit/backup"
-LOGPATH="/srv/craftbukkit/logs"
BACKUP_PATHS="world world_nether world_the_end" # World paths separated by spaces relative to SERVER_ROOT
KEEP_BACKUPS="10"
GAME_USER="craftbukkit"
@@ -12,10 +11,10 @@ MAIN_EXECUTABLE="spigot.jar"
SESSION_NAME="spigot"
# System parameters for java
-MINHEAP="512M"
-MAXHEAP="1024M"
-THREADS="1"
-JAVA_PARMS="-Xmx${MAXHEAP} -Xms${MINHEAP} -XX:ParallelGCThreads=${THREADS}"
+# -Xms sets the intial heap size (must be a multiple of 1024 and greater than 2MB, no spaces!)
+# -Xmx sets the maximum heap size (must be a multiple of 1024 and greater than 2MB, no spaces!)
+# -XX:ParallelGCThreads defines the number of threads the server may use
+SERVER_START_CMD="java -Xms512M -Xmx1024M -XX:ParallelGCThreads=1 -jar './${MAIN_EXECUTABLE}' nogui"
# System parameters for the actual game server
# Describes whether a daemon process which stops the server if it is not used by a player
diff --git a/spigot.install b/spigot.install
index 27d960b031b6..494336b3b686 100755
--- a/spigot.install
+++ b/spigot.install
@@ -27,18 +27,6 @@ post_install() {
post_upgrade() {
chown -R ${_user}:${_user} "${_server_root}"
-
- if [[ -f /etc/conf.d/${_game}.pacnew ]]; then # TODO: remove oneday
- echo -e "\e[34;1m==>\e[39;1m NOTE: There was a new change on how backup files are handled! Unfortunately this makes \e[0m"
- echo -e "\e[34;1m==>\e[39;1m old backups incompatible with the newly implemeted restore feature. Bare in mind that no data is lost \e[0m"
- echo -e "\e[34;1m==>\e[39;1m neither are those backups useless. They just will not work with the restore capability of the management script. \e[0m"
- echo -e "\e[34;1m==>\e[39;1m NOTE: Please merge the new configuration file into /etc/conf.d/${_game} by e.g. using pacdiff. \e[0m"
- fi
-
- if [[ -d /srv/spigot ]]; then # TODO: remove oneday
- echo -e "\e[34;1m==>\e[39;1m NOTE: The server root in the config files and script was moved to /srv/craftbukkit in order to restore compatibility \e[0m"
- echo -e "\e[34;1m==>\e[39;1m with craftbukkit plugins. Please move your exisiting game save, plugins, backups, logs etc. to this new loaction. \e[0m"
- fi
}
pre_remove() {
diff --git a/spigot.sh b/spigot.sh
index 90a9fd565879..da65d413401d 100755
--- a/spigot.sh
+++ b/spigot.sh
@@ -11,18 +11,14 @@ declare -r game="spigot"
# You may use this script for any game server of your choice, just alter the config file
[[ ! -z "${SERVER_ROOT}" ]] && declare -r SERVER_ROOT=${SERVER_ROOT} || SERVER_ROOT="/srv/craftbukkit"
[[ ! -z "${BACKUP_DEST}" ]] && declare -r BACKUP_DEST=${BACKUP_DEST} || BACKUP_DEST="/srv/craftbukkit/backup"
-[[ ! -z "${LOGPATH}" ]] && declare -r LOGPATH=${LOGPATH} || LOGPATH="/srv/craftbukkit/logs"
[[ ! -z "${BACKUP_PATHS}" ]] && declare -r BACKUP_PATHS=${BACKUP_PATHS} || BACKUP_PATHS="world world_nether world_the_end"
[[ ! -z "${KEEP_BACKUPS}" ]] && declare -r KEEP_BACKUPS=${KEEP_BACKUPS} || KEEP_BACKUPS="10"
[[ ! -z "${GAME_USER}" ]] && declare -r GAME_USER=${GAME_USER} || GAME_USER="craftbukkit"
[[ ! -z "${MAIN_EXECUTABLE}" ]] && declare -r MAIN_EXECUTABLE=${MAIN_EXECUTABLE} || MAIN_EXECUTABLE="spigot.jar"
[[ ! -z "${SESSION_NAME}" ]] && declare -r SESSION_NAME=${SESSION_NAME} || SESSION_NAME="${game}"
-# System parameters for java
-[[ ! -z "${MINHEAP}" ]] && declare -r MINHEAP=${MINHEAP} || MINHEAP="512M"
-[[ ! -z "${MAXHEAP}" ]] && declare -r MAXHEAP=${MAXHEAP} || MAXHEAP="1024M"
-[[ ! -z "${THREADS}" ]] && declare -r THREADS=${THREADS} || THREADS="1"
-[[ ! -z "${JAVA_PARMS}" ]] && declare -r JAVA_PARMS=${JAVA_PARMS} || JAVA_PARMS="-Xmx${MAXHEAP} -Xms${MINHEAP} -XX:ParallelGCThreads=${THREADS}"
+# Command and parameter declaration with which to start the server
+[[ ! -z "${SERVER_START_CMD}" ]] && declare -r SERVER_START_CMD=${SERVER_START_CMD} || SERVER_START_CMD="java -Xms512M -Xmx1024M -XX:ParallelGCThreads=1 -jar './${MAIN_EXECUTABLE}' nogui"
# System parameters for the control script
[[ ! -z "${IDLE_SERVER}" ]] && tmp_IDLE_SERVER=${IDLE_SERVER} || IDLE_SERVER="false"
@@ -60,28 +56,37 @@ if [[ $(${SUDO_CMD} whoami) != ${GAME_USER} ]]; then
exit 21
fi
-# Pipe any given argument to the game server console
+# Pipe any given argument to the game server console,
+# sleep for $sleep_time and return its output if $return_stdout is set
game_command() {
- ${SUDO_CMD} screen -S "${SESSION_NAME}" -X stuff "`printf \"$*\r\"`"
+ if [[ -z "${return_stdout}" ]]; then
+ ${SUDO_CMD} screen -S "${SESSION_NAME}" -X stuff "`printf \"$*\r\"`"
+ else
+ ${SUDO_CMD} screen -S "${SESSION_NAME}" -X log on
+ ${SUDO_CMD} screen -S "${SESSION_NAME}" -X stuff "`printf \"$*\r\"`"
+ sleep ${sleep_time:-0.3}
+ ${SUDO_CMD} screen -S "${SESSION_NAME}" -X log off
+ ${SUDO_CMD} cat "/tmp/${myname}_screen_command_dump.txt"
+ ${SUDO_CMD} rm "/tmp/${myname}_screen_command_dump.txt"
+ fi
}
# Check whether there are player on the server through list
is_player_online() {
- game_command list
- sleep 0.6
+ response="$(sleep_time=0.6 return_stdout=true game_command list)"
# The list command prints a line containing the usernames after the last occurrence of ": "
- # and since playernames may not contain this string the clean player-list can be easily retrieved.
+ # and since playernames may not contain this string the clean player-list can easily be retrieved.
# Otherwiese check the first digit after the last occurrence of "There are". If it is 0 then there
# are no players on the server. Should this test fail as well. Assume that a player is online.
- if [[ -z $(tail -n 1 "${LOGPATH}/latest.log" | sed -r -e 's/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g' -e 's/.*\: //' | tr -d '\n') ]]; then
+ if [[ $(echo "${response}" | grep ":" | sed -r -e '$!d' -e 's/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g' -e 's/.*\: //' | tr -d '\n' | wc -c) -le 1 ]]; then
# No player is online
- return 0;
- elif [[ $(tail -n 10 "${LOGPATH}/latest.log" | grep "There are" | sed -r -e '$!d' -e 's/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g' -e 's/.*\: //' -e 's/^([^.]+).*$/\1/; s/^[^0-9]*([0-9]+).*$/\1/' | tr -d '\n') -eq 0 ]]; then
+ return 0
+ elif [[ $(echo "${response}" | grep "There are" | sed -r -e '$!d' -e 's/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g' -e 's/.*\: //' -e 's/^([^.]+).*$/\1/; s/^[^0-9]*([0-9]+).*$/\1/' | tr -d '\n') -eq 0 ]]; then
# No player is online
- return 0;
+ return 0
else
# A player is online (or it could not be determined)
- return 1;
+ return 1
fi
}
@@ -154,7 +159,8 @@ server_start() {
echo "A screen ${SESSION_NAME} session is already running. Please close it first."
else
echo -en "Starting server..."
- ${SUDO_CMD} screen -dmS "${SESSION_NAME}" /bin/bash -c "cd '${SERVER_ROOT}'; java ${JAVA_PARMS} -jar '${SERVER_ROOT}/${MAIN_EXECUTABLE}' nogui"
+ ${SUDO_CMD} screen -dmS "${SESSION_NAME}" /bin/bash -c "cd '${SERVER_ROOT}'; ${SERVER_START_CMD}"
+ ${SUDO_CMD} screen -S "${SESSION_NAME}" -X logfile "/tmp/${myname}_screen_command_dump.txt"
echo -e "\e[39;1m done\e[0m"
fi
@@ -266,7 +272,7 @@ server_status() {
# Calculating memory usage
for p in $(${SUDO_CMD} pgrep -f "${MAIN_EXECUTABLE}"); do
ps -p${p} -O rss | tail -n 1;
- done | gawk '{ count ++; sum += $2 }; END {count --; print "Number of processes =", count, "(screen, bash,", count-2, "x java)"; print "Total memory usage =", sum/1024, "MB" ;};'
+ done | gawk '{ count ++; sum += $2 }; END {count --; print "Number of processes =", count, "(screen, bash,", count-2, "x server)"; print "Total memory usage =", sum/1024, "MB" ;};'
else
echo -e "Status:\e[39;1m stopped\e[0m"
fi
@@ -397,9 +403,7 @@ server_command() {
${SUDO_CMD} screen -S "${SESSION_NAME}" -Q select . > /dev/null
if [[ $? -eq 0 ]]; then
- ${SUDO_CMD} sleep 0.3 & tail -f --pid=$! -s 0.1 -n 0 "${LOGPATH}/latest.log" &
- game_command "$@"
- wait
+ return_stdout=true game_command "$@"
else
echo "There is no ${SESSION_NAME} session to connect to."
fi