✨ xInventories icon

✨ xInventories -----

Per-world inventory separation with groups, patterns, and multi-storage support




[​IMG]

Advanced Per-World Inventory Management for Paper & Spigot 1.20.5+

[​IMG] [​IMG] [​IMG]

[​IMG] [​IMG] [​IMG] [​IMG] [​IMG]

━━━━━━━━━━ Downloads ━━━━━━━━━━


━━━━━━━━━━ Overview ━━━━━━━━━━

xInventories is a powerful and modern per-world inventory management plugin for Paper and Spigot 1.20.5+ servers. Keep player inventories, experience, health, hunger, potion effects, and ender chests completely separate across different worlds or world groups.

Whether you're running a survival server with a creative world, a minigame network, or a skyblock server with multiple islands, xInventories gives you complete control over how player data is managed across your worlds.

━━━━━━━━━━ Features ━━━━━━━━━━

  • Per-World Inventories - Separate inventories for different worlds or world groups
  • Per-GameMode Inventories - Optionally separate inventories by gamemode
  • Flexible World Groups - Group multiple worlds together to share inventories
  • Regex Pattern Matching - Automatically assign worlds using patterns (e.g., skyblock_.*)
  • Multiple Storage Backends - Choose from YAML, SQLite, or MySQL
  • High-Performance Caching - Caffeine-powered write-behind caching
  • Admin GUI - Visual interface for managing groups, worlds, and player inventories
  • Backup & Restore - Create and restore backups of all player data
  • Data Migration - Seamlessly migrate between storage backends
  • Full Developer API - Comprehensive API with events and subscriptions
  • PlaceholderAPI Support - Built-in placeholders for scoreboards and more
  • Inventory Versioning - Automatic version history with rollback capability
  • Death Recovery - Recover inventories lost on death
  • Player State Separation - Per-group statistics, advancements, and recipes
  • PWI-Style Settings - Flying, fall distance, fire ticks, air, display name per-group
  • Templates - Pre-defined inventory templates for starter kits and loadouts
  • Item Restrictions - Whitelist/blacklist items per group with confiscation vault
  • Confiscation Vault - Store and reclaim restricted items via /xinv vault
  • NBT Filters - Advanced filtering by enchantments, custom model data, name/lore patterns
  • Shared Slots - Share specific slots across all groups
  • Conditional Groups - Dynamic groups based on permissions, time, or PlaceholderAPI
  • World Group Inheritance - Groups inherit settings from parent groups
  • Temporary Groups - Time-limited group assignments for events/minigames
  • Inventory Locking - Temporarily lock inventories with bypass permissions
  • Audit Logging - Track all inventory modifications with full history
  • Bulk Operations - Apply actions to all players in a group
  • Anti-Dupe Detection - Detect potential item duplication exploits
  • Inventory Search - Search across all player inventories
  • Statistics Dashboard - Plugin performance metrics
  • Vault Economy - Per-group economy balances
  • LuckPerms Contexts - Current group as LuckPerms context
  • Folia Support - Multi-threaded server compatibility
  • Plugin Import - Import from PerWorldInventory, MultiVerse-Inventories, MyWorlds
  • Cross-Server Sync - Redis-based sync for BungeeCord/Velocity networks
  • Inventory Merge - Merge two groups' inventories with conflict resolution
  • Export/Import JSON - Export inventories for external tools or backup
  • 20+ GUI Screens - Comprehensive admin interface for all features

━━━━━━━━━━ Requirements ━━━━━━━━━━

  • Paper 1.20.5+ or Spigot 1.20.5+ (1.20.5 - 26.1.2+ supported)
  • Java 21+ (the jar targets Java 21; Minecraft 26.1+ servers require Java 25 per Mojang, and the same jar runs there too)

New in v1.2.0: Paper 26.1.2 support (Mojang's new year-based versioning), plus a fix for a GUI bug where items could occasionally be moved out of a menu, and several inventory save/sync hardening fixes.

Since v1.1.0: Full Spigot support! The plugin automatically downloads required libraries on Spigot servers.

━━━━━━━━━━ Installation ━━━━━━━━━━

  1. Download the jar file (lightweight ~1.7MB)
  2. Place it in your server's plugins/ folder
  3. Restart your server
  4. Configure plugins/xInventories/config.yml
  5. Set up world groups in plugins/xInventories/groups.yml

Note: On Paper 1.21+, dependencies are provided by the server. On Spigot or older Paper versions, xInventories automatically downloads required libraries from Maven Central on first startup (with SHA-256 checksum verification). Dependencies are cached in plugins/xInventories/libraries/.

━━━━━━━━━━ Commands ━━━━━━━━━━

Base command: /xinventories (aliases: /xinv, /xi)

Core Commands
  • /xinv - Show help menu
  • /xinv reload - Reload configuration
  • /xinv gui - Open admin GUI
  • /xinv save [player] - Save player inventory
  • /xinv load <player> [group] - Load player inventory
  • /xinv whoami - Show current group and match reason

Group & World Management
  • /xinv group list|info|create|delete|setdefault - Manage groups
  • /xinv world assign|unassign|list - Manage world assignments
  • /xinv pattern add|remove|list - Manage regex patterns

Version History & Death Recovery
  • /xinv version list|restore|diff - Inventory version history
  • /xinv death list|restore|preview - Death recovery

Templates & Restrictions
  • /xinv template list|apply|create - Manage templates
  • /xinv restrict list|add|remove - Item restrictions

Economy & Locking
  • /xinv lock <player> [reason] [duration] - Lock inventory
  • /xinv unlock <player> - Unlock inventory
  • /xinv conditions <group> - View group conditions

Import & Sync
  • /xinv import detect|<plugin> - Import from other plugins
  • /xinv sync status|force - Network sync status

Utility Commands
  • /xinv cache stats|clear - Manage cache
  • /xinv backup create|restore|list|delete - Manage backups
  • /xinv convert <from> <to> - Migrate storage
  • /xinv debug - Debug information

━━━━━━━━━━ Permissions ━━━━━━━━━━

Admin Permission
  • xinventories.admin - Full admin access (default: op)

Command Permissions
  • xinventories.command - Use base command (default: true)
  • xinventories.command.reload - Reload config (default: op)
  • xinventories.command.save - Save inventories (default: op)
  • xinventories.command.load - Load inventories (default: op)
  • xinventories.command.group - Manage groups (default: op)
  • xinventories.command.world - Manage worlds (default: op)
  • xinventories.command.pattern - Manage patterns (default: op)
  • xinventories.command.cache - Manage cache (default: op)
  • xinventories.command.backup - Manage backups (default: op)
  • xinventories.command.convert - Migrate storage (default: op)
  • xinventories.command.debug - Debug commands (default: op)
  • xinventories.command.version - Version history (default: op)
  • xinventories.command.death - Death recovery (default: op)
  • xinventories.command.template - Manage templates (default: op)
  • xinventories.command.restrict - Item restrictions (default: op)
  • xinventories.command.conditions - View conditions (default: op)
  • xinventories.command.lock - Lock/unlock inventories (default: op)
  • xinventories.command.import - Import from plugins (default: op)
  • xinventories.command.sync - Network sync (default: op)
  • xinventories.gui - Access admin GUI (default: op)

Bypass Permissions
  • xinventories.bypass - Bypass all inventory switching (default: false)
  • xinventories.bypass.<group> - Bypass specific group (default: false)
  • xinventories.lock.bypass - Bypass inventory locks (default: op)
  • xinventories.restrict.bypass - Bypass item restrictions (default: op)

━━━━━━━━━━ Configuration ━━━━━━━━━━

Code (Text):
# Survival worlds - share inventory
survival:
  priority: 10
  worlds:
   - "world"
   - "world_nether"
   - "world_the_end"
  settings:
   separateGameModeInventories: true
   saveEnderChest: true

# Creative worlds - separate inventory
creative:
  priority: 10
  worlds:
   - "creative"
  patterns:
   - "creative_.*"
  settings:
   separateGameModeInventories: false

# Minigames - fresh inventory each time
minigames:
  priority: 20
  patterns:
   - "game_.*"
   - "arena_.*"
  settings:
   saveHealth: false
   saveExperience: false
   clearOnJoin: true

# Conditional group example (VIP players)
vip_survival:
  priority: 15
  worlds: []
  conditions:
   permission: "xinventories.group.vip"

━━━━━━━━━━ Storage Options ━━━━━━━━━━

YAML (Default)
Best for small servers. Human-readable, easy to edit manually.

SQLite
Best for medium servers. Better performance, single database file.

MySQL
Best for large servers and networks. Required for multi-server setups.

Migrate between backends with: /xinv convert <from> <to>

━━━━━━━━━━ Network Sync ━━━━━━━━━━

For BungeeCord/Velocity networks, xInventories supports real-time inventory synchronization using Redis:

  • Real-time sync across all servers
  • Distributed locking prevents data conflicts
  • Configurable conflict resolution (latest-wins or merge)
  • Server heartbeat monitoring
  • Automatic cache invalidation

━━━━━━━━━━ PlaceholderAPI ━━━━━━━━━━

  • %xinventories_group% - Current inventory group
  • %xinventories_group_display% - Current group display name
  • %xinventories_bypass% - Bypass status
  • %xinventories_groups_count% - Total groups
  • %xinventories_item_count% - Total items in inventory
  • %xinventories_empty_slots% - Empty inventory slots
  • %xinventories_armor_count% - Equipped armor pieces
  • %xinventories_version_count% - Number of saved versions
  • %xinventories_death_count% - Number of death records
  • %xinventories_balance% - Per-group economy balance
  • %xinventories_last_save% - Last save timestamp
  • %xinventories_locked% - Whether inventory is locked
  • %xinventories_lock_reason% - Lock reason if locked
  • %xinventories_storage_type% - Storage backend
  • %xinventories_cache_size% - Cache entries
  • %xinventories_cache_max% - Max cache size
  • %xinventories_cache_hit_rate% - Cache hit rate
  • %xinventories_version% - Plugin version

━━━━━━━━━━ Developer API ━━━━━━━━━━

xInventories provides a comprehensive API for developers:

Code (Text):
// Get the API
val api = XInventoriesProvider.get()

// Get player's current group
val group = api.getGroupForWorld(player.world)

// Save/load inventories
api.savePlayerData(player)
api.loadPlayerData(player, "creative")

// Subscribe to events
api.onInventorySwitch { context ->
   println("${context.player.name} switched groups")
}

// Version history API
api.versioning?.getVersions(player.uniqueId, "survival", 10)

// Death recovery API
api.deathRecovery?.getDeathRecords(player.uniqueId, 5)
━━━━━━━━━━ Support ━━━━━━━━━━


━━━━━━━━━━ Screenshots ━━━━━━━━━━

Main Admin GUI
[​IMG]

Group Management
[​IMG]

Player Inventory Viewer
[​IMG]


Made with love by Reset65 | Licensed under MIT

Resource Information
Author:
----------
Total Downloads: 105
First Release: Jan 29, 2026
Last Update: Jun 19, 2026
Category: ---------------
All-Time Rating:
0 ratings
Find more info at github.com...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings