- The plugin now automatically detects which Java version started the server (Java 21 or Java 25). If it's a different version, it disables itself with a clear console message.
- Added support for Minecraft's new 2026 versioning scheme (e.g. 26.1.2), alongside the classic scheme (1.21.x). The plugin detects either one and enables normally.
- No configuration changes required.
New feature: dynamic (exponential) upgrade pricing
You can now make row upgrade prices scale automatically instead of using
fixed per-row costs. Enable it in menu.yml under "upgrade-pricing":
upgrade-pricing:
enabled: true
formula:
base-cost: 15000.0
row-multiplier: 1.5
backpack-multiplier: 2.0
Price = base-cost * row-multiplier^(row-2) * backpack-multiplier^(backpackNumber-1)
This lets later rows and higher-numbered backpacks cost progressively more,
without having to hardcode every price manually. When disabled (default),
the legacy static prices under "upgrade-prices" are used as before.
Security fix: backpack duplication exploit patched
This update also patches a vulnerability in the backpack GUI handling that
allowed item duplication through a silent inventory close, causing a desync
between items already withdrawn by the player and the items still stored in
the backpack.
The fix forces the backpack state to be saved and invalidates the inventory
on every close (including client-side exploits that suppress the close
packet), so duplicated items can no longer be created this way.
We strongly recommend updating to 1.0.6 as soon as possible.
Fixed a bug where clicking a backpack in the selection menu (/backpack with no arguments) would fail to open the correct backpack. Instead of opening the selected backpack, the plugin was sending a "no permission" error referencing a wrong backpack number (e.g., 9463 instead of 1).
Root cause: The backpack number was being extracted by parsing the item's display name — a fragile approach where Minecraft color codes containing digits (like §7) would corrupt the number parsing.
Fix: Backpack numbers are now stored directly in the item's PersistentDataContainer (NBT metadata) when the selection menu is built, and read from there on click. Display name parsing remains as a fallback only.
New permissions system
PlaceholderAPI placeholders
- Basic: thbackpacks.use, thbackpacks.admin, thbackpacks.debug, thbackpacks.upgrade, thbackpacks.upgrade.free
- Backpack access (1-5): thbackpacks.backpack.1 through thbackpacks.backpack.5 to control which backpacks a player can use
- Slot size per backpack: thbackpacks.slots.X.size.Y (X = backpack 1-5, Y = 9, 18, 27, 36, 45, 54) for granular size control
- Admin: thbackpacks.view.others, thbackpacks.edit.others
- Legacy: Old format thbackpacks.backpack.X.size.Y still works; new format is recommended for clearer control
- Player: %thbackpacks_player_backpacks%, %thbackpacks_player_total_slots%, %thbackpacks_player_total_rows%
- Economy: %thbackpacks_economy_balance%, %thbackpacks_economy_name%
- Upgrades: %thbackpacks_upgrade_next_price%
- Per-backpack (1-5): %thbackpacks_backpack_X_slots%, _rows%, _name%, _max_slots%, _items%, _free_slots%
- Server: %thbackpacks_server_total_backpacks%, %thbackpacks_server_total_items%
- Ranking: %thbackpacks_top_1_name%, %thbackpacks_top_1_slots% (1-10), %thbackpacks_player_rank%
New Features
Added support for multiple economy plugins:
- Player Economy - REST API integration with Basic Auth authentication
- CoinsEngine - Full API integration support
- PlayerPoints - Complete API integration support
- Vault - Still supported as default (enhanced integration)
Configuration
Configure economy hooks inmenu.yml:
economy:
hooks:
vault: true # Default economy (Vault-compatible plugins)
player-economy: false # Player Economy REST API
coins-engine: false # CoinsEngine plugin
player-points: false # PlayerPoints plugin
Fixed warnings related to library loading on Java 9+. The plugin now detects the Java version and uses the appropriate loading method, eliminating module system warnings while maintaining compatibility with Java 8 and 9+.
Now the libraries are downloaded when the plugin starts to avoid having a large .jar file.
Two new administration commands were added: one to check a player's backpack and another to edit it. They only require thethbackpacks.adminpermission.
- /abackpacks view <player> [backpack]
- /abackpacks edit <player> [backpack]
