XPKeeper lets you save and retrieve your current XP level by clicking on a sign.

Yes, I know there are quite a few XP bank type plugins out there, but I wanted one without any other plugin dependencies, and one that was simple to use without any economy features - I just want to save my XP, so I don't lose it - no need for anything else.

Quote from eccentric_nz:

Still alive! Get builds here: http://tardisjenkins.duckdns.org:8080/job/XPKeeper/


How does it work?

XPKeeper is sign based, you place a sign post or wall sign and put [XPKeeper] on the first line. The text between the square brackets can be changed by editing the config file and is case-insensitive.

  • To save your XP (both LEVEL and EXPERIENCE), LEFT-click the sign with nothing (AIR) in your hand. Your XP will be transferred to the sign and will disappear from the HUD.
  • If you gain more experience, just LEFT-click the sign again to add the current amount to the existing saved XP.
  • To withdraw some XP, RIGHT-click the sign with nothing (AIR) in your hand. The amount you withdraw is set in the config file (5 levels by default). To withdraw all your XP, RIGHT-click the sign while SNEAKING.

NOTE You can configure the plugin so that you don't have to click with your fist, but it saves mistakenly placing a block :)



Removing an XPKeeper sign

XPKeeper signs cannot be removed by breaking them. You must use a command instead. Type:


And then click on the sign you want to remove. You must have nothing (AIR) in your hand.

You can only remove your own signs.


Other features

  • You may have one XPKeeper sign per server world
  • XPKeeper signs are protected from explosions and griefing



There are some configuration options:

firstline: XPKeeper

This determines what must be inside the square brackets on the first line of the sign, you could change this to 'Bank' for instance.

must_use_fist: [true|false]

This determines whether you must use your fist to click the sign.

set_limits: [true|false]

This determines whether the deposit limit feature is enabled.

  - 30
  - 50
  - 100

If set_limits is true, set the limits used by the xpkeeper.limit.[amount] permission nodes here.

withdraw: [amount]

Set the amount of XP levels you will withdraw when you right-click the sign. Set to 0 to use the old behaviour of withdrawing all your XP.

    deposit: You deposited %d XP and have reached level %d :)
    withdraw_all: You withdrew all your XP!
    withdraw_some: You withdrew %d XP Levels!

Use this to localise the player messages in game. Some message strings contain the symbols %s and %d these must not be removed as they are replaced in game with values calculated in real time. You can move them to any position that makes sense with the message.

A French translation courtesy of DragonSlayer875 can be found here



There are some:

xpkeeper.use - allow players to make XPKeeper signs, default: TRUE

xpkeeper.fist - allow players to use the /xpkfist command, default: OP

xpkeeper.pay - allow players to use the /xpkpay command, default: OP

xpkeeper.force - allow players to use the /xpkforceremove command, default: OP

xpkeeper.admin - allow players to use the /xpkgive, /xpkset and /xpkwithdraw commands, default: OP

xpkeeper.editsign - allow players to edit signs, default: OP

xpkeeper.limit - allow players to use the /xpklimit command, default: OP

xpkeeper.limit.[amount] - limit the amount of level a player a player can deposit up to, [amount] must match one of the limit options in the config

xpkeeper.limit.bypass - allow players to by pass deposit limits, default: OP



There are seven:

Command Description Alias Permission
Use to remove your XPKeeper sign, see
Removing an XPKeeper sign above
/xpkr -
Toggle the must_use_fist config option
between true and false or vice versa
/xpkf xpkeeper.fist
Toggle the set_limits config option
between true and false or vice versa
/xpkl xpkeeper.limit
/xpkwithdraw [amount]
Set the withdraw config option
to the amount of levels specified
/xpkw xpkeeper.admin
Reload changes to the config /xpkrl xpkeeper.admin
/xpkgive [player] [amount]
Add XP to a player /xpkg xpkeeper.admin
/xpkset [player] [amount]
Set a player's total XP amount /xpks xpkeeper.admin
/xpkpay [player] [amount]
Pay a player some XP /xpkp xpkeeper.use
/xpkforceremove [player]
Use to remove all XPKeeper data for
the specified player from the database.
When using the command from the
console, you must specify a player
name, otherwise it runs using the player
that types the command.
/xpkfr xpkeeper.force


To do

  1. Link signs between worlds?
  2. Add config option to limit signs per player



Basic statistics are collected by this plugin using MCStats / Plugin Metrics , such as:

  • Java Version
  • Operating System
  • System Arch
  • Global Statistics - player and server counts
  • Server Locations
  • Game Version the game version - or Minecraft Version - servers are on
  • Server Software - the server software - such as CraftBukkit - servers are running

You can opt out at any time by setting opt-out: true in plugins/PluginMetrics/config.yml


Change log

Get new builds here: http://tardisjenkins.duckdns.org:8080/job/XPKeeper/



  • Requires CraftBukkit 1.7.5 or higher
  • [In preparation for Minecraft/CraftBukkit 1.7.6/7/8] we have switched to using player UUIDs instead of names when storing and retrieving XP
    • The plugin will automatically backup and update the XPKeeper database
    • When the updating takes place the plugin will connect to api.mojang.com to lookup player UUIDs - this make take some time if you have a large number of users
    • The server must be in online mode!


  • Fixed a bug with setting XP limits and PermissionsEx


  • Added the ability to colour the first line of the sign - set firstline_colour to a colour code (&2, &c etc) in the config, or use the command xpkc [colour code] Note colour will only apply to newly created signs.


  • Fixed startup errors with CraftBukkit 1.7.2-R0.3 #2978 and higher


  • Fixed a String format error when using the /xpkpay command


  • Signs (and the blocks they may be attached to) can no longer be destroyed by pistons


  • Added /xpkreload command to reload changes made to the config file


  • Fixed firstline config option not being set when the plugin is run for the first time
  • Added configurable deposit limits
    • Enable the feature with set_limits: true - command is /xpklimit to toggle true|false
    • Set a range of maximum level limits in the config, then give players/ranks the permission xpkeeper.limit.[one of the configured amounts]
    • Bypass the limit setting (if enabled) with the permission: xpkeeper.limit.bypass (default OP)
    • If a player's currently held XP would boost the XPKeeper XP over the limit, then the plugin deposits as much as it can (up to the level limit) and leaves the rest with the player


  • Added configurable strings to the config so you can change the language used to message players


  • Fixed a problem with player names that don't fit on a sign (> 15 characters)


  • Changed all SQL to use prepared statements so that world names can have apostrophes in them


  • Added configurable withdrawal amount.
    • Set the amount (in levels) in the config with withdraw: [amount]
    • To keep the old behaviour of withdrawing all your XP, set withdraw: 0
    • To withdraw all your XP regardless of the withdraw amount, right-click the XPKeeper sign while sneaking
  • Added command /xpkwithdraw [amount] to set the withdrawal amount in the config.
  • Added some feedback messages.
  • Fixed - when removing an XPKeeper sign with /xpkremove you now get all your XP back and the sign drops naturally.
  • Fixed - only the player whose name is on the sign can interact with it.
  • Updated to Bukkit 1.4.6-R0.4-SNAPSHOT


  • Added /xpkpay [player] [amount] to pay a player some XP


  • Added command /xpkgive [player] [amount] to add XP to a player
  • Added command /xpkset [player] [amount] to set a player's total XP amount


  • Added permission xpkeeper.force for the command /xpkforceremove


  • Built with Bukkit 1.4.5-R0.3-SNAPSHOT
  • Added command /xpkforceremove to delete all player data from the database USE WITH CARE When using the command from the console, you must specify a player name, otherwise it runs using the player that types the command.
  • Added plugin metrics
  • Correctly nested permissions, so that the plugin is not clearing the first line of signs


  • Built with Bukkit 1.4.5-R0.1-SNAPSHOT
  • When making an XPKeeper sign, the first line is case-insensitive so [XpKeEpeR] and [xpkeeper] are now both valid
  • Improved sign grief prevention
  • Added config option so that you can use anything to click the sign (bit of a pain when you right-click the sign with a placeable block, but at least you now have the option) - set must_use_fist to false to click with anything
  • Added permission xpkeeper.use The default is OP. You must have this permission in order to create an XPKeeper sign

Includes all the v1.0.2 changes as well as:

  • Changed the formula for storing and retrieving XP, the sign now respects the fact that higher levels require more XP
  • Added command /xpkfist to toggle the config option must_use_fist true or false
  • Added permission xpkeeper.fist The default is OP. You must have this permission to use the /xpkfist command


What it looks like

XPKeeper sign


Source code

XPKeeper GitHub repository


Posts Quoted:
Clear All Quotes

About This Project

  • Project ID
  • Created
    Sep 8, 2012
  • Last Released File
    Feb 15, 2020
  • Total Downloads
  • License



Recent Files