Skip to content

InvRewind 1.3.0

Choose a tag to compare

@github-actions github-actions released this 17 Apr 18:31

What's Changed

New Features

  • Offline Player Restore System: Schedule inventory restores for offline players
    • Restores automatically apply when player joins the server
    • Configurable 24-hour expiry (admin notified if player doesn't join in time)
    • Player freeze during restore (prevents movement, inventory actions, item pickup/drop)
    • Title message shown during restore process
    • Full selective restore support (inventory, armor, offhand, ender chest, health, hunger, XP, location)
    • Latest scheduled restore overwrites previous ones
    • Admin notifications on join, completion, failure, and expiry
    • Console logging for all restore events
    • Works with all database types (YAML, SQLite, MySQL)
    • Can be fully enabled/disabled via config (offline-restore.enabled)

GUI Improvements

  • All Players Display: Shows both online and offline players with backups in /invrewind GUI
    • Online players shown first, then offline players alphabetically
    • Status indicator (online/offline) in player skull lore
    • "Schedule Offline Restore" button appears when target player is offline (if feature enabled)
    • One-click scheduling with automatic configuration

Command Improvements

  • Tab completion now includes offline player names with backups
  • /invrewind <playername> works for both online and offline players
  • Async player lookup for offline players
  • All commands support both online and offline player targets

Message Updates

  • All offline restore messages use small caps gradient format
  • Database fallback messages converted to small caps gradient
  • Consistent styling across all user-facing messages
  • Improved readability and visual consistency

Configuration

  • New offline-restore config section with full customization:
    • enabled: Enable/disable offline restore feature completely (default: true)
    • expiry-hours: Time before pending restore expires (default: 24)
    • expiry-check-interval: How often to check for expired restores (default: 3600 seconds)
    • apply-delay-ticks: Delay before applying restore after join (default: 20 ticks)
    • freeze-player: Prevent player actions during restore (default: true)
    • Customizable title messages and timing
  • Config version bumped to 3 with automatic migration
  • All existing settings preserved during migration

Technical Details

  • Added OfflineRestoreManager for handling pending restores
  • Added OfflineRestoreListener for join events and player freeze
  • Added PendingRestore model to store all restore configuration
  • Added getAllPlayersWithBackups() method to BackupManager
  • Supports YAML folder scanning and SQL database queries
  • Automatic cleanup of expired restores
  • Handles edge cases: player quit during restore, server restart, rejoin scenarios
  • Sorts players: online first, then alphabetically
  • Full Folia and Paper compatibility maintained

Full Changelog: https://github.com/mukulx/invrewind/commits/v1.3.0