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.
Integrates with
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.
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.
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.
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.
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.
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.
Everything below ships in a single JAR — no add-ons, no upsells.
| Feature | AhxerBattlePass |
|---|---|
| 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 | ✓ |
With PlaceholderAPI installed, drop these into scoreboards, tab lists or holograms. Replace <pass> with a pass id and <position> with a leaderboard rank.
%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%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 positionThe 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.
# 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
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
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.
Players use one command. Admins get a full toolkit for passes, XP, missions and resets — every action permission-gated.
| Command | Description | Permission |
|---|---|---|
| /battlepass [pass <id>]/bp | Open the main menu, or a specific pass | ahxer.battlepass.use |
| /battlepass join <id> | Buy access to a paid pass | ahxer.battlepass.use |
| /battlepassquest [id]/btquest · /bq · /quest | Open the missions menu (pass selector) | ahxer.battlepass.use |
| /battlepassleaderboard [pass] [level|xp]/btlb · /bplb | Top 10 by level or XP | ahxer.battlepass.use |
| /battlepass reload | Reload the configuration | ahxer.battlepass.reload |
| /battlepassmenu/bpmenu | Open the interactive admin panel | ahxer.battlepass.menu |
| /battlepassadmin <reload|grantpass|resetmissions|createpass|listpasses>/btadmin · /bpadmin | General administration commands | ahxer.battlepass.admin |
| /battlepasscreate <id> <slot> [type] | premium <base> | clone <src> <new> <slot>/btcreate | Create, clone or link a premium pass | ahxer.battlepass.admin |
| /battlepassrestart <id>/btrestart | Reset a pass timer to zero and reactivate it | ahxer.battlepass.admin |
| /battlepassxp <give|take|set|setlevel|info> <player> <pass> [amount]/btxp | Manage a player's XP and level | ahxer.battlepass.admin |
| /battlepassmissions reset <player> <pass> [daily|weekly|all]/btmissions | Reset a player's missions | ahxer.battlepass.admin |
| /battlepassreset <player> [pass]/btreset | Reset a player's progress in one or all passes | ahxer.battlepass.admin |
| Permission | Default | Grants |
|---|---|---|
| ahxer.battlepass.use | Everyone | Open the battle pass and view missions |
| ahxer.battlepass.admin | OP | All administration and XP commands |
| ahxer.battlepass.menu | OP | Open the admin panel and apply organizations |
| ahxer.battlepass.reload | OP | Use /battlepass reload |
| ahxer.battlepass.bypass-expiry | OP | Access expired passes |
| battlepass.premium.<base_id> | Nobody | Claim rewards of the premium linked to that base pass |
battlepass.premium.<base_id>) can claim its rewards — so each premium can be sold separately./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.storage.type: MYSQL for networks; if the database is unreachable it falls back to YAML automatically.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.