Configuration reference
Current ModularJobs operator configuration and distribution defaults.
config.yml
# Payment eligibility
pay-in-creative: true
pay-while-riding: false
disabled-worlds: [] # world names (case-insensitive) where job actions never pay
kill-contribution-cutoff: 0.5 # fraction of total damage a contributor must deal for kill pay
furnace-max-distance: 25.0 # max distance (blocks) from furnace for smelt/bake attribution
# Economy (Mint is optional)
economy:
required: false
missing-provider: blackhole # blackhole | fail
# Auxiliary profession services (core ProfessionService is always registered)
profession-apis:
register-bukkit-services: false
# Command output colors
colors:
primary: "#FFD700"
secondary: "#FFFF00"
accent: "#00FFFF"
tertiary: "#FF00FF"
neutral: "#808080"
error: "#FF0000"
# Player info-display preferences
preferences:
entries-per-page: 10 # players can override with /jobs info preference entries <count>
default-gui-mode: true # true = GUI dialog, false = chat output
# Secure web editor (disabled until external services are configured)
editor:
enabled: false
session-api-url: ""
web-editor-url: ""
session-create-secret: ""
session-ttl-minutes: 1440
# Console commands run when a player levels up
# Placeholders: {player}, {level}, {job}
level-up-commands: []
# example:
# - command: "say {player} reached level {level} in {job}"
# min-level: 10
# Join eligibility (max-jobs: 0 = unlimited)
progression-limits:
max-jobs: 0
auto-join-jobs: []
world-join-restriction: true # reject joining while in a payout disabled-worldEconomy
Mint is optional. blackhole is the safe default when no provider is
available; positive economy payables are accepted and discarded. Use fail
when currency rewards are mandatory. Legacy required: true maps to fail
when no explicit policy is present.
Editor
The editor requires an external REST API and web application. Configure both URLs and the create secret explicitly before enabling it. See the editor guide.
Level-up commands
Each entry runs as console on level-up when min-level ≤ new level.
{player}, {level}, {job} placeholders are replaced.
Progression limits
max-jobs: 0= unlimited; otherwise the maximum simultaneous jobs. Checked by/jobs joinand the browse GUI.auto-join-jobs: joined on login if not already in them.world-join-restriction: reject joining while in a payout disabled-world.
database.yml
MySQL only, four pool sections (payable, timed-boost, progression,
upgrades). Identical jdbc-url + username sections share one Hikari pool.
See the database guide.
payable:
type: mysql
jdbc-url: jdbc:mysql://127.0.0.1:3306/modularjobs
username: modularjobs
password: change-me
maximum-pool-size: 10Starter content files
| File | Content |
|---|---|
jobs.yml | Flat job-node catalog. Roots own display, max-level, leveling-curve, payable-curves, and perks; children set parent and may add node presentation/perks |
boost_sources_default.json | 19 starter boost sources with rule priority / conditions / boost |
upgrade_trees/*.json | Skill-tree graphs (see the skill trees guide) |
exploit-config.yml | Anti-farm protections (see the anti-exploit guide) |
Job trees and inheritance
Each root section defines one complete Job tree. A child section stays
top-level, sets parent: <node-key>, and must not redeclare max-level,
leveling-curve, or payable-curves. Those rules and player XP belong to the
root tree. Direct tasks inherit down the parent chain; the nearest child task
with the same action/context key replaces the complete ancestor task.
miner:
display-name: "<gray>Miner"
max-level: 100
leveling-curve: level * level * 100
payable-curves:
experience: base + (base * (level - 1) * 0.01)
prospector:
parent: miner
display-name: "<gold>Prospector"
description: "Specializes in valuable ores."Task data ownership
No task seed file is bundled. An empty MySQL task table remains empty until the editor / repository path or an explicit reviewed SQL operation writes task definitions.