Compatibility
Minecraft: Java Edition
26.1.x
1.21.x
1.20.x
1.19.x
1.18.x
1.17.x
1.16.5
Platforms
Tags
Creators
Details
Licensed ARR
Published 4 months ago

✨ Features
- 🧪 XP Bottle Creation — Convert your XP into storable bottles via
/xpbottle <amount> - 🖱️ Easy Redemption — Right-click a bottle to instantly absorb its XP
- ⏳ Cooldown System — Configurable cooldown to prevent spam
- 🔐 Protected Bottles — Bottles are returned to the player on death instead of dropping
- 🎨 Customizable Bottles — Full control over material, name, lore, glow and hex colors
- 🔊 Sound Effects — Configurable sounds on withdraw and redeem
- 🗄️ Database Support — H2 (embedded) or MySQL via HikariCP
- 🔧 ItemsAdder Integration — Optional support for custom items
- 👑 Admin Commands — Give bottles to players and reload config
- 🌍 Configurable Messages — Full lang.yml with hex color & MiniMessage support

📋 Commands
| Command | Description | Permission |
|---|---|---|
/xpbottle <amount> |
Withdraw XP into a bottle | xpbottle.use |
/xpbottle give <player> <amount> |
Give XP bottle(s) to a player | xpbottle.give |
/xpbottle reload |
Reload the plugin configuration | xpbottle.reload |
/xpbottle help |
Display the help message | — |
/xp |
View your current level and total XP | xp.view |

🔒 Permissions
| Permission | Description | Default |
|---|---|---|
xpbottle.use |
Use /xpbottle to withdraw XP |
true |
xpbottle.give |
Give bottles to other players | op |
xpbottle.reload |
Reload the configuration | op |
xp.view |
Use /xp to view level and XP |
true |

🔖 Placeholders
| Placeholder | Description |
|---|---|
%exp% |
Amount of XP stored in the bottle |
%signer% |
Name of the player who created the bottle |
%amount% |
Number of bottles |
%time% |
Remaining cooldown time in seconds |
%player% |
Target player name |
%level% |
Player's current level |
%xp% |
Player's total XP |

⚙️ Configuration
database:
type: h2 # h2 or mysql
xpbottle:
min-exp: 50
max-exp: 1000000000
conversion-rate: 0.1 # 10% tax on withdrawal
cooldown: 10 # seconds
drop: false # drop bottle on ground instead of inventory
protected-bottles: true
bottle:
use-itemsadder: false
material: EXPERIENCE_BOTTLE
name: "#F2EC27&lʙᴏᴛᴛʟᴇ ᴅ'ᴇxᴘᴇʀɪᴇɴᴄᴇ"
lore:
- ""
- "&7xᴘ : &f%exp%"
- "&7ᴘʀᴏᴘʀɪᴇᴛᴀɪʀᴇ : &f%signer%"
- ""
- "#F2EC27ᴄʟɪᴄᴋ ᴅʀᴏɪᴛ &7| &7utiliser la bouteille"
glow: false
sound:
redeem:
sound: "ENTITY_PLAYER_LEVELUP"
enabled: true
withdraw:
sound: "ENTITY_COW_DEATH"
enabled: false

🔗 Integrations
- ItemsAdder — Enable
use-itemsadder: trueto use a custom item instead of the vanilla bottle - MySQL — Switch
database.typetomysqland fill in your credentials for multi-server setups


