Skip to content

1.0.1#2

Merged
westkevin12 merged 22 commits intomasterfrom
1.0.1
Dec 20, 2025
Merged

1.0.1#2
westkevin12 merged 22 commits intomasterfrom
1.0.1

Conversation

@westkevin12
Copy link
Owner

Description

This PR introduces PlayerVaultsX Modern Edition (v1.0.1-SNAPSHOT).

This is a comprehensive architectural overhaul designed to transform PlayerVaultsX from a standalone server plugin into a Network-Grade Storage Solution.

⚠️ Size Notice: The JAR size has increased from ~1.4MB to ~4.9MB.
Why? We now bundle enterprise-grade drivers (MongoDB, Redis, and a custom S3 implementation) to ensure zero-dependency installation on production networks. We believe this trade-off is essential for stability and ease of deployment.

🏢 Enterprise Storage Engine

  • Multi-Driver Support: Implemented a Strategy Pattern storage engine supporting:
    • MySQL / MariaDB (Optimized SQL)
    • MongoDB (New! High-performance document storage)
    • FlatFile (Legacy support)
  • Redis Caching & Sync:
    • Added a Redis Caching Layer that sits in front of the DB to minimize expensive reads.
    • Implemented Pub/Sub Synchronization: Instant cross-server updates and locking. Opening a vault on Server A locks it on Server B instantly.

☁️ Cloud Data Safety

  • S3 Backups: Built-in automated backups to any S3-compatible provider (AWS, MinIO, DigitalOcean).
  • Zero-Dependency Client: We implemented a custom "Tiny S3" client using standard Java HttpURLConnection to keep the jar size manageable (avoiding the 15MB+ AWS SDK).

🎨 Modern UI & Experience

  • Visual Vault Selector: Navigate vaults via a paginated GUI (/pv selector) instead of chat commands.
  • Custom Icons: Players can assign custom item icons to their vaults (/pv icon).
  • Global Search: Instantly find items across all user vaults with /pv search <item>.
  • Inspector Mode: Admins can safely audit vaults read-only using /pv <player> <#> -r.
  • Migration: Added /pvconvert EnderChest to easily migrate vanilla storage to vaults.

� Core Modernization

  • Java 21 Native: Codebase updated to utilize modern Java 21 features.
  • Safety First: Completely removed internal sun.misc.Unsafe usage. Item serialization now uses CardboardBox for robust NBT handling.
  • Async By Default: All heavy operations (I/O, Network) have been moved to asynchronous threads to prevent main-thread lag.

Architectural Checklist

  • Java 21 Verified: I have verified this code runs on Java 21.
  • No Unsafe Usage: I have not utilized sun.misc.Unsafe or other internal APIs.
  • Adventure API: Text changes use MiniMessage/Adventure, not legacy ChatColor.
  • Storage Strategy: I have respected the StorageProvider interface pattern.

Related Issue

Closes #

…ization and storage failover, and update TODO list.
…lizer.parse` with `GsonComponentSerializer.serialize`
… player lists, and update signs file saving condition on plugin disable.
@westkevin12 westkevin12 self-assigned this Dec 20, 2025
@westkevin12 westkevin12 merged commit dbf7de6 into master Dec 20, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant