aboutsummaryrefslogtreecommitdiffstats
path: root/mc-cmd.sh
diff options
context:
space:
mode:
authorFilip Wandzio <contact@philw.dev>2026-01-25 00:50:42 +0100
committerFilip Wandzio <contact@philw.dev>2026-01-25 00:50:42 +0100
commit41af486c3523180889655803517a63dbab22b5e5 (patch)
tree700295043e5a1579613143b3b4b4377cdcd7bea5 /mc-cmd.sh
downloadmcsv-41af486c3523180889655803517a63dbab22b5e5.tar.gz
mcsv-41af486c3523180889655803517a63dbab22b5e5.zip
Implement basic paper server configurationHEADmaster
Diffstat (limited to '')
-rw-r--r--mc-cmd.sh35
1 files changed, 35 insertions, 0 deletions
diff --git a/mc-cmd.sh b/mc-cmd.sh
new file mode 100644
index 0000000..e3c9d6b
--- /dev/null
+++ b/mc-cmd.sh
@@ -0,0 +1,35 @@
1#!/bin/sh
2set -e
3
4ENV_FILE=".env"
5
6[ -f "$ENV_FILE" ] || { echo "Error: $ENV_FILE not found."; exit 1; }
7
8while IFS='=' read -r key value; do
9 case "$key" in
10 ''|\#*) continue ;;
11 esac
12 value=$(echo "$value" | sed 's/^"//;s/"$//;s/^'\''//;s/'\''$//')
13 export "$key=$value"
14done < "$ENV_FILE"
15
16[ -z "$RCON_PORT" ] && echo "Error: RCON_PORT not set." && exit 1
17[ -z "$RCON_PASSWORD" ] && echo "Error: RCON_PASSWORD not set." && exit 1
18[ -z "$SERVER_NAME" ] && echo "Error: SERVER_NAME not set." && exit 1
19
20COMMAND="$*"
21
22[ -z "$COMMAND" ] && echo "Error: no command provided." && exit 1
23[ "$(printf '%s' "$COMMAND" | wc -c)" -gt 256 ] && echo "Error: command too long." && exit 1
24
25LOGFILE="./commands.log"
26touch "$LOGFILE"
27
28docker exec -i "${SERVER_NAME}_minecraft" rcon-cli \
29 --host localhost \
30 --port "${RCON_PORT}" \
31 --password "${RCON_PASSWORD}" \
32 $COMMAND \
33 && echo "$(date '+%Y-%m-%d %H:%M:%S') | $COMMAND" >> "$LOGFILE" \
34 && echo "Command sent: $COMMAND" \
35 || { echo "Error: failed to send command to server."; exit 1; }