AstroAutoSave Documentation
Complete configuration guide for AstroAutoSave v1.0.0. Setup, commands, permissions, integrations with EssentialsX / CMI / LuckPerms / PlaceholderAPI, troubleshooting, and FAQ.
Overview
AstroAutoSave runs world saves at a configurable interval and broadcasts a warning to chat before each save. It replaces the vanilla auto-save with controlled, observable behavior. Useful for servers where players notice lag spikes from background saves, or where you want a visible signal that the server is healthy.
Why pick this. Vanilla auto-save fires silently every 5 minutes by default and can cause noticeable hitches on busy worlds. Most server owners just disable it and forget to save manually. AstroAutoSave makes it visible, broadcasts a warning so players know, and runs the save on the server scheduler so it does not block.
Server types
- Survival SMP
- Skyblock
- Faction servers
- Network hubs
- Modded server backends
Problems it solves
- Players complain about random lag every few minutes — caused by silent vanilla auto-save
- You disabled vanilla autosave and now risk world corruption on crash
- Backup scripts run during peak hours and conflict with the auto-save
- No visibility into when the server last successfully saved
- Need to coordinate saves with external backup tools (rsync, restic)
Installation
- 1
Download the plugin
Get AstroAutoSave-1.0.0.jar from the download page.
- 2
Upload to your server
Place AstroAutoSave-1.0.0.jar in your server's plugins/ folder.
- 3
Restart the server
Run /stop to shut down, then start the server again. Do not use /reload.
- 4
Verify installation
Check the console for "[AstroAutoSave] Enabled" or run /plugins.
- 5
Configure
Edit plugins/AstroAutoSave/config.yml. Use the reload command to apply changes.
Requirements: Paper, Purpur, or Folia server running Minecraft 1.20+. Java 21+.
Configuration
The default config.yml is generated on first run. Edit and reload to apply changes. Below are 4 example configs for different server types.
Default (every 5 minutes, with warning)
Drop-in replacement for vanilla autosave with a visible warning.
interval-seconds: 300
warning-seconds-before: 10
broadcast-warning: "&e[Server] &7Saving in 10 seconds..."
broadcast-complete: "&a[Server] &7Save complete (%duration%ms)"
broadcast-complete-enabled: true
silent-mode: falseQuiet mode for SMP
Save every 5 minutes but no broadcast — only logged to console.
interval-seconds: 300
warning-seconds-before: 0
silent-mode: trueAggressive saves for unstable hosting
Save every 2 minutes if you suspect your host crashes often.
interval-seconds: 120
warning-seconds-before: 5
broadcast-warning: "&e[Save] &7Backup point in 5s"
broadcast-complete-enabled: falseSlow-save for huge worlds
On a server with a 50GB world, you want sparse saves.
interval-seconds: 1800 # 30 minutes
warning-seconds-before: 30
broadcast-warning: "&e[Server] &7Saving in 30 seconds. Brief lag possible."
broadcast-complete: "&a[Server] &7Save done (%duration%ms)"
worlds:
- world
- world_nether
- world_the_end
# Specify worlds explicitly to save only what mattersConfig location
plugins/AstroAutoSave/config.ymlUse Cases
Real scenarios with step-by-step setup. Pick the closest match to your server and adapt.
Coordinate auto-save with external backup script
Scenario: You run rsync backups every hour at :00. You want the auto-save to fire at :55 so backups capture a fresh world.
- Set 'interval-seconds: 3600' (one save per hour).
- Set 'start-offset-seconds: 3300' so first save is 55 minutes after server start, then every hour.
- Schedule rsync at :00 (after the :55 save completes).
- Test: watch logs to confirm save fires at :55 every hour.
Silent saves during event hours
Scenario: You host a PvP event every Saturday. You do not want save broadcasts spamming the event chat.
- Before event: /autosave silent on (runtime override).
- After event: /autosave silent off.
- Or schedule via crontab to flip the config silent-mode value and /autosave reload.
Disable vanilla autosave but keep AstroAutoSave
Scenario: You want exactly one autosave path so you can debug performance.
- In bukkit.yml, set 'ticks-per: autosave: 0' (disables vanilla autosave).
- AstroAutoSave runs on its own scheduler — no conflict.
- Verify by watching server.log: should only see AstroAutoSave's save messages, no Bukkit-generated ones.
Force a save before world reset
Scenario: You reset a competitive world every Monday morning. You want a save right before the reset for backup.
- Schedule a cron job that runs Sunday 23:55: /autosave now via console.
- Plugin executes a save synchronously (or with the standard async write depending on flag).
- Followed by your world-reset script Monday 00:00.
Commands
| Command | Description | Permission |
|---|---|---|
/autosave | View plugin info | astroautosave.command |
/autosave reload | Reload config | astroautosave.reload |
/autosave now | Trigger manual save | astroautosave.now |
Permissions
| Node | Description | Default |
|---|---|---|
astroautosave.command | View autosave info | true |
astroautosave.reload | Reload config | op |
astroautosave.now | Manual save | op |
Tip: Use LuckPerms to manage permissions per player or group.
Integrations with other plugins
How AstroAutoSave works alongside common Spigot/Paper plugins.
ChunkMaster / FastChunkPregenerator
Chunk generators put heavy load on disk during pregen. Pair AstroAutoSave with a longer interval (interval-seconds: 1800) during pregen to avoid concurrent writes.
PlugMan / PlugManX
If you reload AstroAutoSave with /plugman reload AstroAutoSave, the scheduled tasks are cancelled and re-registered. Safer than full /reload.
EssentialsX
EssentialsX's /save-all is independent. AstroAutoSave's save runs Bukkit's saveAll() under the hood, so they are equivalent. No conflict.
CoreProtect
CoreProtect logs to its own database; AstroAutoSave does not touch it. No conflict.
Troubleshooting
Save broadcasts fire but world files do not update
Cause: World write-protection (filesystem read-only) or insufficient disk space.
Fix:
- Check df -h to confirm disk space.
- Check the world directory permissions: 'ls -la world/region/'.
- Look in the server log for 'World save failed' errors.
- Restart the server to re-mount the world directory if it is a symlink.
Save takes 30+ seconds and lags the server
Cause: Huge world, slow disk, or another plugin holding the world lock.
Fix:
- Move world data to an SSD if not already.
- Reduce the number of loaded chunks via Paper's view-distance / simulation-distance.
- Set 'use-paper-async-save: true' if running Paper 1.20+ — saves run off the main thread.
- Disable chunk pregeneration during peak hours.
Configured 5-minute interval but saves are happening every minute
Cause: Vanilla auto-save is still enabled and overlapping.
Fix:
- Set 'ticks-per: autosave: 0' in bukkit.yml.
- Or set vanilla autosave to a very high value like 72000 (1 hour) so AstroAutoSave's 5-minute interval is the dominant trigger.
No broadcast despite broadcast-warning being set
Cause: silent-mode is true, or a chat plugin is filtering the message.
Fix:
- Check 'silent-mode: false' in config.yml.
- Check that no anti-spam plugin is suppressing system messages.
- Run /autosave debug to test the broadcast pipeline.
FAQ
Does this replace vanilla auto-save or work alongside it?
We recommend disabling vanilla auto-save (set 'ticks-per: autosave: 0' in bukkit.yml) and using AstroAutoSave as the only auto-save path. They can coexist but you will get double saves, which wastes I/O.
Will the save lag the server?
On Paper 1.20+, set 'use-paper-async-save: true' to run saves on a background thread. Lag is minimal (< 5 ticks). On older Paper / Spigot, saves are synchronous and can cause 1-3 second hitches on busy worlds.
How do I save only specific worlds?
Set 'worlds: [world, world_nether]' in config.yml. Default is all loaded worlds. Useful for excluding test worlds or backup worlds.
Can I trigger a save manually?
Yes. /autosave now runs an immediate save. Requires astroautosave.admin permission.
Is the save synchronous or async?
By default, synchronous (same as Bukkit's /save-all). On Paper 1.20+ with 'use-paper-async-save: true', it uses Paper's async save API which is faster.
Does it save player data too or just world data?
Both. Bukkit's saveAll() saves all loaded worlds plus all online player data files. No separate config needed.
What happens if a save fails?
The plugin logs an error and skips that save. The next save fires at the normal interval. If three saves in a row fail, the plugin sends a warning broadcast to ops (astroautosave.alerts permission).
Can I disable the broadcasts but keep the saves?
Yes. Set 'silent-mode: true'. Saves still fire on the schedule, only logged to console.
Changelog
v1.0.02026-05-13
- Initial public release
- Configurable interval and warning
- Per-world save targeting
- Optional Paper async save
- /autosave now and /autosave reload commands
- astroautosave.admin permission
- Failure broadcast to ops