ContractRPG
Daily, weekly, special and server-wide contracts. Players hunt, mine, fish, craft and deliver to earn money, XP, points and loot — with a shop, ranks, rarities and a live boss-bar goal.
Everything a mission system needs
Daily / Weekly / Special
Offers lock per period, completed ones are marked, and specials complete only once.
7 mission types
Hunt mobs, mine, fish, craft, deliver items, deliver MMOItems and hunt MythicMobs.
Rich rewards
Money (Vault), XP, contract points and item loot tables with drop chances.
Rarity system
Common / Rare / Legendary — rarer contracts get more likely as players level up.
Point shop
Spend points on items. Stock, cooldown, one-time buys, level unlocks and discounts.
Leaderboards
/contract top by level, points or contracts — with PlaceholderAPI for holograms.
Global contracts
Community goals the whole server fills together, shown on a live boss bar.
Reroll & leveling
Reroll offered contracts for points; a level system with milestone rewards.
In-game editor
Create, edit and delete contracts from a GUI — no config editing needed.
Installation
Get ContractRPG running in a minute — it needs no other plugin to start.
Steps
- Download ContractRPG.jar and drop it into your server's plugins/ folder.
- Restart the server (Java 21 required for 1.21+).
- (Optional) Install any integrations you want: Vault + economy, Citizens, MythicMobs, MythicLib, MMOItems, MMOCore, PlaceholderAPI.
- Edit the config files and run
/contract reload.
Integrations (all optional)
| Plugin | What it unlocks |
|---|---|
| Vault + economy | Money rewards (EssentialsX, CMI, any economy) |
| Citizens | Item-delivery contracts (NPC) |
| MythicMobs | Hunt-MythicMob contracts |
| MythicLib + MMOItems | Deliver-MMOItem contracts |
| MMOCore | Use MMOCore levels/XP instead of the built-in one |
| PlaceholderAPI | Placeholders for scoreboards & holograms |
Mission types
Every contract is one of these objectives. All progress is event-based — you must do it yourself.
| Type | Objective |
|---|---|
⚔️ HUNTING | Kill mobs (cows, zombies, creepers…) |
⛏️ MINING | Break blocks / mine ores |
🎣 FISHING | Reel in fish with a rod (giving fish doesn't count) |
🔨 CRAFTING | Craft items |
📦 DELIVER | Deliver items to a Citizens NPC |
💎 DELIVER_MMOITEM | Deliver MMOItems to an NPC |
🐉 HUNT_MYTHICMOB | Kill MythicMobs |
How to fill “mission-objective”
Names come straight from Minecraft's own enums (materials & entities): always UPPERCASE with underscores. One value per contract.
| Type | mission-objective | Example |
|---|---|---|
⚔️ HUNTING | Entity name | ZOMBIE · COW · CREEPER |
⛏️ MINING | Block / ore material | DIAMOND_ORE · COAL_ORE · OAK_LOG |
🎣 FISHING | Material you reel in | COD · SALMON · PUFFERFISH |
🔨 CRAFTING | Crafted material | TORCH · CHEST · BREAD |
📦 DELIVER | Material handed to the NPC | COBBLESTONE · SAND |
💎 DELIVER_MMOITEM | MMOItem as TYPE:ID | MATERIAL:SILVER_INGOT |
🐉 HUNT_MYTHICMOB | MythicMob internal name | Goblin · Yeti |
/contract create): it gives you a clickable picker for mobs, fish and MythicMobs, or just reads the item in your hand for mining / crafting / deliver.One full example per type (copy-paste into daily.yml / weekly.yml)
# HUNTING — kill entities
# Every entry goes under "contracts:" in daily.yml / weekly.yml / special.yml.
# Only mission-type + mission-objective change per type — the rest is the same.
contracts:
# HUNTING — kill entities
hunt_zombies:
display-name: "<#2E8B57>Kill Zombies"
contract-type: DAILY
mission-type: HUNTING
mission-objective: "ZOMBIE"
mission-requirement: 25
rewards: [ "eco give %player% 100" ]
display-rewards: [ "100 money" ]
experience-reward: 20
contract-points-reward: 7
level-requirement: 1
rarity: common
# MINING — break blocks / ores
mine_iron:
display-name: "<#A52A2A>Mine Iron"
contract-type: DAILY
mission-type: MINING
mission-objective: "IRON_ORE"
mission-requirement: 32
rewards: [ "eco give %player% 150" ]
display-rewards: [ "150 money" ]
experience-reward: 35
contract-points-reward: 11
level-requirement: 6
rarity: common
# FISHING — reel in fish with a rod
fish_salmon:
display-name: "<#FA8072>Fish Salmon"
contract-type: DAILY
mission-type: FISHING
mission-objective: "SALMON"
mission-requirement: 10
rewards: [ "eco give %player% 180" ]
display-rewards: [ "180 money" ]
experience-reward: 40
contract-points-reward: 13
level-requirement: 8
rarity: rare
# CRAFTING — craft items
craft_torch:
display-name: "<#FFD700>Craft Torches"
contract-type: DAILY
mission-type: CRAFTING
mission-objective: "TORCH"
mission-requirement: 64
rewards: [ "eco give %player% 70" ]
display-rewards: [ "70 money" ]
experience-reward: 15
contract-points-reward: 4
level-requirement: 1
rarity: common
# DELIVER — hand items to a Citizens NPC (set delivery-npc-id in config.yml)
deliver_stone:
display-name: "<#808080>Deliver Cobblestone"
contract-type: DAILY
mission-type: DELIVER
mission-objective: "COBBLESTONE"
mission-requirement: 128
rewards: [ "eco give %player% 110" ]
display-rewards: [ "110 money" ]
experience-reward: 25
contract-points-reward: 7
level-requirement: 4
rarity: common
# DELIVER_MMOITEM — hand an MMOItem to the NPC (format TYPE:ID)
deliver_silver:
display-name: "<#C0C0C0>Deliver Silver Ingots"
contract-type: DAILY
mission-type: DELIVER_MMOITEM
mission-objective: "MATERIAL:SILVER_INGOT"
mission-requirement: 16
rewards: [ "eco give %player% 350" ]
display-rewards: [ "350 money" ]
experience-reward: 80
contract-points-reward: 30
level-requirement: 12
rarity: rare
# HUNT_MYTHICMOB — kill a MythicMob by its internal name
hunt_goblin:
display-name: "<#228B22>Kill Goblins"
contract-type: DAILY
mission-type: HUNT_MYTHICMOB
mission-objective: "Goblin"
mission-requirement: 15
rewards: [ "eco give %player% 300" ]
display-rewards: [ "300 money" ]
experience-reward: 70
contract-points-reward: 25
level-requirement: 10
rarity: rare
Rewards & rarity
Contracts pay money, XP, contract points and optional item loot (with drop chances). Each contract has a rarity (Common / Rare / Legendary) that changes its color, glow and how often it appears — and higher-level players see more rare/legendary contracts.
The default files ship 24 daily, 12 weekly and 20+ special contracts, weighted by tier: many Common, fewer Rare, only a handful of Legendary — so higher tiers are rarer to roll.
Commands
Base command /contract — aliases /contracts, /crpg.
Players
| Command | What it does |
|---|---|
/contract | Open the contracts menu |
/contract shop | Open the point shop |
/contract top [level|points|contracts] | Leaderboard |
/contract global | View the active global contract & rewards |
/contract help | Command list |
/contract version | Plugin version & author |
Admin
| Command | What it does |
|---|---|
/contract create | Create a contract (GUI) |
/contract edit | Edit / delete contracts (GUI, by category) |
/contract reload | Reload config, languages & shop |
/contract reset | Force a mission reset for online players |
/contract resetplayer [player] | Reset a player's data |
/contract points [give|take|set] [player] [n] | Manage contract points |
/contract level [set|add] [player] [n] | Change a player's level |
/contract shopedit | In-game shop editor |
/contract global [next|reset] | Manage the global contract |
/contract placeholder | List placeholders |
Permissions
Grant these with LuckPerms or any permissions plugin.
| Permission | What it does | Default |
|---|---|---|
| contractrpg.use | Base command & menu | true |
| contractrpg.shop.open | Open the shop | true |
| contractrpg.reload | Reload | op |
| contractrpg.admin.reset | Mission reset | op |
| contractrpg.admin.shopedit | Shop editor | op |
| contractrpg.command.placeholder | Placeholder list | op |
| contractrpg.admin | Admin: create/edit, points, level, resetplayer | op |
Placeholders
Requires PlaceholderAPI. Great for scoreboards and DecentHolograms leaderboards.
%contractrpg_level%
%contractrpg_exp% %contractrpg_exp_required% %contractrpg_exp_bar%
%contractrpg_active_contracts_count%
%contractrpg_active_<1-N>_name%
%contractrpg_active_<1-N>_objective%
%contractrpg_active_<1-N>_progress%
%contractrpg_active_<1-N>_required%
%contractrpg_active_<1-N>_target%
%contractrpg_top_<level|points|completed>_<1-N>_name%
%contractrpg_top_<level|points|completed>_<1-N>_value%
Configuration
Clean, commented files — most of it can be done in-game with the mission editor.
| File | What it holds |
|---|---|
config.yml | Leveling, storage, reroll, rarities, leaderboard, global contracts |
contracts/daily.yml · weekly.yml · special.yml | Your contracts |
global.yml | Server-wide global contracts |
shop.yml | Managed in-game with /contract shopedit |
lang/en·es·fr·zh.yml | Every message, fully editable |
Example contract (with rarity + loot)
daily_hunt_cows:
display-name: "<#CD7F32>Daily: Fresh Meat"
contract-type: DAILY
mission-type: HUNTING
mission-objective: "COW"
mission-requirement: 15
rewards: [ "eco give %player% 70" ]
experience-reward: 15
contract-points-reward: 5
level-requirement: 1
rarity: rare
item-rewards:
'1': { material: DIAMOND, amount: 2, chance: 100 }
'2': { material: EMERALD, amount: 1, chance: 50 }
Custom reward commands
rewards: is a list of console commands run when the contract is completed — use %player% for the player. display-rewards: is the human-readable text players see in the menu and in /contract global. Money is just the eco give command; you can add any command (ranks, kits, crates…).
rewards:
- "eco give %player% 500"
- "lp user %player% addgroup vip"
- "crates give %player% legendary 1"
display-rewards:
- "500 money"
- "VIP Rank"
- "1x Legendary Crate"
command | display text), right-click to clear them all.Player reviews
What server owners think of ContractRPG.
No reviews yet — be the first!