#!/bin/bash # Zomboid World Reset Script # Triggered by systemd path unit when discord bot requests reset set -e LOGFILE="{{ podman_home }}/.local/share/volumes/zomboid/logs/world-reset.log" TRIGGER_FILE="{{ podman_home }}/.local/share/volumes/gregtime/data/zomboid-reset.trigger" SERVER_NAME="{{ zomboid_server_names[zomboid_server_mode] }}" SAVES_PATH="{{ podman_home }}/.local/share/volumes/zomboid/data/Saves/Multiplayer/${SERVER_NAME}" DB_PATH="{{ podman_home }}/.local/share/volumes/zomboid/data/db/${SERVER_NAME}.db" log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOGFILE" } # Ensure XDG_RUNTIME_DIR is set for systemctl --user export XDG_RUNTIME_DIR="/run/user/$(id -u)" log "World reset triggered" # Read requester info from trigger file if available # Note: Must use podman unshare because file is owned by container's UID (232071) if podman unshare test -f "$TRIGGER_FILE"; then REQUESTER=$(podman unshare cat "$TRIGGER_FILE") log "Requested by: $REQUESTER" podman unshare rm -f "$TRIGGER_FILE" fi # Stop server log "Stopping zomboid service..." systemctl --user stop zomboid.service || true sleep 5 # Delete world (using podman unshare to work within user namespace) log "Deleting world saves at: $SAVES_PATH" if [[ -d "$SAVES_PATH" ]]; then podman unshare rm -rf "$SAVES_PATH" log "World saves deleted" else log "No world saves found at $SAVES_PATH" fi # Delete player database log "Deleting player database at: $DB_PATH" if [[ -f "$DB_PATH" ]]; then podman unshare rm -f "$DB_PATH" log "Player database deleted" else log "No database found at $DB_PATH" fi # Start server log "Starting zomboid service..." systemctl --user start zomboid.service log "World reset complete - new world will generate on first connection"