JP Plugins
All plugins

JPJobs

Configurable jobs plugin for Paper servers.

Economy plugin, version 1.0.0

Downloads open soon.

Features

  • Jobs menu: join jobs, earn money and XP for work
  • Levels with growing XP requirements and pay
  • Job limits per permission
  • No pay for blocks players placed themselves or for mobs from spawners
  • Jobs are set up in jobs.yml

Requirements

  • Paper 26.1 or newer (Java 25)
  • Optional:
    • Vault: money (any Vault economy)
    • PlaceholderAPI: placeholders in texts, and this plugin's own placeholders

Installation

  1. Put JPJobs-<version>.jar in your server's plugins folder.
  2. Restart the server. plugins/JPJobs/ is created with the config and messages.
  3. Change what you want in the files, then reload or restart.

Type /jp as an operator to see every JP plugin you have installed, its version and which optional plugins it found.

Commands

CommandDescriptionPermission
/jobs [join|leave|stats|top|info|admin|reload]
Aliases: /job
Open the jobs menu and manage your jobs.jpjobs.use

Permissions

PermissionDefaultDescription
jpjobs.useeveryoneUse the jobs plugin.
jpjobs.joineveryoneJoin jobs.
jpjobs.leaveeveryoneLeave jobs.
jpjobs.statseveryoneView job stats.
jpjobs.limit.vipnobodyCan have the number of jobs set for it in config.yml (job-limit-permissions).
jpjobs.limit.mvpnobodyCan have the number of jobs set for it in config.yml (job-limit-permissions).
jpjobs.adminoperatorsReload the jobs plugin.

Placeholders

Needs PlaceholderAPI.

PlaceholderShows
%jpjobs_active_jobs%the player's jobs, comma separated
%jpjobs_primary_job%the player's first job, or "None"
%jpjobs_<job>_level%level in a job
%jpjobs_<job>_xp%XP in the current level
%jpjobs_<job>_required_xp%XP needed for the next level
%jpjobs_<job>_actions%work done in a job
%jpjobs_<job>_earned%money earned in a job
%jpjobs_<job>_status%active or inactive

Configuration

All files are in plugins/JPJobs/. Files: config.yml, jobs.yml, messages.yml.

When you update the plugin, new options are added to your config.yml by themselves, with their comments. Your own settings stay as they are, and the old file is kept as config.old-v<number>.yml.

Languages: English, Spanish, Portuguese, French and German. Set language: in config.yml (en, es, pt, fr or de).

Default config.yml
# Used to add new options to this file after an update. Don't change it.
config-version: 1

# ╔══════════════════════════════════════════════════════════════════╗
# ║                      JPJobs  ·  config.yml                       ║
# ╚══════════════════════════════════════════════════════════════════╝
# Players join jobs (/jobs) and earn money and XP for actions such as mining.
# The jobs themselves are in jobs.yml, texts in messages.yml.
# Apply changes with /jobs reload.
#
# Colours (everywhere): &a codes, &#RRGGBB hex and MiniMessage (<gradient:#a:#b>...).
# Paying money needs Vault and an economy plugin.

# Language of the messages: en (messages.yml), es, pt, fr or de (lang/<code>.yml).
# Your own language: copy a file in the lang folder to lang/<code>.yml, translate it
# and set its code here (for example it for lang/it.yml).
language: en

# Replace messages.yml with the new design when the plugin is updated.
# Your old file is kept as messages.old-vX.yml. false = never touch it.
auto-update-style: true

storage:
  # SQLITE = a local file (no setup). MYSQL = a database server (shared between servers).
  type: SQLITE
  # Prefix for the table names, handy when several plugins share one database.
  table-prefix: jpjobs_
  # How often player progress is written to the database.
  save-interval-seconds: 30
  # Only used when type is MYSQL.
  mysql:
    host: localhost
    port: 3306
    database: jpjobs
    username: root
    password: change-me
    parameters: useSSL=false&characterEncoding=utf8&serverTimezone=UTC
  # Database connection pool. The defaults are fine for almost every server.
  pool:
    maximum-pool-size: 10
    minimum-idle: 2
    maximum-lifetime-ms: 1800000
    connection-timeout-ms: 10000

jobs:
  # How many jobs a player can have at once.
  max-active-jobs: 3
  # Players with one of these permissions can have more jobs (the highest one counts).
  # Give them to ranks in LuckPerms, e.g. /lp group vip permission set jpjobs.limit.vip
  # (jpjobs.max.<number> also works, up to 20).
  job-limit-permissions:
    jpjobs.limit.vip: 4
    jpjobs.limit.mvp: 5
  # XP needed for the next level = base × multiplier^(level - 1).
  # With 100 and 1.15: level 1→2 needs 100 XP, 10→11 needs 352, 50→51 needs 94,231.
  xp-formula:
    base: 100.0
    multiplier: 1.15
  payout:
    # false = jobs give XP only, no money.
    enabled: true
    # Extra income for every level above 1 (1.0 = +1% per level).
    level-bonus-percent: 1.0
    # Permission -> income/XP multiplier. The highest one the player has is used.
    permission-multipliers:
      jpjobs.boost.vip: 1.25
      jpjobs.boost.mvp: 1.5
  # With progress-display CHAT: send the progress message every this many actions.
  progress-message-interval-actions: 10
  # Where progress is shown after each paid action: ACTIONBAR, CHAT or NONE
  progress-display: ACTIONBAR
  # Sound on level up (format SOUND or SOUND:volume:pitch).
  level-up-sound: ENTITY_PLAYER_LEVELUP

anti-exploit:
  # Blocks placed by players pay nothing when broken again.
  ignore-placed-blocks: true
  # Mobs from spawners and spawn eggs pay nothing.
  ignore-spawner-mobs: true

gui:
  title: '&8ᴊᴏʙꜱ'
  # Corner colour of the frame, and whether to fill every empty slot.
  accent-material: LIME_STAINED_GLASS_PANE
  fill-empty-slots: false
  # Menu height, 3 to 6 rows (9 slots per row). 5 rows = 45 slots.
  rows: 5
  # Glass used for the menu frame.
  filler-material: BLACK_STAINED_GLASS_PANE
  # Slot numbers start at 0 (top-left) and go left to right: row 2 starts at 9, row 3 at 18...
  # Where job icons go, in the order of jobs.yml.
  job-slots: [20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 11, 12, 13, 14, 15]
  # Player head with your jobs and levels.
  profile-slot: 4
  help-slot: 40
  refresh-slot: 44

features:
  # Register the %jpjobs_...% placeholders when PlaceholderAPI is installed.
  placeholderapi: true
  # /jobs opens the menu (off = shows text stats instead)
  menu: true
  # /jobs top <job>
  leaderboard: true
  # /jobs info <job>
  info-command: true
  # Big title on level up
  level-up-title: true
  # Tell everyone online when someone levels up
  level-up-broadcast: false
  # Menu click and level-up sounds.
  sounds: true

format:
  # How money is shown (Java DecimalFormat). Examples: '$#,##0.00', '#,##0 coins'.
  currency-pattern: '$#,##0.00'

Support

Guides and the docs of every JP plugin are on the JP Plugins website. Questions, bugs or ideas? Join the JP Plugins Discord.

License

JPJobs is free to use on any server, including servers that make money, but it is not open source. Don't reupload, sell or share modified copies of it. The full terms are in LICENSE.txt, which is also inside the jar.