Features
- Scheduled Automatic Backup: Configurable backup interval, default 60 minutes
- Time-Based Backup Mode: Trigger backups at specific times in a specified timezone (supports 24/12-hour format)
- Manual Backup Trigger: Execute backup immediately via command
- Startup Backup: Auto-execute backup on server start (optional)
- Hot Backup: Asynchronous execution, non-blocking main thread
- World Save Control: Save worlds before backup, pause autosave during backup to prevent data inconsistency
- Compressed Backup: Support compressing backups as zip format to save disk space
- Backup File Management: Auto-clean old backups, keep specified count of recent backups (also cleans after manual GitHub upload)
- Multi-Cloud Upload: Local directory, FTP/FTPS, WebDAV, Baidu Netdisk, 123 Cloud
- GitHub Backup: Upload/download backups via GitHub Release API, supports auto-creation of private repository
- Alert Notifications: Send alerts via Email, Lark bot, DingTalk bot on backup failure
- Backup Restore: Restore world data from specified backup (will reload worlds)
- Hot Config Reload: Reload config without server restart
- Status Query: View plugin status and scheduler info
Installation
- Download the latest
PluralBackupJava-1.0.0.jar - Place the jar file in the server's
plugins/directory - Start the server, the plugin will auto-generate default config at
plugins/PluralBackup/config.yml - Edit the config file as needed
- Execute
/backup reloador restart the server to apply changes
Commands
All commands require pluralbackup.admin permission (default: OP).
| Command | Description |
|---|---|
/backup now | Execute a backup immediately |
/backup list | List all backups |
/backup restore <backup-name> | Restore specified backup |
/backup clean | Clean old backups |
/backup reload | Reload configuration file |
/backup status | View plugin status |
/backup github-list | List backup versions on GitHub |
/backup github-download <version> | Download specified version from GitHub |
/backup github-upload | Backup server and upload to GitHub |
Aliases: /pbackup, /pluralbackup
Configuration
Config file located at plugins/PluralBackup/config.yml:
# Basic Backup Settings
backup:
auto-backup: true # Enable automatic backup (interval mode)
interval-minutes: 60 # Backup interval in minutes (interval mode only)
backup-on-start: false # Execute backup on server start
broadcast-message: true # Broadcast backup messages
# Scheduled backup (time-based trigger, independent from interval mode, can be enabled together)
schedule:
enabled: false # Enable time-based mode
timezone: "Asia/Shanghai" # Trigger timezone, e.g. Asia/Shanghai, America/New_York, Europe/London
use-24-hour-format: true # Use 24-hour format (false for 12-hour format with AM/PM)
times: # Trigger times list
- "00:00" # 24-hour examples: ["00:00", "06:00", "12:00", "18:00"]
- "12:00" # 12-hour examples: ["12:00 AM", "06:00 AM", "12:00 PM", "06:00 PM"]
backup-dir: "backups" # Backup directory (relative to plugin data folder)
max-backups: 10 # Maximum backup count (0 = unlimited)
compress: true # Compress as zip
exclude-dirs: # Excluded directories (relative to server root)
- "plugins/PluralBackup/backups"
Backup Behavior
save-world-before-backup: true # Save all worlds before backup pause-autosave-during-backup: true # Pause autosave during backup file-copy-retry-count: 3 # File copy retry count file-copy-retry-delay-ms: 500 # Retry delay in milliseconds
Cloud Upload
cloud: enabled: false type: "local" # local / ftp / webdav / baidu / pan123 local: path: "cloud-backups" ftp: host: "127.0.0.1" port: 21 username: "ftpuser" password: "ftppass" remote-dir: "/backups" use-ssl: false webdav: url: "https://dav.example.com/backups" username: "user" password: "pass"
Baidu Netdisk (https://pan.baidu.com/union/console)
baidu: app-id: "" app-secret: "" app-folder: "" # Product name, files stored at /我的应用数据/{app-folder}/ access-token: "" # Leave empty for auto-fetch and cache
123 Cloud (https://www.123pan.cn/developer)
pan123: client-id: "" client-secret: "" access-token: "" # Leave empty for auto-fetch and cache parent-folder-id: 0 # Target folder ID, 0 for root
Alert Notifications
notification: enabled: false # Enable backup failure notifications
Email notification
email: enabled: false smtp-host: "" # e.g. smtp.qq.com smtp-port: 465 use-ssl: true username: "" # Sender login account password: "" # Authorization code (QQ Mail requires auth code) from: "" # Sender email to: "" # Recipient email subject: "PluralBackup Backup Alert"
Lark bot
feishu: enabled: false webhook: "" # Custom bot Webhook secret: "" # Signing secret (leave empty if not using signature)
DingTalk bot
dingtalk: enabled: false webhook: "" # Custom bot Webhook secret: "" # Signing secret (leave empty if not using signature)
GitHub Backup
github: enabled: false token: "your-github-token" # PAT with repo permission owner: "your-username" repo: "PluralGamneBackup" auto-create-repo: true # Auto-create private repo if not exists
Message Settings
backup-start-message: "§e[Backup] §bServer is performing automatic backup..." backup-done-message: "§e[Backup] §aBackup complete! Time: {time}s" backup-fail-message: "§e[Backup] §cBackup failed: {error}"
## GitHub Backup Instructions
1. Create GitHub Personal Access Token with `repo` permission, recommend no expiration
2. Configure `token`, `owner`, `repo` in config file
3. Enable `github.enabled: true`
4. Private repo auto-created if not exists (requires `auto-create-repo: true`)
5. Empty repo auto-initialized (README.md written), otherwise Release creation fails
6. Backup files uploaded as Release Assets, single file limit 2GB
7. GitHub scheduled backup shares `interval-minutes` with local backup
8. All network operations (upload/download) execute asynchronously, non-blocking main thread
9. Manual `/backup github-upload` will auto-clean local old backups (subject to `max-backups` limit)
## Dual-Mode Scheduled Backup
The plugin supports two independent trigger modes that can be enabled simultaneously:
**1. Interval Mode** (`backup.auto-backup: true` + `backup.interval-minutes: 60`)
- Execute backup every N minutes
- Suitable for high-frequency backup scenarios
**2. Time-Based Mode** (`backup.schedule.enabled: true`)
- Execute backup at specific times in a specified timezone
- Supports custom timezone (e.g. `Asia/Shanghai`, `America/New_York`, `Europe/London`)
- Supports 24-hour format (`HH:mm`, e.g. `00:00`, `12:00`, `18:30`)
- Supports 12-hour format (`hh:mm a`, e.g. `12:00 AM`, `06:00 PM`)
- Multiple trigger times configurable
Both modes can be enabled together without conflict. Example: interval mode backs up every hour, time-based mode adds extra backups at 00:00 and 12:00 daily.
## Permissions
| Permission | Default | Description |
|------------|---------|-------------|
| `pluralbackup.admin` | OP | Use all backup management commands |
## Build
```bash
mvn clean package
Generated jar file at target/PluralBackupJava-1.0.0.jar.
License
Copyright © PluralTeam
Сервер для плагина PluralBackupJava - как у профи
Плагин PluralBackupJava создан для серверов: на своём сервере вы настраиваете его под себя и решаете, кому играть. Создать сервер с плагином PluralBackupJava для друзей можно за пару минут - BungeeHost всё уже подготовил.

