„mmh..ist gerade jemand am ALsheim-Bauen?“
das ist ne interessante Frage und kann entscheidend dafür sein, selbst auch dazuzukommen und mitzumachen oder miteinander zu sprechen und zu planen.
Deshalb gibt es jetzt die „wer-ist-online“-Anzeige rechts unten in der Seitenleiste bzw in der mobilen Ansicht ganz unten.

Wer das so oder ähnlich auch auf dem eigenen Minecraft-Server nutzen will hier meine Umsetzung
Alle 10 Minuten wird dieses Skript gestartet, was „info“ an die screen-Session „paperserver“ schickt, danach das logfile grept und in eine html-Datei schreibt. Diese html-Datei curlt das Skript dann auf den Webseite über ftp hoch. In unserem Beispiel diese hier –klick– ..und diese Datei muss dann nur noch in die Webseite iframig eingebettet werden.
Und hier für Interessierte das Skript:
#!/bin/bin/bash
# ─── KONFIGURATION ───────────────────────────────────────────
MC_LOG="/home/sb/paperserver/logs/latest.log" # Pfad zum Paper-Log
OUTPUT_FILE="/home/sb/mc-online.html" # Temporäre HTML-Datei
FTP_HOST="**********"
FTP_USER="*********"
FTP_PASS="**********"
FTP_PATH="/mc-online.html" # Zielpfad auf dem WP-Server
SERVER_NAME="Alsheim in Minecraft"
# ─────────────────────────────────────────────────────────────
# Spieler aus dem Log holen:
# Paper schreibt bei /list: "[HH:MM:SS INFO]: There are X of a max of Y players online: Name1, Name2"
# Wir nehmen die letzte solche Zeile im Log
screen -S paperserver -X stuff "/list$(printf '\r')"
PLAYER_LINE=$(grep -a "players online:" "$MC_LOG" 2>/dev/null | tail -n 1)
if [[ -z "$PLAYER_LINE" ]]; then
PLAYERS=()
COUNT=0
else
# Alles nach dem letzten ":" extrahieren → "Name1, Name2" oder leer
PLAYER_STRING=$(echo "$PLAYER_LINE" | sed 's/.*players online: //')
PLAYER_STRING=$(echo "$PLAYER_STRING" | sed 's/\r//' | xargs)
if [[ -z "$PLAYER_STRING" ]]; then
PLAYERS=()
COUNT=0
else
# Komma-getrennte Namen in Array aufteilen
IFS=',' read -ra PLAYERS <<< "$PLAYER_STRING"
# Leerzeichen trimmen
PLAYERS=("${PLAYERS[@]// /}")
# Leere Einträge entfernen
PLAYERS=($(printf '%s\n' "${PLAYERS[@]}" | grep -v '^$'))
COUNT=${#PLAYERS[@]}
fi
fi
TIMESTAMP=$(date "+%d.%m.%Y %H:%M Uhr")
cp /home/sb/mc-online_head.html $OUTPUT_FILE
echo '<div class="time">' >> $OUTPUT_FILE
echo "$TIMESTAMP:" >> $OUTPUT_FILE
echo '</div> <div class="players">' >> $OUTPUT_FILE
if [[ $COUNT -eq 0 ]]; then
echo "Niemand online – Stand: $TIMESTAMP" >> $OUTPUT_FILE
else
for PLAYER in "${PLAYERS[@]}"; do
TRIMMED=$(echo "$PLAYER" | xargs)
echo "<div class=\"player\"> $TRIMMED </div>" >> $OUTPUT_FILE
done
fi
echo "</div> </div> </body> </html>" >> $OUTPUT_FILE
curl --silent --show-error --ftp-create-dirs \
-u "${FTP_USER}:${FTP_PASS}" \
-T "$OUTPUT_FILE" \
"ftp://${FTP_HOST}${FTP_PATH}"






