Jobs Reborn: setting up RPG jobs on a Minecraft server (2026)

Jobs Reborn: setting up RPG jobs on a Minecraft server (2026)

Jobs Reborn has been around since 2014, survived 2-3 maintainer changes, and still ships on roughly half of every survival server I touch. This is the working setup for Paper 1.21: per-job configs, XP and pay formulas, placed-block anti-abuse, the built-in /jobs reward shop, and PlaceholderAPI hooks. Tested under real load with 200+ concurrent players.

What Jobs Reborn Is and Why It Still Lives in 2026

Jobs Reborn (plugin id com.gamingmesh.jobs, author Zrips) drops RPG-style professions into the game. Each player picks 1-3 jobs from a list (Miner, Woodcutter, Hunter, Farmer, Builder, Fisherman, Brewer, Enchanter, Crafter, Digger, Weaponsmith), and every themed action mints money through Vault and grants job experience. Level up, unlock more paying blocks, sometimes unlock permissions or rewards.

Why it has not died after 11 years:

  • active maintenance on GitHub at github.com/Zrips/Jobs, commits land regularly
  • honest Vault integration, sits on top of any economy (EssentialsX, CMI, TheNewEconomy)
  • 30+ action types: Break, Place, Kill, Smelt, Brew, Enchant, Eat, Milk, TameAnimal, Repair, Craft, Fish, Bake, Strip, Shear and so on
  • a real placed-block protection that actually stops cobblegen abuse
  • a separate /jobs reward shop system, no third-party plugin needed for simple cases

Competitors exist. mcMMO gives you skills instead of jobs, Aurelium Skills is the modern hipster pick, AdvancedJobs tried to copy the formula and faded. But when the design call is "chop wood, get coins," Jobs Reborn is still the default.

Installation and Dependencies

Minimum:

  • Paper or Purpur 1.20.6+ (1.21.x is the safe bet, 1.21.4 has no known regressions)
  • Java 21 (Paper 1.21 will not even start otherwise)
  • Vault 1.7+ (github.com/MilkBowl/Vault)
  • any Vault-compatible economy: EssentialsX Economy, CMI Economy, TNE

Layout:

plugins/
  Vault.jar
  EssentialsX.jar
  EssentialsXChat.jar
  Jobs.jar

Get Jobs Reborn only from spigotmc.org/resources/jobs-reborn.4216 or GitHub releases. Mirror sites and reuploads on random forums are usually old or modified, skip them.

First boot generates:

plugins/Jobs/
├── config.yml
├── generalConfig.yml
├── jobs/
│   ├── Miner.yml
│   ├── Woodcutter.yml
│   ├── Hunter.yml
│   ├── Farmer.yml
│   ├── Builder.yml
│   └── ...
├── messages/
├── data/
└── locale/

Smoke test:

/jobs
/jobs browse
/jobs join Miner

If you see the list and can join, the engine works. If chat shows Economy plugin not found, the load order is wrong or Vault never picked up an economy. Run /vault-info to confirm what Vault hooked into.

Job Config Walkthrough: jobs/Miner.yml

Each file under plugins/Jobs/jobs/ is one profession. Skeleton:

Miner:
  fullname: '&7Miner'
  shortname: 'M'
  description: 'Earns money mining ores and stone'
  FullDescription:
    - '&7Earns money for mining ores'
    - '&7Use /jobs join Miner'
  ChatColour: GRAY
  BossBar: true
  ActionBar: true
  MaxLevel: 200
  VipMaxLevel: 250
  ChunkBlockLimit: 100
  Gui:
    Item: IRON_PICKAXE
    CustomModelData: 0
  leveling-progression-equation: 100*(joblevel)+(joblevel*joblevel*4)
  income-progression-equation: baseincome+(baseincome*(joblevel-1)*0.0075)
  experience-progression-equation: baseexperience+(baseexperience*(joblevel-1)*0.005)
  Break:
    STONE:
      income: 0.10
      points: 0.10
      experience: 1.0
    COAL_ORE:
      income: 2.5
      experience: 5
    DEEPSLATE_COAL_ORE:
      income: 3.0
      experience: 6
    IRON_ORE:
      income: 5.0
      experience: 10
    DEEPSLATE_IRON_ORE:
      income: 6.0
      experience: 12
    DIAMOND_ORE:
      income: 30.0
      experience: 80
    DEEPSLATE_DIAMOND_ORE:
      income: 35.0
      experience: 90
    ANCIENT_DEBRIS:
      income: 80.0
      experience: 200

Key fields:

  • MaxLevel caps the grind
  • VipMaxLevel is the cap for anyone with jobs.vipmaxlevel
  • ChunkBlockLimit is the per-chunk pay cap per material (100 stone in one chunk, after that it pays zero). First defense against farms.
  • Break / Place / Kill / Smelt / Brew are action sections
  • inside each section you list the material (Bukkit Material enum names) and three numbers: income (Vault money), experience (job XP), points (bonus points for /jobs points, optional)

XP, Income, and the Leveling Curve

Jobs Reborn ships three formulas right inside the job file. Edit them when the default balance does not fit your server.

leveling-progression-equation: 100*(joblevel)+(joblevel*joblevel*4)
income-progression-equation: baseincome+(baseincome*(joblevel-1)*0.0075)
experience-progression-equation: baseexperience+(baseexperience*(joblevel-1)*0.005)

Default behavior:

  • level 1 to 2 needs about 104 XP
  • level 50 to 51 needs roughly 5100 + 10000 = around 15100 XP
  • level 100 to 101 needs about 50400 XP
  • income grows by 0.75% per level, XP requirement by 0.5%

The curve is mild. On a survival server with 100-150 online and stock numbers, an average player hits MaxLevel 200 in 80-120 hours of focused play on a single job. Want longer grind? Push the leveling-progression-equation coefficients up. Want a fast lite-server for a one-month cycle? Push them down.

A global multiplier across jobs without touching configs:

  • jobs.boost.<jobname>.exp.2 for x2 XP on a job
  • jobs.boost.all.money.1.5 for x1.5 money everywhere
  • jobs.boost.<jobname>.both.3 for x3 across the board, ideal for events

Much cleaner than maintaining three config copies for VIP groups.

Restricted Areas and WorldGuard

Classic player move: build a STONE farm at world border, drop a cobblestone generator, grind Miner for a week. Defense is two layers.

Layer one is built-in restricted-areas in generalConfig.yml:

restricted-areas:
  area1:
    world: 'world'
    point1:
      x: -200
      y: 0
      z: -200
    point2:
      x: 200
      y: 256
      z: 200
    multiplier: 0.0
  arena:
    world: 'world_pvp'
    point1: { x: -100, y: 0, z: -100 }
    point2: { x: 100, y: 256, z: 100 }
    multiplier: 0.0

Multiplier 0.0 in a zone means actions pay nothing and grant no XP. 0.5 cuts everything in half. Use it for spawn, arena, admin mines.

Layer two is WorldGuard integration. In generalConfig.yml:

use-worldguard-restricted-areas: true

Then flag the regions:

/region flag spawn jobs-disable allow
/region flag mine_admin jobs-disable allow

The jobs-disable allow flag kills all Jobs logic inside the region. On survival I recommend turning it on at spawn and the trade hub, otherwise players right-click NPCs in the shop and accumulate stray XP from random clicks.

Placed-Block Tracking: the Real Anti-Abuse

The nightmare scenario: a player puts down cobble from a generator, breaks it, places, breaks, and farms millions. Without protection, Jobs Reborn writes blank checks.

Jobs Reborn ships two mechanisms:

use-block-protection-tags: true
block-protection:
  enabled: true
  use-persistent-data: true

This tags every player-placed block via PersistentDataContainer NBT. Breaking a tagged block pays nothing and grants no XP. It works correctly on 1.20+, no issues on 1.21.

The legacy mode that stored a flat list of coordinates in a file is still around. Do not use it. On large worlds it eats RAM for breakfast.

Sanity test:

  1. place stone
  2. break with pickaxe
  3. chat should show no income line

Separately the ChunkBlockLimit in each job file (above) caps payouts per chunk. Even if the protection ever gets bypassed, after N blocks of a given type in a chunk pay drops to zero. Default 100, busy economies push it to 500.

Commands: /jobs join, leave, info, stats

The core set:

/jobs                        # help
/jobs browse                 # available jobs with descriptions
/jobs join <Job>             # join (default cap 3 jobs)
/jobs leave <Job>            # leave (XP archived for N days, see config)
/jobs leaveall               # leave all
/jobs info <Job> [action]    # how much each action pays
/jobs stats [player]         # levels and XP
/jobs top <Job>              # top 10 in that job
/jobs gtop                   # global top by total levels
/jobs editpoints <p> <amount># admin: edit points
/jobs reload                 # reload configs

The per-player job cap lives in generalConfig.yml:

max-jobs: 3
Vipmax-jobs: 5

VIP cap permission: jobs.max.5. Often easier to spread limits per LuckPerms group than handing 5 jobs to everyone.

/jobs reward: Built-in Shop Without BossShop

Since 2022 Jobs Reborn ships its own purchase system on points. It is an alternative to BossShopPro and DeluxeMenus. Good enough for simple cases.

In the job file:

Miner:
  ...
  Rewards:
    diamond_pack:
      Name: '&bDiamond Pack'
      Description:
        - '&7Pack of 8 diamonds'
        - '&7Cost: &e100 points'
      RequiredPoints: 100
      ResetAfterUse: 21600
      Commands:
        - 'give %player% diamond 8'
      Icon:
        Material: DIAMOND
        Glow: true

/jobs reward Miner opens a GUI with this item. RequiredPoints get debited, Commands run from console. ResetAfterUse is the cooldown in seconds.

For categories, dynamic prices, and richer placeholders go with BossShopPro or DeluxeMenus. The classic combo is Jobs Reborn + DeluxeMenus + PAPI, which lets you gate items behind %jobs_level_Miner% checks.

PlaceholderAPI Integration

Install PAPI and pull the expansion:

/papi ecloud download Jobs
/papi reload

Useful placeholders:

  • %jobs_user_jobs% current jobs list
  • %jobs_level_<Job>% level in a specific job, e.g. %jobs_level_Miner%
  • %jobs_exp_<Job>% current XP
  • %jobs_max_exp_<Job>% XP needed for next level
  • %jobs_total_level% sum of all job levels
  • %jobs_archived_<Job>% archived level after prestige

Drop them into TAB, scoreboard, or DecentHolograms:

%player_name% &8| &7Miner Lv&a%jobs_level_Miner% &7Wood Lv&a%jobs_level_Woodcutter%

PAPI also unlocks DeluxeMenus conditions, like "only show this slot if %jobs_level_Hunter% >= 50."

Performance and Tuning

Jobs Reborn is fairly light, but past 200 concurrent players it starts hammering the database on every block break. What to touch:

storage:
  method: 'sqlite'
  database:
    auto-save: 10

For 100+ online switch to MySQL/MariaDB (or PostgreSQL via JDBC):

storage:
  method: 'mysql'
  database:
    host: 'localhost'
    port: 3306
    database: 'jobs'
    username: 'jobsuser'
    password: 'somethingstrong'
    auto-save: 60

auto-save 60 seconds is the trade-off between data loss on crash and I/O. On modern SSD-backed hosts, that is fine.

Also:

save-on-disconnect: true
async-save: true
use-async-payments: true

async-save moves DB writes off the main tick. Without it 250 online can spike 5-10 ms per tick during peak saves.

Common hot spots:

  • chatty BossBar updates, disable BossBar in job files and keep ActionBar only
  • bossbar-show-on-each-action: true sends a packet on every action, hundreds of packets per second on 200 online, turn it off
  • bloated predefined-pings, prune jobs you do not actually use, do not ship 15 files for 6 jobs

Top Admin Mistakes

From years of running these servers, the recurring screw-ups:

  1. Vault sees no economy. Install Vault and EssentialsX before the first Jobs boot. After the fact it usually still works, but warnings stay in the log.
  2. MaxLevel 1000 on a fresh server. Players hit the ceiling in a month and complain. Start at 100-200, raise later.
  3. Placed-block tracking left off. A cobblegen farm prints millions in an hour. Verify before public release.
  4. No restricted-areas at spawn. Players grind XP banging on shop NPCs or breaking decorative blocks.
  5. SQLite at 200+ online. Lags during saves, switch to MySQL.
  6. A jobs.boost.* permission stays glued forever. Strip it after events with /lp user X parent unset boost-event.
  7. Random-forum jars. Often a cracked older build or worse. Stick to SpigotMC.
  8. Logging.LogToFile not disabled. The logs/ folder hits gigabytes per year, rotate or turn it off.

Action Types Cheatsheet

The ones I actually use in production configs:

ActionWhat countsTypical job
Breakbreak a blockMiner, Digger, Woodcutter
Placeplace a blockBuilder
Killkill a mob or playerHunter, Soldier
TameAnimaltame wolf or horseHunter
Smeltsmelt in furnaceSmelter, Miner
Brewbrew a potionBrewer
Enchantenchant an itemEnchanter
Craftcraft a recipeCrafter, Weaponsmith
Fishcatch a fishFisherman
Eateat foodFarmer (bonus)
Repairrepair on anvilWeaponsmith
Milkmilk a cowFarmer
Shearshear a sheepFarmer
Bakebake bread or cakeBaker
Stripstrip a log with axeWoodcutter
Exploreenter a new chunkExplorer

More exist but rarely used. Full list in the Jobs Reborn wiki.

FAQ

Does Jobs Reborn work with EssentialsX Economy?

Yes, that is the default combo. Vault + EssentialsX Economy + Jobs Reborn just works. Make sure Vault loads first (alphabetically it usually does).

Is Jobs Reborn compatible with Folia?

Partially. The base build relies on the Bukkit scheduler and crashes on pure Folia. Community Folia forks exist on GitHub, they trail upstream by a few features. On Paper 1.21 there are no compatibility issues.

A player says they get no XP while mining, what do I check?

In order: 1) restricted-areas, did they wander into a zero zone, 2) ChunkBlockLimit, maybe they already broke 100+ blocks of one type in that chunk, 3) placed-block tracking, maybe they break their own placed blocks, 4) max-jobs, they may not be joined to the job at all. /jobs info Miner break stone shows what should pay.

How many jobs make sense on a survival server?

Six to ten. Less than six is boring, more than ten dilutes the economy and forces players to spread thin. Standard set: Miner, Woodcutter, Farmer, Hunter, Builder, Fisherman, Brewer, Enchanter. Past that is a matter of taste.

How do I add a prestige system on top of Jobs Reborn?

The built-in archived-jobs keeps levels after /jobs leave. Most servers use a separate prestige plugin (PrestigePlus, Pyrofiend Prestige) that resets the level at MaxLevel and grants a permission boost. A manual setup with Citizens NPC plus LuckPerms commands also works.

Does the plugin pay for mob-spawner XP farms?

By default yes, and that wrecks economies fast. In generalConfig.yml enable disable-payment-if-mob-spawner: true and disable-payment-if-riding: true. Without those flags every Hunter on the server hits 200 within a day of someone building a gold farm.

The plugin is old, but it works. The strange thing about Jobs Reborn is that after 11 years and one solo maintainer, it still ships updates more often than several modern alternatives. Install it, configure it once, and it stays out of the way for years.


Protect Your Server from DDoS Attacks

Free protection with 5-minute setup. 1 TB bandwidth included.

Try for Free


Related Articles