★ Ahxer Studios · Battle pass for Paper servers

Run a real battle pass
season on your server

AhxerBattlePass gives every player levels, XP and daily & weekly missions across multiple simultaneous passes — free, premium and login-streak — with per-level rewards, seasons, leaderboards and a fully visual admin panel.

v10.1.2 Paper 1.20+ Vault & PlaceholderAPI optional YAML / MySQL
In-game battle pass reward track with rows of weapon and token reward icons A reward track with 60 levels of free & premium rewards

Integrates with

VtVaultOptional · money rewards
{ }PlaceholderAPIOptional · placeholders
GyGeyserBedrock menus
NxNxMenuCustom backgrounds
LPLuckPermsPermission rewards
DBMySQLNetwork storage
Features

Everything a battle pass season needs

Run several passes at once, each with independent progress. Every mission, reward, XP curve and menu layout is editable — and changes apply instantly, no manual reloads.

Multiple passes

Three pass types, side by side

Every player gets independent level, XP and missions per pass. Run a free pass, its premium counterpart and a login streak together in one menu.

Battle BATTLE_PASS
Missions grant XP, levels rise and rewards drop at each level.
Premium PREMIUM_PASS
Linked to a base pass; shares its level and grants exclusive rewards.
Streak LOGIN_STREAK
Daily login rewards measured by elapsed time, no missions.
Battle pass main menu showing a base pass and its premium pass
Premium & XP

Sell premium access, share the grind

A premium pass shares its base pass's level and XP, and grants exclusive rewards. Everyone can open it, but only players with the pass's unique permission can claim — so you can sell each premium separately.

  • Unique permission per premium: battlepass.premium.<base_id>
  • Four XP modes: FLAT_EXP, FORMULA, LIST and EXPONENTIAL
  • Per-level rewards: money, items with enchants, commands, permissions and vanilla XP
  • Locked reward icons show exactly what a player needs
Premium Pass tooltip showing current level, XP bar and missions count
Missions

Daily & weekly missions on rotation

Each pass assigns random daily and weekly missions from its pool. Mission types are auto-detected from the ID — mine, kill, harvest, chop, fish, craft, place and breed — so adding one is a single config block.

  • 5 daily and 6 weekly missions by default, fully configurable
  • Weekly XP and target amounts scaled by multipliers
  • Auto-assigned on open — never stuck at 0/0
  • Disable a mission to pull it from the pool without deleting it
Daily missions menu Weekly missions menu
Visual admin panel

Build and manage passes without YAML

The /bpmenu panel runs the whole lifecycle from a GUI: create, clone, edit, pause, end, restart a season, show/hide, auto-season and delete. Pick from 10 menu organizations that lay out your passes automatically.

  • Pass lifecycle: ACTIVE / PAUSED / ENDED, with one-click controls
  • 10 menu layouts, including multi-slot "big frame" designs
  • "Premium up front" rule keeps each base next to its premium
  • Every change reloads instantly — no manual /bpadmin reload
Interactive admin panel hub Menu organization selector
Seasons & reach

Seasons, leaderboards, Bedrock & storage

Passes run on a season timer that starts on its own, with manual or automatic reset and leaderboard archiving. Add a top-10 leaderboard, Bedrock support through Geyser, and pick your storage backend.

  • Auto-starting season timer with duration-days and auto-reset
  • Top 10 leaderboard by level or XP, also via PlaceholderAPI
  • Bedrock-friendly menus through Geyser, NxMenu custom backgrounds
  • YAML by default or MySQL, with automatic fallback to YAML
Edit pass menu with lifecycle buttons
What's included

One plugin, the full season toolkit

Everything below ships in a single JAR — no add-ons, no upsells.

FeatureAhxerBattlePass
Multiple simultaneous passes, independent per-player progress
Battle, premium & login-streak pass types
Daily & weekly missions with auto type detection
Four XP modes (FLAT_EXP, FORMULA, LIST, EXPONENTIAL)
Per-level rewards: money, items, commands, permissions, XP
Premium passes with a unique permission each
Interactive admin panel (/bpmenu)
10 automatic menu organizations (incl. multi-slot)
Pass lifecycle: active / paused / ended + seasons
Auto-starting season timer & auto-reset
Top 10 leaderboard by level or XP
PlaceholderAPI support
Bedrock via Geyser & NxMenu custom backgrounds
YAML & MySQL storage with fallback
Hex colors & fully editable messages (multi-language)
Instant reload on every change
PlaceholderAPI

Live progression data, anywhere

With PlaceholderAPI installed, drop these into scoreboards, tab lists or holograms. Replace <pass> with a pass id and <position> with a leaderboard rank.

Player
%ahxerbattlepass_level_<pass>%Current level in a pass
%ahxerbattlepass_xp_<pass>%Current XP in a pass
%ahxerbattlepass_xp_next_<pass>%XP needed for the next level
%ahxerbattlepass_progress_<pass>%Percentage to the next level
%ahxerbattlepass_streak_<pass>%Login streak day count
Leaderboard
%ahxerbattlepass_top_name_<pass>_<position>%Player name at a leaderboard position
%ahxerbattlepass_top_level_<pass>_<position>%Level at a leaderboard position
%ahxerbattlepass_top_xp_<pass>_<position>%XP at a leaderboard position
Config

Tune the curve, the missions and the rewards

The reward track below shows a sample of the 60-level curve — free rewards on the indigo row, premium on the gold row. Everything is defined in plain YAML.

Lv 5
+$420
x3 reward
210 XP/lv
Lv 10
10 Iron
Enchanted gear
326 XP/lv
Lv 20
XP points
Command reward
531 XP/lv
Lv 30
Money
Permission
865 XP/lv
Lv 40
Items
x3 reward
1,407 XP/lv
Lv 50
Money
Premium item
2,292 XP/lv
Lv 60
Final reward
Premium finale
3,731 XP/lv
pass.yml — XP & missions
# XP curve: round(start * multiplier^level)
xp-mode: FLAT_EXP
xp-exponential:
  start: 200
  multiplier: 1.05

missions:
  daily-mission-count: 5
  weekly-missions:
    enabled: true
    count: 6
  mine_diamond:
    display-name: "&bMine {amount} diamonds"
    material: DIAMOND_ORE
    amount: 10
    xp-reward: 40
pass.yml — rewards & season
rewards:
  levels:
    5:
      rewards:
        - type: MONEY
          amount: 420
          display: "&e+$420"
        - type: ITEM
          material: IRON_INGOT
          amount: 10

duration-days: 90      # 0 = unlimited
require-permission: ""   # empty = open to all
Storage layout

Clean, readable files

Each pass is its own file in passes/, players live in playerdata/, and all text sits in messages/. Switch to MySQL in config.yml for networks — it falls back to YAML automatically if the database is unreachable.

Plugin folder layout: messages, passes, playerdata and config.yml
Commands & permissions

Players open it; admins run the season

Players use one command. Admins get a full toolkit for passes, XP, missions and resets — every action permission-gated.

CommandDescriptionPermission
/battlepass [pass <id>]/bpOpen the main menu, or a specific passahxer.battlepass.use
/battlepass join <id>Buy access to a paid passahxer.battlepass.use
/battlepassquest [id]/btquest · /bq · /questOpen the missions menu (pass selector)ahxer.battlepass.use
/battlepassleaderboard [pass] [level|xp]/btlb · /bplbTop 10 by level or XPahxer.battlepass.use
/battlepass reloadReload the configurationahxer.battlepass.reload
/battlepassmenu/bpmenuOpen the interactive admin panelahxer.battlepass.menu
/battlepassadmin <reload|grantpass|resetmissions|createpass|listpasses>/btadmin · /bpadminGeneral administration commandsahxer.battlepass.admin
/battlepasscreate <id> <slot> [type] | premium <base> | clone <src> <new> <slot>/btcreateCreate, clone or link a premium passahxer.battlepass.admin
/battlepassrestart <id>/btrestartReset a pass timer to zero and reactivate itahxer.battlepass.admin
/battlepassxp <give|take|set|setlevel|info> <player> <pass> [amount]/btxpManage a player's XP and levelahxer.battlepass.admin
/battlepassmissions reset <player> <pass> [daily|weekly|all]/btmissionsReset a player's missionsahxer.battlepass.admin
/battlepassreset <player> [pass]/btresetReset a player's progress in one or all passesahxer.battlepass.admin
PermissionDefaultGrants
ahxer.battlepass.useEveryoneOpen the battle pass and view missions
ahxer.battlepass.adminOPAll administration and XP commands
ahxer.battlepass.menuOPOpen the admin panel and apply organizations
ahxer.battlepass.reloadOPUse /battlepass reload
ahxer.battlepass.bypass-expiryOPAccess expired passes
battlepass.premium.<base_id>NobodyClaim rewards of the premium linked to that base pass
FAQ

Common questions

What versions does it support?
AhxerBattlePass runs on Paper 1.20+ (built against API 1.20).
Do I need Vault or PlaceholderAPI?
Both are optional. Vault (plus an economy plugin) enables money rewards and paid passes; PlaceholderAPI enables the placeholders. The plugin runs without them.
Can I run more than one pass at the same time?
Yes. You can run multiple passes simultaneously — battle, premium and login-streak — each with independent per-player level, XP and missions stored per pass id.
How do premium passes work?
A premium pass links to a base pass and shares its level and XP. Everyone can open it, but only players with the pass's unique permission (battlepass.premium.<base_id>) can claim its rewards — so each premium can be sold separately.
Do I have to edit YAML by hand?
No. The /bpmenu admin panel creates, clones, edits, pauses, ends and organizes passes from a GUI, and every change reloads instantly. YAML is always there if you prefer it.
Does it work for Bedrock players?
Yes. Bedrock players joining through Geyser see the chest menus translated automatically, and you can use NxMenu custom backgrounds for the menu titles.
YAML or MySQL?
YAML by default, with each player and pass stored independently. Set storage.type: MYSQL for networks; if the database is unreachable it falls back to YAML automatically.
Get AhxerBattlePass

Give your players a season to chase

Drop in the JAR, keep the included passes or build your own from the visual panel, and run a full battle pass season with missions, rewards and leaderboards. One-time purchase on BuiltByBit.

$12.99One-time · AhxerBattlePass v10.1.2
Get AhxerBattlePass