diff options
author | StaticRocket | 2021-07-12 21:06:43 -0400 |
---|---|---|
committer | Gordian Edenhofer | 2021-07-13 09:35:15 +0200 |
commit | 025a49b2517e6ed72666991543e3eb643e5055d4 (patch) | |
tree | 93e152a166aced8b2807f94ed1ee8a59fcf9b631 | |
parent | 209d272f3033340e5e66531cc6a8f85d8936a24d (diff) | |
download | aur-025a49b2517e6ed72666991543e3eb643e5055d4.tar.gz |
minecraft-server: Add locks to avoid conflicts
-rw-r--r-- | .SRCINFO | 2 | ||||
-rw-r--r-- | PKGBUILD | 2 | ||||
-rwxr-xr-x | minecraftd.sh | 9 |
3 files changed, 7 insertions, 6 deletions
@@ -32,6 +32,6 @@ pkgbase = minecraft-server sha512sums = a62c8c04e08dbac0db0aa2eeb505d70f8fd925bd2e427899512ba3ac828d4644e1c43c8d92325c6bc49c8d9ecb40cb5c44bf5957a63980b1e2cf86fdb38a05a7 sha512sums = a74f4e31065b6c6f5c830182de05a8c75a6de6eaac7b3dc26479827646ef20ab872509aac88be613048c97d378711c38612ec7ac92d22134acefd40f6e0a99da sha512sums = 30e434ba183527da8047b1ffe403a083f1af34dbd229b5871222e9da0004cdf5d4152eaa4b73215befcb1233d08cc757af32ad6b572f4b6d2a623b6f120aa0d9 - sha512sums = 207781b07f5dee266ac4b6cff0dabfe5c34173e07749dd9ed78c07c60c9c67101badaaa591c123aec4dadf1ff943bf0a58be0cff49373c5d19b952b19a0cba90 + sha512sums = 5c61109ae8c22049091cfbec73e76f3dfc65fa24036fe505d135c71d826fcda975e1cfcb28c5e80c075bfb13e5d8bcaef58b9685af721ed87e37776baf1661ec pkgname = minecraft-server @@ -32,7 +32,7 @@ sha512sums=('fe6e48e2cee38224d2c88f04c19afca9c21fddbe6077b5538e0a0581c2f6c4478ec 'a62c8c04e08dbac0db0aa2eeb505d70f8fd925bd2e427899512ba3ac828d4644e1c43c8d92325c6bc49c8d9ecb40cb5c44bf5957a63980b1e2cf86fdb38a05a7' 'a74f4e31065b6c6f5c830182de05a8c75a6de6eaac7b3dc26479827646ef20ab872509aac88be613048c97d378711c38612ec7ac92d22134acefd40f6e0a99da' '30e434ba183527da8047b1ffe403a083f1af34dbd229b5871222e9da0004cdf5d4152eaa4b73215befcb1233d08cc757af32ad6b572f4b6d2a623b6f120aa0d9' - '207781b07f5dee266ac4b6cff0dabfe5c34173e07749dd9ed78c07c60c9c67101badaaa591c123aec4dadf1ff943bf0a58be0cff49373c5d19b952b19a0cba90') + '5c61109ae8c22049091cfbec73e76f3dfc65fa24036fe505d135c71d826fcda975e1cfcb28c5e80c075bfb13e5d8bcaef58b9685af721ed87e37776baf1661ec') _game="minecraft" _server_root="/srv/minecraft" diff --git a/minecraftd.sh b/minecraftd.sh index 873a708cfb65..415ca6f8e83d 100755 --- a/minecraftd.sh +++ b/minecraftd.sh @@ -68,6 +68,7 @@ fi # 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} tmux -L "${SESSION_NAME}" wait-for -L "command_lock" if [[ -z "${return_stdout:-}" ]]; then ${SUDO_CMD} tmux -L "${SESSION_NAME}" send-keys -t "${SESSION_NAME}":0.0 "$*" Enter else @@ -77,6 +78,7 @@ game_command() { ${SUDO_CMD} tmux -L "${SESSION_NAME}" pipe-pane -t "${SESSION_NAME}":0.0 ${SUDO_CMD} cat "${GAME_COMMAND_DUMP}" fi + ${SUDO_CMD} tmux -L "${SESSION_NAME}" wait-for -U "command_lock" } # Check whether there are player on the server through list @@ -119,11 +121,8 @@ idle_server_daemon() { if socket_has_session "${SESSION_NAME}"; then # Game server is up and running - if [[ -n "$(tmux -L "${SESSION_NAME}" list-clients -t "${SESSION_NAME}":0.0 2> /dev/null)" ]]; then - # An administrator is connected to the console, pause player checking - echo "An admin is connected to the console. Pause player checking." # Check for active player - elif SUDO_CMD="" is_player_online; then + if SUDO_CMD="" is_player_online; then # No player was seen on the server through list no_player=$(( no_player + CHECK_PLAYER_TIME )) # Stop the game server if no player was active for at least ${IDLE_IF_TIME} @@ -418,7 +417,9 @@ server_command() { # Enter the tmux game session server_console() { if socket_has_session "${SESSION_NAME}"; then + ${SUDO_CMD} tmux -L "${SESSION_NAME}" wait-for -L "command_lock" ${SUDO_CMD} tmux -L "${SESSION_NAME}" attach -t "${SESSION_NAME}":0.0 + ${SUDO_CMD} tmux -L "${SESSION_NAME}" wait-for -U "command_lock" else echo "There is no ${SESSION_NAME} session to connect to." fi |