XpBottle
1.7.1XpBottle [1.16+] – Plugin that allows players to store and transfer XP using secure custom XP bottles, perfect for survival, PvP, RPG, and economy servers
1.7.1latestXpBottle 1.7.1last week - Improved compatibility from Minecraft 1.16.5 to 26.3. - Fixed redemption of custom XP bottles. - Fixed items being lost when inventories are partially full. - Includes previous fixes for XP exploits, cooldowns, database saves, and permissions.1.7.0XpBottle 1.7.0last week This is a major bugfix release. Updating is strongly recommended as it fixes an XP duplication exploit.Bug Fixes
Critical
- XP duplication exploit — Negative amounts were accepted by the withdraw command (for example/xpbottle -1000 1), which gave players free XP instead of removing it. All amounts must now be strictly positive. - Cooldown never enforced — The withdraw cooldown was saved but never checked, so it had no effect. It is now applied before every withdrawal, and the waiting message shows the remaining time. - MySQL settings ignored — The plugin readdatabase.mysql.host,database.mysql.port, etc. while the config file definesdatabase.host,database.port,database.name,database.useranddatabase.password. MySQL connections therefore always used the default values. The correct config keys are now used.Major
- Silent data loss in SQL databases — Saving a player ran a plainUPDATEthat silently failed when the row did not exist yet. Saves now use an upsert (ON DUPLICATE KEY UPDATEfor MySQL,ON CONFLICT DO UPDATEfor SQLite), so no player data is lost anymore. - Tab completion did not work — TheTabCompleterwas never registered, so/xpbottlehad no tab completion. It is now registered (and re-registered on reload) for subcommands, suggested amounts and player names. - `min-exp` and `max-exp` were never applied — These config options existed but were never checked. They are now enforced, with dedicated error messages.Minor
- Integer overflow — The total cost (amount x bottles) is now computed in 64-bit and rejected if it exceeds theintrange, preventing corrupted bottles. Redeeming a full stack while sneaking is also computed in 64-bit. - Invalid sound name — An invalid sound name in the config no longer causes an error on redeem; the default sound is used as a fallback. - ItemsAdder fallback — If the configureditemsadder_iditem cannot be found, the plugin now falls back cleanly to a vanilla bottle instead of failing. - Update checker — A local version newer than the published one is no longer reported as "update available". - Permissions — The children ofxpbottle.adminpointed to non-existent permissions (xp.admin.*). They now point to the plugin's real admin permissions (xpbottle.give,xpbottle.take,xpbottle.reset,xpbottle.reload).Optimizations
- Bottle generation — Bottles are now created once and distributed as stacks instead of rebuilding the same item N times. This significantly reduces NBT serialization for large withdrawals. - NBT key caching — TheNamespacedKeyused to identify XP bottles is cached in the listener instead of being recreated on every interaction and craft check. - Thread-safe SQL access — The shared JDBC connection is now protected against simultaneous access from asynchronous tasks, eliminating a corruption risk on SQLite and MySQL. - Safer reload —/xpbottle reloadno longer clears running cooldowns (they can no longer be bypassed by asking for a reload) and keeps the tab completer registered. - Withdraw sound — The previously unusedsound.withdrawconfig option is now played on withdrawal.1.6.2XpBottle 1.6.24 weeks ago Corrections and additions
- Completing the/xpbottle helpwith thetakeandresetcommands. - Fixed helper syntax for XP withdrawal andgivecommand, with XP per bottle and number of bottles parameters. - Added missing messages tolang.yml: player not found, invalid number, negative levels, player-only command, and XP reset confirmations. - Replaced hardcoded player messages with keys loaded fromlang.yml. - Added a configurable message inlang.ymlwhen a translation key is not found. - Updated the `xpbottle command and permission. resetinplugin.yml`. - Configurable protection of XP bottles against renaming at the anvil and their use in crafts, while leaving them tradable.1.6.1XpBottle 1.6.1May 31, 2026 Ajout tooltip_style: "tooltip:tooltip/name" in config.yml bottle: tooltip_style: "tooltip:tooltip/common" ....1.6.0XpBottle 1.6.0May 31, 2026 v1.6.0
-Improvements
Improved color correction system for consistent rendering across all items -
Enhanced RGB → in-game color conversion accuracy -
Unified color processing pipeline for stable results
-Changes
itemsadder_useupdated: -Removed legacy support:
custom-model-data: 0-Added new format:
itemsadder_id: "namespace:name_id"
-Fixes
Fixed inconsistent color rendering on textured items -
Resolved color parsing glitches affecting visual output -
Improved overall stability of the color processing system
1.5.0XpBottle 1.5.0May 23, 2026 redesign of code and .yml files config.yml lang.yml1.2.5XpBottle 1.2.5Apr 4, 2026 new messages in messages.yml1.2.0XpBottle 1.2.0Mar 30, 2026 What's new
Conversion tax (configurable) Added a cost system when converting XP to bottles Allows you to define a percentage of XP lost Example: 5% XP consumed when using /xpbottle
Cooldown (configurable) Added a delay between each use of /xpbottle Helps limit spam and balance gameplay Fully customizable via config
Protected bottles Added an XP bottle protection system: Protection during drop (anti-theft / security) Option to prevent bottles from falling to the ground upon death All options can be activated/deactivated in the configuration
Setup All new features are 100% configurable Independent activation/deactivation of each system
1.1.0XpBottle 1.1.0Mar 13, 2026 redesign of controls and improvement1.0.0XpBottle 1.0.0Jan 29, 2026
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta