
World Levels
Work together to level up your Minecraft worlds to unlock features and rewards!

Work together to level up your multiplayer Minecraft server to unlock features and rewards!
Features
- Level up your multiplayer server by gaining XP through normal gameplay
- Reward your players for leveling up the world with:
- Items
- Increasing the world border
- Permissions, groups, and currency (requires Vault)
- Control what players can access based on World Level:
- Building Nether or The End portals
- Mining blocks
- Placing blocks
- Crafting items
- Trigger any command upon world level up
- Highly customizable with a full config schema
- Add custom XP sources globally or at a per-level basis
- Scale leveling exactly to your liking
- Specify groups of levels per-world or groups of worlds
- Exclude certain worlds from the plugin
- Support for infinite level scaling and rewards
- Optionally reward offline or new players for level gains
- Customizable messages, with MiniMessage formatting support
- Optionally add Vault for full integration with your permission and economy plugin of choice

GIF showing leveling up, Nether access, and world border increases
Customizable Server XP Bar

Level Up Alerts
Configuration
This plugin likely requires configuration before it can be useful to you. The default configuration file will be created for you, but it can also be found here. If your text editor supports JSON/YAML schemas, you will also get configuration autocomplete suggestions and linting.
You can find a more detailed example config here.
Config Examples
These are partial configurations for the levels section specifically.
How level ranges and XP requirements work
levels:
'1':
# level 1 should always require 0 XP
xp: 0.0
'2':
# level 2 requires 100 XP to get to
xp: 100.0
'3':
xpStep:
# level 3 adds 50 to the previous requirement, making it 150 XP to get to
add: 50.0
'4':
xpStep:
# level 4 multiplies the previous requirement by 2, making it 300 XP to get to
mult: 2.0
'5-10':
xpStep:
# levels 5-10 adds 50 to the previous requirement, making the following for each:
# level 5 requires 350
# level 6 requires 400
# level 7 requires 450
# level 8 requires 500
# level 9 requires 550
# level 10 requires 600
add: 50.0
'11-':
# Level 11 and beyond (scales infinitely) requires 1000 XP to get to
xp: 1000.0
Lock the Nether and The End at the start, and unlock them when the server reaches level 2 and 3, respectively
levels:
'1':
xp: 0.0
# Prevent Nether and End portals from being used initially
allowEnd: false
allowNether: false
'2':
xp: 2000.0
# Unlock Nether portals at level 2
allowNether: true
titles:
- title: <red>Nether</red> <green>unlocked!</green>
'3':
xp: 4000.0
# Unlock End portals at level 3
allowEnd: true
titles:
- title: <light_purple>The End</light_purple> <green>unlocked!</green>
'4-':
xp: 8000.0
Award players with different items, and unlock crafting and mining
levels:
'1':
xp: 0.0
items:
IRON_INGOT: 1
levels:
crafting:
DIAMOND_HELMET: false
DIAMOND_CHESTPLATE: false
DIAMOND_LEGGINGS: false
DIAMOND_BOOTS: false
mining:
DIAMOND_ORE: false
placing:
DIAMOND_ORE: false
'2':
xp: 2000.0
items:
COPPER_INGOT: 1
# crafting: is omitted here because by default all crafting is allowed
# so, at level 2, players can craft diamond armor
# mining: and placing: are omitted for the same reason
'3-4':
xp: 4000.0
items:
# Since '3-4' is a range, this awards a diamond for both levels 3 and 4
DIAMOND: 1
'5-':
xp: 8000.0
items:
# Since '5-' scales infinitely, this awards a netherite ingot every single
# level from 5 onwards
NETHERITE_INGOT: 1
How you can manipulate the world border for each level.
levels:
'1':
xp: 0.0
# Sets the initial world border to have a radius of 128, centered at 0,0
worldBorder:
radius: 128
center:
x: 0
z: 0
'2':
xp: 2000.0
# Sets the radius of the world border for achieving level 2 at 256
worldBorder:
radius: 256
'3':
xp: 4000.0
# Adds the radius of the world border for achieving level 3 to the previous
# radius, making it 512
worldBorder:
radiusStep:
add: 256
'4-':
xp: 8000.0
# Multiplies the radius of the world border for achieving level 4 and onward
# to the previous radius, making it 768, 1152, 1728, and so on
worldBorder:
radiusStep:
mult: 1.5
Award permissions, groups, and currency for certain levels (requires Vault)
levels:
'1':
xp: 0.0
'2':
xp: 2000.0
# Assigns 'mypermission.one' to all players
permissions:
- "mypermission.one"
# Gives all players 50.0 currency
currency:
add: 50.0
'3':
xp: 4000.0
# Assigns 'mypermission.two' to all players
permissions:
- "mypermission.two"
# Multiply all player's current currency by 2
currency:
mult: 2.0
'4':
xp: 8000.0
# Adds all players to the 'mygroup' group
groups:
- "mygroup"
Run commands on level up
levels:
'1':
xp: 0.0
'2':
xp: 2000.0
# Runs the 'time set day' command via the server console
commands:
- "time set day"
'3':
xp: 4000.0
# Runs the 'say You leveled up!' command via the server console
commands:
- "say You leveled up!"
Require the server's players to collectively mine a certain amount of different tiers of ore to get to the next level.
levels:
'1':
xp: 0.0
xpWeights:
# This makes it so no vanilla XP sources contribute world level XP
DEFAULT: 0.0
customXPSources:
mineIgnoresSilkTouch: true # set this to prevent XP gains for mining with silk touch
playerMine:
COAL_ORE: 1 # Awards 1 XP for each coal ore mined
'2':
xp: 100.0 # requires 100 coal ore mined (defined in level 1) to get this level
xpWeights:
DEFAULT: 0.0
customXPSources:
mineIgnoresSilkTouch: true
playerMine:
COPPER_ORE: 1
'3':
xp: 200.0 # requires 200 copper ore mined (defined in level 2) to get this level
xpWeights:
DEFAULT: 0.0
customXPSources:
mineIgnoresSilkTouch: true
playerMine:
IRON_ORE: 1
'4':
xp: 300.0 # requires 300 iron ore mined (defined in level 3) to get this level
xpWeights:
DEFAULT: 0.0
customXPSources:
mineIgnoresSilkTouch: true
playerMine:
DIAMOND_ORE: 1
'5':
xp: 400.0 # requires 400 diamond ore mined (defined in level 4) to get this level
Specify levels based on world and share rewards
groups:
WorldGroup:
name: The Overworld
# This group only applies to the world named "world"
worlds:
- world
# When this group levels up, it will share items and permission rewards to players in
# the groups listed
rewardOtherGroups:
- NetherGroup
- EndGroup
# Rewards players past rewards when they join the group for the first time
rewardNewPlayers: true
# Rewards players past rewards when they join the group after being offline
rewardOffline: true
levels:
"1-":
xp: 0.0
xpStep:
add: 100.0
# Every level, this will reward every player in any of the groups a
# gold ingot, due to rewardOtherGroups
items:
GOLD_INGOT: 1
NetherGroup:
name: The Nether
worlds:
- world_nether
rewardOtherGroups:
- WorldGroup
- EndGroup
levels:
"1-":
xp: 0.0
xpStep:
add: 100.0
EndGroup:
name: The End
worlds:
- world_the_end
rewardOtherGroups:
- NetherGroup
- WorldGroup
levels:
"1-":
xp: 0.0
xpStep:
add: 100.0
Messages
The default messages file will be created for you, but it can also be found here. If your text editor supports JSON/YAML schemas, you will also get configuration autocomplete suggestions and linting.
Messages support MiniMessage, and have the following custom replacements available:
| Replacement | Description |
|---|---|
<level> | Current world level |
<relative_xp> | Amount of current XP relative to the current level requirements |
<level_xp> | XP requirement to reach the next level |
<total_xp> | Absolute total current XP |
<group_name> | Name of the level group |
<version> | Plugin version |
<modrinth> | Plugin Modrinth URL |
<click-modrinth></click-modrinth> | Makes inner text clickable for the Modrinth URL |
Permissions
| Permission | Description |
|---|---|
worldlevels.earn.exempt | Prohibit the player from gaining World Levels XP (by default, all players earn XP) |
worldlevels.help | Access to the worldlevels help command |
worldlevels.reload | Access to the worldlevels reload command |
worldlevels.reset.all | Access to the worldlevels reset all command |
worldlevels.reset.rewards | Access to the worldlevels reset rewards command |
worldlevels.update | Access to the worldlevels update command |
worldlevels.version | Access to the worldlevels version command |
worldlevels.xp.add | Access to the worldlevels xp add command |
worldlevels.xp.get | Access to the worldlevels xp command |
worldlevels.xp.set | Access to the worldlevels xp set command |
Commands
All the following are prefixed with worldlevels. For example, worldlevels help.
Arguments in <> are required, arguments in [] are optional.
| Command | Description |
|---|---|
help | Shows a list of commands |
reload | Reload the plugin configuration and save from file |
xp | Gets the current XP total and level |
xp add <xp> | Add the given amount of XP to the total, supports negatives |
xp set <xp> | Sets the total XP to the given amount |
update | Checks for plugin updates |
version | Prints the plugin version |
reset all | Resets total XP back to 0 and allows all players to regain rewards |
reset rewards [player] | Resets rewards for the given player (or all players), allowing them to regain rewards for past levels |
Metrics
This plugin collects anonymized usage statistics via bStats. bStats is
used by many plugins and provides useful statistics for development, but it can
be disabled in the bStats config.yml for your server.
In addition to the default stats collected, World Levels also counts a few stats to better gauge how the plugin is used. These are:
- The number of level groups your server uses
- The average number of worlds in each level group
- The average number of levels in each level group