Unofficial site, not affiliated with modrinth.com.What is this?
Плагины/XTransfer
  • Improves

    alpha13 мая 2026 г.

    Added

    • Transactional file migration using a temporary staging directory to ensure all-or-nothing data transfer
    • Non-blocking retry mechanism using ScheduledExecutorService with configurable delay between attempts
    • Automatic rollback of backup files when the final atomic move operation fails
    • Staging directory cleanup on transfer failure to prevent leftover temporary files
    • FilePair helper class to encapsulate source, temporary destination, final destination, and critical/optional flag for each migrated file

    Fixed

    • Thread pool blocking caused by recursive copyWithRetry consuming worker threads during retry waits
    • Data inconsistency when some files succeed and others fail during a single transfer operation (partial transfer no longer possible)
    • Backup file not being created before the main data copy, risking loss of the target player's original data

    Changed

    • copyWithRetry now uses ScheduledExecutorService for delayed retries instead of recursive calls on the main executor pool
    • copyFile now performs a single copy attempt and returns immediately, with retry logic handled externally
    • transferPlayerData and related methods replaced by transferAllFiles, copyAllToTemp, and moveTempToTarget to support transactional migration
    • Backup creation and optional file transfers (stats, advancements) integrated into the unified transactional pipeline
    • ExecutorService renamed to executor for clarity; new scheduler field added for delayed retry scheduling

    Removed

    • Recursive retry logic (copyWithRetry calling itself with thenCompose) that blocked worker threads
    • Separate backupIfNeeded, transferMainData, transferExtraData, and transferFile methods, consolidated into transferAllFiles and supporting methods
    • Direct file overwrite approach that allowed partial transfer states
  • Fixes...

    release27 февраля 2026 г.

    Added

    • Added MAX_CACHE_SIZE (1000) limit to prevent memory overflow when loading usercache.json
    • Added automatic cleanup task to remove stale player locks and access records every hour
    • Added performance monitoring with loading time statistics in debug logs
    • Added detailed debug logging for file operations, lock acquisition, and error conditions
    • Added disk space check before backup operations

    Changed

    • Refactored data loading: Merged loadUserCache() and loadNameToUUIDs() into single loadPlayerData() method for better performance
    • Improved lock management: Locks now track last access time and are automatically cleaned up
    • Enhanced error handling: All exceptions now include detailed debug messages instead of being ignored
    • Optimized file copying: Implemented atomic temp file operations with proper cleanup
    • Restructured command handling: Unified transfer and transferuuid logic into single method
    • Improved backup system: Added proper file existence checks and atomic operations
    • Enhanced tab completion: Added offline player name suggestions with limits
    • Better executor shutdown: Added timeout handling and forced termination if needed

    Fixed

    • Critical: Fixed recursive scheduling in startCleanupTask() that could cause stack overflow
    • Critical: Removed dangerous offline UUID fallback that could match wrong players (UUID.nameUUIDFromBytes)
    • Fixed scheduler parameter bug where null could be passed instead of plugin instance
    • Fixed potential memory leak by properly removing locks on player quit
    • Fixed file copy failure when parent directories don't exist
    • Fixed race condition in task tracking set during concurrent operations
    • Fixed incorrect stats file extension for older server versions (<1.13)
    • Fixed potential deadlock by implementing consistent lock ordering
    • Fixed missing message placeholders in several command responses

    Removed

    • Removed dangerous offline UUID generation (UUID.nameUUIDFromBytes)
    • Removed redundant async parameter from Bukkit scheduler calls
    • Removed duplicate data loading methods in favor of unified approach
    • Removed empty catch blocks that silently ignored exceptions
    • Removed unnecessary thread pool for simple operations
  • Another optimization!

    beta26 февраля 2026 г.

    Added

    • Folia server support with global region scheduler
    • Async file copy operations with buffered streams
    • User cache loading from usercache.json
    • Name-to-UUID mapping system for offline player lookup
    • Backup file creation with configurable suffix
    • Disk space checking before file operations (50MB reserve)
    • File copy retry mechanism (3 retries with 1 second delay)
    • Atomic file operations using temporary files
    • Memory leak prevention with automatic lock cleanup system
    • Periodic cache cleanup task (runs every hour)
    • Player quit event listener to remove unused locks
    • Last access time tracking for lock management
    • Version detection fallback for unknown server versions
    • Multi-language support with message placeholders
    • Stats and advancements transfer with version detection
    • List command for player data with pagination
    • Tab completion with online and offline player support
    • Player kick option for online target players

    Changed

    • Migrated to CompletableFuture for reliable async operations
    • Optimized concurrent map operations with atomic replacements
    • Improved UUID parsing with better error handling and formatting
    • Enhanced scheduler with automatic Folia/Bukkit detection
    • Simplified logging system while keeping debug functionality
    • Better resource cleanup in onDisable() with timeout handling
    • Streamlined configuration loading with auto-fix
    • More efficient name-to-UUID mapping updates
    • Optimized file copy with proper buffer sizing (8KB)
    • Improved lock acquisition with timeout and deadlock prevention

    Fixed

    • Potential memory leak from unclosed player locks
    • Thread safety issues in cache loading (added synchronization)
    • Disk space exhaustion crashes during file transfer
    • Server version detection crashes with unusual formats
    • Concurrent modification issues in map operations
    • File copy failures due to cross-filesystem moves
    • Backup file corruption from incomplete writes
    • Tab completion NPE with null permissions
    • UUID format inconsistencies in user input
    • Player kick timing issues with async operations
    • Configuration loading errors with missing keys
    • Resource leaks in file streams (try-with-resources)
    • Shutdown hangs from unfinished tasks

    Removed

    • Redundant constant classes (merged into simple constants)
    • Excessive logging methods (consolidated into core ones)
    • Overly detailed debug outputs (kept essential only)
    • Unnecessary map clearing operations
    • Duplicate code blocks in transfer handling
    • Deprecated Bukkit API usages
    • Legacy version color formatting (simplified version display)
    • Redundant permission checks in tab completion

    Nah, this is a big work, honestly. Not gonna give up of it.

  • Optimization

    alpha26 февраля 2026 г.

    Changed

    • More stable and safe action!
    • The code is shorter than the old one.
    • The plugin runs faster.
  • Folia!

    release25 февраля 2026 г.

    Added

    • Folia supported!

    Changed

    • Optimized the size of JAR.
  • 1.8 ~ 1.12 Supports!

    beta25 февраля 2026 г.

    Added

    • Supports 1.8.x ~ 1.12.x now!
  • Huge update!

    alpha25 февраля 2026 г.

    Added

    • Full configuration system - Now with proper config.yml support
    • Auto-config fixing - Missing config entries are automatically restored
    • Beautiful console logo - ASCII art on startup (can be disabled in config)
    • Colored version display - Alpha (red), Beta (gold), Release (green)
    • Multi-language support - Messages fully customizable in config
    • Player name tab completion - Tab completes online players and players with data files
    • Kick online players option - Prevents data overwrite (configurable)
    • Asynchronous file operations - No more server lag during transfers
    • Backup system - Automatically creates .old files before overwriting
    • /xtransfer reload command - Reload configuration without restart

    Changed

    • Version display format - Now matches XGamemode style (XTransfer V1.1-alpha)
    • Command output - All messages now from config file
    • UUID detection - Better handling of premium/offline players
    • File copying - Using NIO for better performance

    Fixed

    • NullPointerException in loadMessages() - Messages map now properly initialized
    • Null version in onDisable() - Added DISPLAY_VERSION for reliable shutdown
    • Config corruption - Auto-fixes missing config values
    • Online player data overwrite - Kicks player before transfer (optional)
  • The first version!

    release25 февраля 2026 г.

    Plugin done!

    This is just a demo so it doesn't have multi language, config file and other extra features yet.

    I will do it when I'm free and I want to code.

Совместимость

Сведения

Лицензия:
Опубликован:3 месяца назад
Обновлён:1 месяц назад
ID проекта:
Главная