ModernJobs
A premium Minecraft jobs plugin with full GUI, prestige, boosters, perks, leaderboards and PlaceholderAPI support.
ActionBar & Title Notifications
Action Bar
Every time a player earns XP, a message appears above the hotbar. This is called the action bar. It shows:
- How much XP was just earned (
<xp>) - How much money was earned (
<money>) - Which job the XP came from (
<job>) - Current level (
<level>) - XP progress (
<current_xp>/<xp_required>) - A visual progress bar (
<progress_bar>)
You can customise the format in lang/EN.yml under xp-gain-actionbar.
To prevent spam, the action bar is only sent once per notification-cooldown milliseconds (configurable in config.yml).
To disable the action bar entirely: set actionbar-enabled: false in config.yml.
Level-Up Title
When a player levels up, a large title appears on screen. Configure in config.yml:
title-enabled— turn it on/offtitle-fade-in,title-stay,title-fade-out— control timing (in ticks, 20 ticks = 1 second)
The title text is in lang/EN.yml under level-up-title and level-up-subtitle.
Server-wide Broadcast
Set broadcast-levelup: true in config.yml to announce level-ups in chat. Use broadcast-levelup-interval: 5 to only announce every 5 levels (so chat isn't spammed for every single level).
Leaderboard
The leaderboard tracks which players have the most XP in each job. It is cached and refreshed periodically.
- Global leaderboard — ranks players by total XP across all jobs.
- Per-job leaderboard — ranks players by XP in a specific job.
- Refresh interval: set
leaderboard.refresh-intervalinconfig.yml(seconds). - Force refresh: use the Admin GUI or
/jobs admin→ Refresh Leaderboard. - Number of entries per page: set
leaderboard.sizeinconfig.yml.
PlaceholderAPI Support
%jobs_...%. If you still see older %modernjobs_...% examples below, use %jobs_...% instead.If PlaceholderAPI is installed, ModernJobs registers the following placeholders. These work in any PlaceholderAPI-compatible plugin (tab lists, scoreboards, holograms, etc.).
<job> with the job ID (filename without .yml, e.g. miner, farmer, hunter).| Placeholder | Returns |
|---|---|
%modernjobs_level_<job>% | Player's current level in that job |
%modernjobs_xp_<job>% | Player's current XP in that job |
%modernjobs_xp_required_<job>% | XP needed for the next level |
%modernjobs_prestige_<job>% | Player's prestige level in that job |
%modernjobs_total_xp_<job>% | Total XP ever earned in that job |
Folia Support
Correct Placeholder List
ModernJobs currently exposes these PlaceholderAPI values through the jobs identifier:
| Placeholder | Returns |
|---|---|
%jobs_level_<job>% | Player's current level in that job |
%jobs_xp_<job>% | Player's current XP in that job |
%jobs_xp_needed_<job>% | XP still needed for the next level |
%jobs_progress_<job>% | Progress percentage for that job |
%jobs_progress_bar_<job>% | The configured progress bar for that job |
%jobs_max_level_<job>% | The max level configured for that job |
%jobs_prestige_<job>% | Player's prestige level in that job |
%jobs_total_xp_<job>% | Total XP ever earned in that job |
%jobs_job_<job>% | The display name of that job |
%jobs_count% | How many jobs the player has joined |
%jobs_total_level% | Total level across all joined jobs |
%jobs_job% | The first joined job's display name |
%jobs_level% | The first joined job's level |
%jobs_xp% | The first joined job's current XP |
%jobs_xp_needed% | The first joined job's XP needed |
%jobs_progress% | The first joined job's progress percentage |
%jobs_progress_bar% | The first joined job's progress bar |
%jobs_max_level% | The first joined job's max level |
%jobs_prestige% | The first joined job's prestige |
Examples
%jobs_level_miner% %jobs_prestige_hunter% %jobs_progress_bar_farmer% %jobs_total_level%
If a placeholder returns nothing, check PlaceholderAPI is installed, confirm the player has data for that job, and verify the job ID exactly matches the filename.
ModernJobs fully supports Folia, the threaded Minecraft server fork. The plugin automatically detects whether it is running on Folia or standard Paper/Spigot and uses the correct scheduler API.
No extra configuration is needed — just drop the same jar onto a Folia server.
Plugin Integrations
| Plugin | Type | What it enables |
|---|---|---|
| Vault | Soft dependency | Money rewards for actions and level rewards. Without Vault, money values are ignored silently. |
| PlaceholderAPI | Soft dependency | Exposes job stats as placeholders for scoreboards, tab, holograms, etc. |
| LuckPerms | Soft dependency | When level rewards grant permissions, LuckPerms applies them persistently. Works with other permission plugins too. |
| ItemsAdder | Soft dependency | Custom blocks and furniture from ItemsAdder can be used as action targets in job files (ia-block-break, ia-furniture action sections) |
| Nexo | Soft dependency | Same as ItemsAdder but for Nexo custom blocks and furniture (nexo-block-break, nexo-furniture) |
Admin Tips & Common Questions
Job-Specific Prestige Reward Example
rewards:
0:
10:
money: 1000
1:
10:
money: 2500
perks:
- "miner-vein"
2:
10:
money: 5000
items:
- "DIAMOND 4"
This means the level 10 reward for that job becomes stronger once the player reaches higher prestige tiers.
How do I add a brand new job?
- Create a new file in
plugins/ModernJobs/jobs/— e.g.myjob.yml - Copy the structure from an existing job file
- Change
display-name,icon,color,gui-slotand theactionssection - Run
/jobs reload
How do I disable a job without deleting its file?
Add its ID to disabled-jobs in config.yml:
jobs:
disabled-jobs:
- enchanter
How do I position jobs in the GUI?
Each job's yml has a gui-slot number. Slot 0 = top-left, slot 53 = bottom-right. Plan your layout on a 9×6 grid:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
How do I make leveling faster or slower?
In the job file, adjust xp-formula.multiplier. Lower = faster leveling, higher = slower. You can also adjust individual action XP values.
How do I give a player XP manually?
/jobs giveexp PlayerName miner 1000
How do I reset a player's job data?
/jobs reset PlayerName miner # Reset one job /jobs reset PlayerName # Reset ALL jobs
MiniMessage colour codes
All text in config.yml, gui.yml, job files and lang files supports MiniMessage formatting:
| Tag | Result |
|---|---|
<green> | Green text |
<gold> | Gold text |
<aqua> | Aqua text |
<red> | Red text |
<light_purple> | Light purple |
<yellow> | Yellow |
<white> | White |
<gray> | Gray |
<dark_gray> | Dark gray |
<bold> | Bold |
<italic> | Italic |
<underlined> | Underlined |
<strikethrough> | |
<color:#FF0000> | Custom hex colour |
/jobs reload to apply without restarting. Player data is automatically saved before reload.
ModernJobs — Premium Minecraft Jobs Plugin
Documentation generated for server administrators and players.