inventoryrestore

InventoryRestore backs up player inventories and lets staff inspect and restore with crash recovery, autosave, and a Discord webhook & in game logging system

53

inventoryrestore

InventoryRestore

InventoryRestore backs up player inventories and lets staff inspect, restore, and document refunds—with optional MySQL, crash recovery, autosave, and a Discord webhook for refund confirmations.

---

Features

Backups & storage

- autosave when players autosave, autosave, autosave, autosave, autosave, and on a configurable autosave interval

- MySQL for one online player or MySQL (`/ir forcebackup`). - MySQL (default) or MySQL for centralized storage. - Per-player limits per save type (`max-saves`: join, quit, death, world-change, force, crash). ```

Maximum saves a backup will hold per type per user.

max-saves: join: 10 quit: 10 death: 50 world-change: 10 force: 10 crash: 20 ``` - Material ignore list so chosen items are never stored (`backup-ignore-materials`) this is so that item is not taking up lots of storage for example string if you have a `/string` plugin. ```

Materials (Bukkit names) excluded from backups and not stored. Example: [DIRT, STONE]

Empty list = nothing ignored.

backup-ignore-materials: [] ``` - Offline restores & inventory viewing

- Export restores to shulkers, chests, bundles & drop Incase you dont want to restore someones current inventory you can put chests at their base, put a bundle in their inventory etc.

Staff GUIs

- Main menu — browse players (restore mode shows names; refund mode can hide names for privacy).

Main menu

- Player menu — choose backup category (join, quit, death, world change, force, crash).

Main inventory backup menu

| Joins | Quits | Deaths | |-------|-------|--------| | Joins backups | Quits backups | Death backups |

| World changes | Force saves | Crashes | |---------------|-------------|---------| | World change backups | Force saves | Crash backups |

- Rollback list — paginated list of snapshots with timestamps (timezone/format configurable).

Rollback list

- armor & off-hand — full armor & off-hand, armor & off-hand in the same layout as vanilla, plus actions:

Player / restore menu

- Restore main inventory + armor + off-hand (with armor & off-hand when the target still has items; skipped if their inventory is armor & off-hand when detectable). - armor & off-hand backup view and restore. - armor & off-hand and armor & off-hand restore (when target is online). - armor & off-hand to saved backup location (permission `inventoryrestore.restore.teleport`). - armor & off-hand (extract items for manual handling). - armor & off-hand — who opened or restored a snapshot (audit trail). - armor & off-hand — shows the target’s armor & off-hand inventory (or last saved layout offline) including armor & off-hand before confirming a full restore.

Overwrite warning

Screenshots — restore actions & tools

| Teleport to backup coords | Ender chest | Ender chest | |---------------------------|-----------------|-----------------| | Restore coords | Ender chest restore 1 | Ender chest restore 2 |

| Restore food | Restore XP | Restore offline | |--------------|------------|-----------------| | Restore food | Restore XP | Restore offline |

| Export (chest) | Export (bundle) | |----------------|-----------------| | Export chest | Export bundle |

Backup activity

| Refund / restore history (1) | Refund / restore history (2) | |------------------------------|------------------------------| | Restore history 1 | Restore history 2 |

Commands & safety

- `loadbefore` / `loadbefore` — open restore GUI; supports `loadbefore` or name tab-complete. - `loadbefore` / `loadbefore` — refund GUI + ledger context. - `loadbefore`, `loadbefore`, `loadbefore`, `loadbefore`, `loadbefore`. - `loadbefore` — one-time migration from legacy backup data (requires `loadbefore`; grant via your permissions plugin if needed). - Configurable `loadbefore` vs other plugins (`allow-other-plugins-edit-death-inventory`). - `loadbefore` several death-chest style plugins to reduce ordering conflicts.

Integrations & ops

- Optional Sounds when a full restore is confirmed from the refund GUI (`refund-webhook` in `config.yml`). - Sounds on startup (configurable). - Sounds for restore, teleport, food, hunger, and XP (each togglable).

---

Commands

| Command | Permission | Description | |--------|------------|-------------| | `/restore [player]` | `inventoryrestore.viewbackups` | Open restore GUI (optional target). | | `/refund [player]` | `inventoryrestore.refund` | Open refund GUI. | | `/ir restore [player]` | `inventoryrestore.viewbackups` | Same as `/restore`. | | `/ir refund [player]` | `inventoryrestore.refund` | Same as `/refund`. | | `/ir forcebackup all` | `inventoryrestore.forcebackup` | Force-save all online players. | | `/ir forcebackup player <name>` | `inventoryrestore.forcebackup` | Force-save one online player. | | `/ir enable` | `inventoryrestore.enable` | Turn plugin on. | | `/ir disable` | `inventoryrestore.disable` | Turn plugin off. | | `/ir reload` | `inventoryrestore.reload` | Reload config. | | `/ir version` | `inventoryrestore.version` | Version info. | | `/ir help` | `inventoryrestore.help` | In-game command list. | | `/ir import confirm` | `inventoryrestore.import` | Import legacy backups (destructive; confirm only). |

Child permission `inventoryrestore.restore.teleport` — allows teleporting to the backup’s saved world/coords from the GUI.

Full permission tree is in `plugin.yml`.

---

Configuration (`config.yml`)

| Option | What it does | |--------|----------------| | `enabled` | Master switch. | | `max-saves` | Caps per type per player. | | `backup-lines-visible` | Rows visible on rollback list (max 5). | | `folder-location` | Data path or `DEFAULT`. | | `mysql` | Enable DB + pool settings. | | `sounds.*.enabled` | Toggle feedback sounds. | | `time-zone` / `time-format` | Backup timestamp display. | | `allow-other-plugins-edit-death-inventory` | Death save timing vs other plugins. | | `restore-to-player-button` | Show full-restore button. | | `save-empty-inventories` | Whether empty snapshots are kept. | | `backup-ignore-materials` | Bukkit material names to skip. | | `refund-webhook` | Discord POST on refund-path full restore. | | `autosave-*` | Interval autosave + crash recovery behavior. | | `update-checker` | GitHub Releases update notice (`vanillaxtra/inventoryrestore`). | | `bStats` | Anonymous metrics (see below). | | `debug` | Extra console logging. |

---

📊 bStats

ADS