InfiniteBags | Backpack with Shop v1.2.3

Unlimited per-item storage with a built-in shop hook to sell straight from your bag.
InfiniteBags v1.2.3
Localized bag item names for every player, plus new snapshot methods for the developer API.



🌐 Client-Localized Item Names

Item names in the bag and recovery menus now show in each player's own game language. An un-renamed item renders its vanilla name localized to the viewer, instead of a fixed English string. Items you've given a custom name keep that name. (The GUI search filter still matches the English material name, by design.)



🧩 Developer API: Bag Snapshots

Two new read-only methods let companion plugins (like AT-MailBox) snapshot a bag once and test items against it later, without re-reading the live bag each time.

  • String typeKey(ItemStack item) the bag's grouping key for an item (material plus full NBT, amount ignored), or null for a null/air item. Same "same type" rule that contains uses.
  • Set<String> contentKeys(UUID player) a plain-value snapshot of the grouping keys of every type currently in the player's bag. Safe to keep, persist, and compare later.

Checking whether typeKey(item) is in a saved contentKeys set answers "was this type in the bag at snapshot time?"

  • Both work offline (UUID-keyed database read) and are per-UUID locked, like the rest of the API. Async-safe, no world or entity calls.
  • No write path or existing method behavior changed, so existing integrations keep working unchanged.

Full details on the Developer API page, including the methods table and a "Snapshotting a bag" section.



📦 Install

Replace the jar in plugins/ and restart. No config changes needed.



📋 Version Breakdown

VersionFocus
1.2.3New read-only API methods (typeKey, contentKeys) so companion plugins can snapshot a bag and compare later.
1.2.2Bag and recovery menu item names now render in each viewer's own game language.



Need help or found a bug? Join the Discord.
Read the Developer API guide | Join the Discord

Enjoying the plugin? A ⭐ review goes a long way!
InfiniteBags v1.2.1
Patch release, fixes a storage dupe when an auto-collector plugin is installed alongside InfiniteBags.



🔧 Fixed

Dropping an item out of the bag at a full inventory spawns a world item with no thrower, which looked identical to a real overflow drop. An external auto-collector plugin (like a mailbox) could vacuum that item back into its own storage, duping it out of the bag.

InfiniteBags now stamps every bag-withdrawal drop with a persistent marker (infinitebags:bag_drop) the instant it spawns, so cooperating plugins can tell it apart and leave it alone. The marker is set before the item enters the world, so spawn-time listeners see it.



🧩 Compatibility

Spigot, Paper, and Purpur on Minecraft 1.21.x. A drop-in upgrade with no config changes, and the v1.2.0 developer API is unchanged.



📦 Install

Just replace your old jar with the new one and restart. No config changes needed.



Need help or found a bug? Join the Discord.
Read the documentation | Join the Discord

Enjoying the plugin? A ⭐ review goes a long way!
InfiniteBags v1.2.0
An optional developer API so other plugins can read and write a player's bag.



✨ What's New

This release adds an optional developer API so other plugins can read and write a player's bag at runtime. No hard dependency and no extra jar to install, it's soft-depend friendly and ships inside the normal plugin jar.



🖥 For Server Owners

  • Nothing to configure. A drop-in upgrade from 1.1.x, with no config or language changes.
  • Better integrations. Other plugins you install (mail systems, reward systems, custom shops) can now deposit items straight into a player's bag, even while they're offline.



🧩 For Developers

A new InfiniteBagAPI (in cc.arrowtan.infiniteBags.api) with four methods:
  • isEnabled(UUID) can the player use their bag
  • accepts(ItemStack) would the bag store this item type
  • contains(UUID, ItemStack) does the bag already hold this exact type
  • add(UUID, ItemStack) store an item, returns the amount that did not fit

Also:
  • Static accessor InfiniteBag.getApi() (null-checked, soft-depend safe)
  • Works offline (UUID-keyed database access) and is async-safe (per-UUID locked, touches only database and bag data)
  • Strict item grouping: matches full material plus NBT (name, enchants, damage, custom model data), not just material



📦 Install

Replace the jar in plugins/ and restart. No config or language changes needed.



Full guide on the new Developer API page in the docs.
Read the Developer API guide | Join the Discord

Enjoying the plugin? A ⭐ review goes a long way!
InfiniteBags v1.1.1
Bag item survives /clear



Fixed

The bag item used to vanish when an inventory was wiped by command, since /clear edits inventories directly and skips the events the plugin listens to. It now restores one tick after the wipe.

Survives:
  • Vanilla /clear
  • EssentialsX /clearinventory, /ci, /clean, /clearinvent
  • Namespaced forms (minecraft:clear, essentials:ci, etc.)
  • Player-typed, console, and command-block execution



Config

New keys under bag-item (auto-added on upgrade):
  • restore-on-clear - toggle (default true)
  • clear-commands - which command names trigger a restore. Case-insensitive, namespace-insensitive, first-word match.



Questions or issues? Join the Discord.
If InfiniteBags has been useful, a review goes a long way.
InfiniteBags v1.1.0
CustomModelData pricing for custom items



What's New

  • CustomModelData pricing in shopworth.yml. New cmd-prices: section using the format MATERIAL:CMD: price.
  • Lookup order: CMD match first, then NBT match, then simple material match.
  • Works with ItemsAdder, Nexo, Oraxen, MMOItems, and plain resource-pack items. Zero soft-depends added.



Example Config

YAML:
cmd-prices:
  DIAMOND_SWORD:1001: 500.0
  PAPER:2050: 25.0
  STICK:9999: 10000.0



Upgrade Notes

  • Fresh installs: the new cmd-prices: section appears automatically with commented examples.
  • Existing installs: shopworth.yml uses plain Bukkit YAML, so the section will not auto-insert. Either hand-paste the new section into your file, or delete shopworth.yml to let it regenerate.
  • This only affects the local provider. To use CMD pricing through UltimateShop, ShopGUI+, EconomyShopGUI, or EssentialsX, you will need a separate per-provider hook (planned for a future update).



How to Find a CustomModelData

Hold the item in your main hand and run:

Code:
/data get entity @s SelectedItem

Look for CustomModelData:1234 in the output. That number is your CMD value.



Made with ❤ by zArrowTan
Buy a license now
$5.99
EULA
Standard EULA
Use on any projects you own with attribution
Support
Standard
Includes:
Download the resource
Access new updates
Support from the creator
Support duration
1 year
Share and earn
Refer this resource and earn a 15% commission.
358 Views
2 Purchases
3 Downloads
Jun 10, 2026 Published
Jul 3, 2026 Updated
Not yet rated
224.9 KB File size
Open source
  1. No
DRM-free
  1. Yes
Unobfuscated
  1. Yes
Type
  1. Economy
  1. Storage
  1. Fun
Game mode
  1. Survival
  1. Skyblock
  1. Earth
Supported software
  1. Spigot
  1. Paper
  1. Purpur
Supported versions
  1. 1.21.11
  1. 1.21.8
  1. 1.21.5
  1. 1.21.4
  1. 1.21.2
  1. 1.21
Supported languages
  1. English
  1. French
Crediting original
Luxioz (Chief Tester)
Creators
Recommended for you
Second-ever Modern OneBlock setup, crafted for addictive, feature-rich gameplay.
5.00 star(s) 6 ratings
87 purchases
A modern, feature-rich Survival setup with custom menus, events, and immersive gameplay systems.
5.00 star(s) 20 ratings
83 purchases
All Versions | Crates | Ranks | Upgrades | Perks | Shop | Worlds | Chunk Hoppers
5.00 star(s) 4 ratings
57 purchases
A bedwars server setup made in 1.20.4 to match the Modern theme of experience.
5.00 star(s) 5 ratings
56 purchases
1.17-1.21.8 | Native 1.21.8 | Coinshop | Playtime rewards | Chat games | Gui menus | Custom Terrain
4.50 star(s) 8 ratings
46 purchases
Share and earn
Refer this resource and earn a 15% commission.
358 Views
2 Purchases
3 Downloads
Jun 10, 2026 Published
Jul 3, 2026 Updated
Not yet rated
224.9 KB File size
Open source
  1. No
DRM-free
  1. Yes
Unobfuscated
  1. Yes
Type
  1. Economy
  1. Storage
  1. Fun
Game mode
  1. Survival
  1. Skyblock
  1. Earth
Supported software
  1. Spigot
  1. Paper
  1. Purpur
Supported versions
  1. 1.21.11
  1. 1.21.8
  1. 1.21.5
  1. 1.21.4
  1. 1.21.2
  1. 1.21
Supported languages
  1. English
  1. French
Crediting original
Luxioz (Chief Tester)
Creators
Recommended for you
Second-ever Modern OneBlock setup, crafted for addictive, feature-rich gameplay.
5.00 star(s) 6 ratings
87 purchases
A modern, feature-rich Survival setup with custom menus, events, and immersive gameplay systems.
5.00 star(s) 20 ratings
83 purchases
All Versions | Crates | Ranks | Upgrades | Perks | Shop | Worlds | Chunk Hoppers
5.00 star(s) 4 ratings
57 purchases
A bedwars server setup made in 1.20.4 to match the Modern theme of experience.
5.00 star(s) 5 ratings
56 purchases
1.17-1.21.8 | Native 1.21.8 | Coinshop | Playtime rewards | Chat games | Gui menus | Custom Terrain
4.50 star(s) 8 ratings
46 purchases
Top