7 Days to Die dedicated servers continue running game time even when no players are connected, which can lead to unwanted blood moons, resource depletion, and base decay during offline periods. This comprehensive guide provides multiple strategies to prevent or minimize time progression when your server is empty, including server configuration, automation scripts, mod solutions, and best practices for different playgroup sizes.
When a 7DTD dedicated server runs without players:
This can result in players returning to find they've missed critical blood moon nights, their bases have deteriorated, and valuable resources have despawned or been consumed by wandering zombies.
Adjusting server settings is the first and most straightforward method to minimize offline progression impact:
| Setting | Default Value | Recommended for Offline | Effect | Configuration File |
|---|---|---|---|---|
DayNightLength |
60 (minutes) | 90-120 | Slows day/night cycle, reducing time passed during offline hours | sandbox option |
BloodMoonFrequency |
7 (days) | 10-14 | Reduces frequency of blood moons, making missed nights less punishing | sandbox option |
LandClaimOfflineDurabilityModifier |
4 | 8-12 | Increases land claim block durability when owners are offline | serverconfig.xml |
LandClaimDecayMode |
0 (Linear) | 2 (No decay) | Prevents base decay entirely when players are offline | serverconfig.xml |
LootRespawnDays |
7 | 14-30 | Slows loot container respawn, preserving resources | sandbox option (setgamepref, V3.0+) |
MaxSpawnedZombies |
64 | 32-48 | Reduces zombie load on empty server, improving performance | serverconfig.xml |
EnemySpawnMode |
True | False (test only) | Disables zombie spawning entirely (not recommended for normal play) | serverconfig.xml |
Where these settings live, as of V3.0 and later. The gameplay values on this page are still right, but they are no longer properties in serverconfig.xml. V3.0 removed 30 properties from that file and moved the gameplay rules into sandbox options. A V3.2.0 server does not read BloodMoonFrequency, DayNightLength, LootAbundance or XPMultiplier from the config file, and adding them there changes nothing and raises no error. Set them with a SandboxCode before the world is created, or with setgamepref on a running server. See the SandboxCode migration guide and the current serverconfig.xml reference.
# On a running V3.x server, over telnet or the control panel console:
setgamepref DayNightLength 90 # 90 real minutes per in-game day
setgamepref BloodMoonFrequency 10 # blood moon every 10 days
setgamepref LootRespawnDays 21 # 3 week loot respawn
# Land claim settings are still serverconfig.xml properties:
<property name="LandClaimOfflineDurabilityModifier" value="10"/ > <property name="LandClaimDecayMode" value="2"/ > <!-- No decay when offline -- > <property name="MaxSpawnedZombies" value="48"/ > <!-- Reduced zombie count -- >
For small groups with predictable play schedules, manual management can be effective:
Create simple scripts for non-technical players to control the server:
start 7DaysToDieServer.exe -configfile=serverconfig.xmltaskkill /F /IM 7DaysToDieServer.exe./startserver.sh -configfile=serverconfig.xmlpkill -f 7DaysToDieServerAutomated systems provide the most reliable time-freezing without player intervention:
| Solution Type | Tools/Implementations | Difficulty | Effectiveness | Best For |
|---|---|---|---|---|
| Script-Based Monitoring | Custom bash/batch scripts, cron jobs | Medium | High | Technical users, Linux servers |
| Server Management Tools | LinuxGSM, AMP, Pterodactyl | Low-Medium | Very High | All users, especially Windows |
| Containerization | Docker with auto-pause scripts | High | Very High | Advanced users, cloud hosting |
| Cloud Automation | AWS Lambda, Azure Functions | Very High | Extreme | Enterprise, paid hosting |
LinuxGSM includes player detection features. Create a cron job to check for empty servers:
#!/bin/bash
# /home/7dtd/check_empty.sh
PLAYER_COUNT=$(/home/7dtd/7dtdserver monitor | grep "Players:" | awk '{print $2}')
if [ "$PLAYER_COUNT" -eq "0" ]; then
# Server empty for more than 30 minutes
if [ -f /tmp/server_empty ]; then
EMPTY_TIME=$(cat /tmp/server_empty)
CURRENT_TIME=$(date +%s)
if [ $(($CURRENT_TIME - $EMPTY_TIME)) -gt 1800 ]; then
/home/7dtd/7dtdserver stop
rm /tmp/server_empty
fi
else
echo $(date +%s) > /tmp/server_empty
fi
else
rm -f /tmp/server_empty
fi
Add to crontab: */5 * * * * /home/7dtd/check_empty.sh
Several community-developed solutions address the time progression problem:
| Solution | Type | Features | Compatibility | Installation |
|---|---|---|---|---|
| CSMM (Custom Server Mod Manager) | Server Management | Auto-pause, player tracking, web interface | Alpha 20+ | Moderate |
| Alloc's Server Fixes | Mod | Optional time freeze when empty | Alpha 19+ | Easy |
| 7 Days to Die Server Manager | GUI Application | Scheduled shutdown, player monitoring | All versions | Easy |
| Botman Mod | Chat Bot + Mod | Auto-restart, player tracking, commands | Alpha 17+ | Moderate |
| Time Control Mod | Game Mod | Adjustable time scale, pause commands | Alpha 20+ | Easy |
<!-- In serveradmin.xml or mod config -- > <property name="PauseWhenEmpty" value="true" / > <property name="EmptyTimeoutMinutes" value="30" / > <property name="ResumeWhenPlayerJoins" value="true" / >
Different approaches work best depending on your player count and schedule:
For technical users, direct time manipulation is possible:
Warning: Editing save files directly can corrupt your world. Always backup first.
~/7DaysToDie/Saves/[WorldName]/[Seed]/gameprefs.xml or equivalent time-tracking filesDayTime values to roll back or freeze timeIf using CSMM or similar tools with REST API:
# Example: Check if server empty via API
curl -X GET "http://yourserver:8081/api/getgamestats" | grep "playerCount"
# Example: Send pause command via Telnet
echo "say Server pausing due to inactivity" | nc localhost 8081
echo "shutdown" | nc localhost 8081
For most private servers, this combination works well: