Getting started
Install ModularJobs, provision MySQL 8, and configure your first jobs and tasks.
The idea
ModularJobs is a Paper plugin that turns server work into named jobs with levels and rewards. This page is the first working install, not a command reference.
basics
You need Paper 26.2, Java 25 on the build side (Java 21+ is enough to run), and a MySQL 8 database the plugin does not create. Drop the jar in, start once so config files appear, apply the schema script, then restart.
Everyday
After that, operators configure jobs, create task payables through the secure
editor, let players join jobs, and inspect /jobs stats. The MySQL task table
starts empty.
Advanced
Skill trees, boost sources, anti-exploit, and the secure editor come after the first jobs work. Follow the other operator guides when you need them.
Requirements
- Minecraft 1.21.x on Paper 26.2 (or a fork)
- MySQL 8 (no other database is supported)
- Java 21+ runtime (build toolchain is Java 25)
1. Install the plugin
-
Drop
modularjobs-paper-26.8.11.1.jarintoplugins/. -
Start the server once to generate the configuration under
plugins/ModularJobs/:config.yml— payment, economy, editor, and progression settingsdatabase.yml— MySQL connection sectionsjobs.yml— job catalog (display names, curves, perks)boost_sources_default.json— boost source definitionsexploit-config.yml— anti-farm protectionsupgrade_trees/*.json— skill trees
Starter content
The bundled YAML and JSON files are generic starter content. Job task definitions are not bundled; create them through the editor after MySQL is configured.
2. Provision the database
The plugin never runs DDL. Apply the schema out of band, before startup:
export DATABASE_URL=mysql://user:pass@host:3306/modularjobs
./scripts/apply-mysql-schema.sh
# or:
mysql "$DATABASE_URL" < paper/src/main/resources/sql/mysql.sqlRequired tables: job_progression, archive_job_progression,
payable_records, job_tasks, job_task_payables, time_boost_identity,
time_boosts, player_upgrades, editor_sessions.
Missing tables → the plugin fails at startup with a message pointing at the apply script.
3. Configure database connections
database.yml has four pool sections; sections with the same jdbc-url +
username share one Hikari pool:
payable:
type: mysql
jdbc-url: jdbc:mysql://host:3306/modularjobs
username: modularjobs
password: secret
maximum-pool-size: 10
timed-boost:
type: mysql
jdbc-url: jdbc:mysql://host:3306/modularjobs
username: modularjobs
password: secret
progression:
type: mysql
jdbc-url: jdbc:mysql://host:3306/modularjobs
username: modularjobs
password: secret
upgrades:
type: mysql
jdbc-url: jdbc:mysql://host:3306/modularjobs
username: modularjobs
password: secret4. Review config
- Economy — optional; see the economy guide.
- Editor — disabled until you supply a REST API and web URL; see the editor guide.
- Progression limits —
max-jobs, auto-join, and world join restriction. - Level-up commands — console commands run on level-up with
{player},{level},{job}placeholders.
5. Install optional integrations
Only what the server uses:
| Integration | Purpose |
|---|---|
| PlaceholderAPI | %modular_*% placeholders |
| Mint | Economy deposits for money payables |
| Azoth | World-interaction gates (block break, fishing, harvesting) |
| mcMMO | mcMMO ability boost source |
| Bolt / LWC / Choco | Protection / lock integrations |
6. Verify
# player side
/jobs list
/jobs join miner
/jobs stats
# admin side (op)
/jobs level set <player> miner 10
/jobs boost apply @global modularjobs:mining_boost 1dRestart after configuration changes — there is no full hot-reload story today.