1.1
Compatibility
Changes
BackPackSSS Industrial Stabilization Update Comprehensive stability, performance, and security overhaul for production environments.
š”ļø Industrial-Grade Stability Thread-Safe Snapshot Saving: Implemented inventory snapshotting. Contents are cloned on the main thread before being passed to asynchronous SQLite tasks, completely eliminating data corruption or loss during item movement. Reliable Identification (BackpackHolder): Introduced a custom InventoryHolder to uniquely identify backpack inventories. This prevents the plugin from accidentally interacting with or overwriting data from standard chests or other GUIs. Force-Save on Disconnect: Added a fallback save mechanism for PlayerQuitEvent. Whether a player quits, is kicked, or times out, their backpack contents are instantly saved to the database. ā” Performance & Anti-Exploit Logic Anti-Dupe Opening Lock: Integrated a 2-tick (0.1s) cooldown and a logic lock for opening backpacks. This eliminates race conditions and duplication glitches caused by rapid interaction spam. State Cleanup: Integrated mandatory closeInventory() calls before every new backpack session to ensure clean transitions and prevent persistent inventory UI bugs. Memory Optimization: Improved memory management by purging player session locks and temporary caches immediately upon logout. šØ High-Fidelity Resource Pack (v1.21.x) Hybrid Version Support: Fully optimized structure supporting both Minecraft 1.21-1.21.3 (via models) and 1.21.4+ (via new items range_dispatch syntax). Universal Namespace: Standardized all assets under the backpacks namespace for consistent texture mapping and professional organization. 3D Model Integration: Verified and synced high-quality 3D backpack models (Brown, Yellow, Red) with correct CustomModelData mapping.
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:T8kyE5QU:zWcNusIp"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:T8kyE5QU:zWcNusIp"
}

