Tags
Creators
Details
3.3
Compatibility
Changes
Overview
This release modernizes the plugin, hardens the pocket item against spoofing, improves offhand usability, updates the pocket item presentation (flower pot + glint), and switches persistence to SQLite by default with an automatic one-time migration from legacy YAML.
Highlights
SQLite is now the default storage (YAML still supported). Pocket item spoofing via anvil renaming is fixed (PDC-based authenticity). Offhand support for GUI open + placement mode. Pocket item is now a flower pot with a hidden glint, and old pockets are upgraded automatically. Pickup-to-pocket works even when the player inventory is full.
Added
SQLite persistence backend (default) Stores player data in storage.db Optional legacy YAML backend Still supports storage.yml as a backend if you explicitly choose it Automatic migration (YAML → SQLite) On first startup with SQLite enabled, if the SQLite table is empty and storage.yml exists, data is imported once After successful import, storage.yml is renamed to storage.yml.bak as a backup Item authenticity marker (PDC) Pocket items are now identified primarily via a server-side marker, not just the display name Legacy items are upgraded automatically during normalization
Fixed
Anvil spoof exploit Players can no longer rename a random item to match the pocket name and have it treated as a pocket Offhand interaction gaps Opening the GUI and placement mode flows now work properly when the pocket is in the offhand Inventory-full pickup edge case When a pickup is prevented due to a full inventory, tracked items can still be absorbed into the pocket (instead of failing to collect)
Upgrade Notes
Requirements Spigot 26.1+ Java 21+ Recommended upgrade steps Stop the server Back up plugins/PocketDimension/ (especially storage.yml if you’re coming from older versions) delete config.yml Replace the jar with v3.3 Start the server and watch the console: If you had storage.yml, it will migrate into SQLite (first run only, DB must be empty) A backup rename to storage.yml.bak is attempted after successful migration If you want to stay on YAML Set storage.backend: yaml in the config (otherwise it defaults to SQLite)
Compatibility / Behavior Notes
Pocket item identification is stricter (by design). Legacy pockets are still supported via automatic tagging/upgrade, but name-only items won’t be accepted anymore. SQLite migration is intentionally conservative: it only imports when the DB is empty to avoid duplicate data.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:tYWiNUwV:NPVmgmBD"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:tYWiNUwV:NPVmgmBD"
}

