Sueta

XpBottle

1.7.1

XpBottle [1.16+] – Plugin that allows players to store and transfer XP using secure custom XP bottles, perfect for survival, PvP, RPG, and economy servers

·Plugin
Tested MC versions
1.16, 1.17, 1.18, 1.19, 1.20, 1.21, 26.1, 26.2, 26.3

Features

XpBottle
Paper
Java
Discord

✨ 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

📋 Commands

CommandDescriptionPermission
/xpbottle <amount> <xpperbottle>Withdraw XP into a bottlexpbottle.use
/xpbottle give <player> <amount> <xpperbottle>Give XP bottle(s) to a playerxpbottle.give
/xpbottle reloadReload the plugin configurationxpbottle.reload
/xpbottle helpDisplay the help message—
/xpView your current level and total XPxp.view

Perms

🔒 Permissions

PermissionDescriptionDefault
xpbottle.useUse /xpbottle to withdraw XPtrue
xpbottle.giveGive bottles to other playersop
xpbottle.reloadReload the configurationop
xp.viewUse /xp to view level and XPtrue

Placeholders

🔖 Placeholders

PlaceholderDescription
%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

Configs

⚙️ 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

🔗 Integrations

  • ItemsAdder — Enable use-itemsadder: true to use a custom item instead of the vanilla bottle
  • MySQL — Switch database.type to mysql and fill in your credentials for multi-server setups

Similar projects

Plugin →