upgpkg: minecraft-server 1.9.4-4
Let player check handle more formats from different plugins etc. in which the number of players is communicated. upgpkg: spigot 1.9.4-2
This commit is contained in:
parent
f2baa544d9
commit
927f9d50f3
5
.SRCINFO
5
.SRCINFO
|
@ -1,7 +1,7 @@
|
||||||
pkgbase = minecraft-server
|
pkgbase = minecraft-server
|
||||||
pkgdesc = Minecraft server unit files, script, and jar
|
pkgdesc = Minecraft server unit files, script, and jar
|
||||||
pkgver = 1.9.4
|
pkgver = 1.9.4
|
||||||
pkgrel = 3
|
pkgrel = 4
|
||||||
url = http://minecraft.net/
|
url = http://minecraft.net/
|
||||||
install = minecraft-server.install
|
install = minecraft-server.install
|
||||||
arch = any
|
arch = any
|
||||||
|
@ -10,6 +10,7 @@ pkgbase = minecraft-server
|
||||||
depends = screen
|
depends = screen
|
||||||
depends = sudo
|
depends = sudo
|
||||||
depends = bash
|
depends = bash
|
||||||
|
depends = awk
|
||||||
optdepends = tar: needed in order to create world backups
|
optdepends = tar: needed in order to create world backups
|
||||||
optdepends = netcat: required in order to suspend an idle server
|
optdepends = netcat: required in order to suspend an idle server
|
||||||
conflicts = minecraft-server-systemd
|
conflicts = minecraft-server-systemd
|
||||||
|
@ -27,6 +28,6 @@ pkgbase = minecraft-server
|
||||||
md5sums = fef6fadd0739ae03ff71ba61025be207
|
md5sums = fef6fadd0739ae03ff71ba61025be207
|
||||||
md5sums = afb84ad0316af0aca421b36eaa2bbd90
|
md5sums = afb84ad0316af0aca421b36eaa2bbd90
|
||||||
md5sums = 00045683c06924d765ac14887218ffcc
|
md5sums = 00045683c06924d765ac14887218ffcc
|
||||||
md5sums = 74e5b9dc250b66bff194bed3ebf1c61e
|
md5sums = 7605d5f67e889f6c3743f63ac840ab54
|
||||||
|
|
||||||
pkgname = minecraft-server
|
pkgname = minecraft-server
|
||||||
|
|
6
PKGBUILD
6
PKGBUILD
|
@ -4,12 +4,12 @@
|
||||||
|
|
||||||
pkgname=minecraft-server
|
pkgname=minecraft-server
|
||||||
pkgver=1.9.4
|
pkgver=1.9.4
|
||||||
pkgrel=3
|
pkgrel=4
|
||||||
pkgdesc="Minecraft server unit files, script, and jar"
|
pkgdesc="Minecraft server unit files, script, and jar"
|
||||||
arch=('any')
|
arch=('any')
|
||||||
url="http://minecraft.net/"
|
url="http://minecraft.net/"
|
||||||
license=('custom')
|
license=('custom')
|
||||||
depends=('java-runtime-headless' 'screen' 'sudo' 'bash')
|
depends=('java-runtime-headless' 'screen' 'sudo' 'bash' 'awk')
|
||||||
optdepends=("tar: needed in order to create world backups"
|
optdepends=("tar: needed in order to create world backups"
|
||||||
"netcat: required in order to suspend an idle server")
|
"netcat: required in order to suspend an idle server")
|
||||||
conflicts=('minecraft-server-systemd' 'minecraft-canary')
|
conflicts=('minecraft-server-systemd' 'minecraft-canary')
|
||||||
|
@ -27,7 +27,7 @@ md5sums=('292feb3085809e714da2ca75514b9d5b'
|
||||||
'fef6fadd0739ae03ff71ba61025be207'
|
'fef6fadd0739ae03ff71ba61025be207'
|
||||||
'afb84ad0316af0aca421b36eaa2bbd90'
|
'afb84ad0316af0aca421b36eaa2bbd90'
|
||||||
'00045683c06924d765ac14887218ffcc'
|
'00045683c06924d765ac14887218ffcc'
|
||||||
'74e5b9dc250b66bff194bed3ebf1c61e')
|
'7605d5f67e889f6c3743f63ac840ab54')
|
||||||
|
|
||||||
_game="minecraft"
|
_game="minecraft"
|
||||||
_server_root="/srv/minecraft"
|
_server_root="/srv/minecraft"
|
||||||
|
|
|
@ -65,6 +65,26 @@ game_command() {
|
||||||
${SUDO_CMD} screen -S "${SESSION_NAME}" -X stuff "`printf \"$*\r\"`"
|
${SUDO_CMD} screen -S "${SESSION_NAME}" -X stuff "`printf \"$*\r\"`"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Check whether there are player on the server through list
|
||||||
|
is_player_online() {
|
||||||
|
game_command list
|
||||||
|
sleep 0.6
|
||||||
|
# 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.
|
||||||
|
# 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
|
||||||
|
# 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') -gt 0 ]]; then
|
||||||
|
# No player is online
|
||||||
|
return 0;
|
||||||
|
else
|
||||||
|
# A player is online (or it could not be determined)
|
||||||
|
return 1;
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Check whether the server is visited by a player otherwise shut it down
|
# Check whether the server is visited by a player otherwise shut it down
|
||||||
idle_server_daemon() {
|
idle_server_daemon() {
|
||||||
# This function is run within a screen session of the GAME_USER therefore SUDO_CMD can be omitted
|
# This function is run within a screen session of the GAME_USER therefore SUDO_CMD can be omitted
|
||||||
|
@ -88,9 +108,8 @@ idle_server_daemon() {
|
||||||
if [[ "$(screen -S "${SESSION_NAME}" -ls | sed -n 2p | awk '{ print $2 }')" == "(Attached)" ]]; then
|
if [[ "$(screen -S "${SESSION_NAME}" -ls | sed -n 2p | awk '{ print $2 }')" == "(Attached)" ]]; then
|
||||||
# An administrator is connected to the console, pause player checking
|
# An administrator is connected to the console, pause player checking
|
||||||
echo "An admin is connected to the console. Pause player checking."
|
echo "An admin is connected to the console. Pause player checking."
|
||||||
# The list command prints a line containing the usernames after the last occurrence of ": "
|
# Check for active player
|
||||||
# and since playernames may not contain this string the clean player-list can be easily retrieved.
|
elif SUDO_CMD="" is_player_online; then
|
||||||
elif [[ -z $(SUDO_CMD="" game_command list; sleep 0.6; tail -n 1 "${LOGPATH}/latest.log" | sed -r 's/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g' | sed 's/.*\: //' | tr -d '\n') ]]; then
|
|
||||||
# No player was seen on the server through list
|
# No player was seen on the server through list
|
||||||
no_player=$(( no_player + CHECK_PLAYER_TIME ))
|
no_player=$(( no_player + CHECK_PLAYER_TIME ))
|
||||||
# Stop the game server if no player was active for at least ${IDLE_IF_TIME}
|
# Stop the game server if no player was active for at least ${IDLE_IF_TIME}
|
||||||
|
@ -190,9 +209,8 @@ server_stop() {
|
||||||
if [[ $? -eq 0 ]]; then
|
if [[ $? -eq 0 ]]; then
|
||||||
# Game server is up and running, gracefully stop the server when there are still active players
|
# Game server is up and running, gracefully stop the server when there are still active players
|
||||||
|
|
||||||
# The list command prints a line containing the usernames after the last occurrence of ": "
|
# Check for active player
|
||||||
# and since playernames may not contain this string the clean player-list can be easily retrieved.
|
if is_player_online; then
|
||||||
if [[ -z $(game_command list; sleep 0.6; tail -n 1 "${LOGPATH}/latest.log" | sed -r 's/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g' | sed 's/.*\: //' | tr -d '\n') ]]; then
|
|
||||||
# No player was seen on the server through list
|
# No player was seen on the server through list
|
||||||
echo -en "Server is going down..."
|
echo -en "Server is going down..."
|
||||||
game_command stop
|
game_command stop
|
||||||
|
|
Loading…
Reference in New Issue
Block a user