Server admin quick guide
This guide is the starting point for installing and configuring McProgression on a Minecraft server running Paper.
Availability
McProgression is currently a private plugin. Public downloads are not available.
Quick setup
- Back up the server and install the McProgression JAR in
plugins/. Install LuckPerms if you want staff commands. CoreProtect and WorldGuard are optional integrations. - Start Paper once to generate
plugins/McProgression/, then stop the server before editing YAML. - Set
branding.display-name,language, andtime-zoneinconfig.yml. Chooseprogression-presets.default(open,progressive, orlong-form) before players earn progress. Keep SQLite for one server; plan any backend choice before players earn progress, and see storage before using SQL. - Review
skills.ymlandgeneral-xp.yml. Edititems.ymlorworld-access.ymlonly if you want to add restrictions. - With LuckPerms, grant a trusted admin
mcprogression.admin.audit; OP status alone does not grant McProgression staff access. Start Paper, check the console for warnings, run/mcpadmin audit, then test player and staff flows before opening the server.
Restart Paper after changing plugin configuration; McProgression has no reload command. Avoid Bukkit's /reload.
Minimum staff permissions
Players need no McProgression permission. Admin, reset, import, and bypass permissions default to false, including for operators. With LuckPerms, give a staff group only the actions it needs. For example, this grants an audit-only role:
lp creategroup progression-auditor
lp group progression-auditor permission set mcprogression.admin.audit true
lp user PlayerName parent add progression-auditor
Add mcprogression.admin.alerts only if the group should receive audit alerts. Preset review/apply, XP reports, reset, reset-sync, and CoreProtect preview/apply each have separate permissions. See the full permission matrix and LuckPerms examples before granting them; avoid wildcard grants.
Set branding.display-name in config.yml to customize the name shown in built-in player-facing messages and menus. The same value is used for Discord webhook usernames and default text; set integrations.discord-webhooks.username to a non-empty value to override it. This changes display text only; the JAR, data folder, commands, permissions, and PlaceholderAPI identifiers keep their technical names.
Set extra public, skill, or staff command names in config.yml under commands.<command-name>.aliases. For example, commands.mcprogression.aliases: [levels] adds /levels; the existing commands remain available. See the command alias reference for all three command roots and collision behavior. Restart Paper after editing.
Which file should I edit?
| File | Use it for | A safe first change |
|---|---|---|
config.yml |
Display name, language, timezone, command aliases, storage, Global Rank formula/tiers, integrations, announcements, HUD, anti-abuse, compatibility warnings | Set branding.display-name if you want a shorter in-game label; check time-zone matches the calendar your players expect. |
skills.yml |
Skill list, levels, XP curves, activity rates, allowed materials/entities, skill rank subtiers | Adjust one skill's activity XP or disable one activity. |
general-xp.yml |
General XP caps, advancement rewards, daily join reward/streak, active-time XP | Tune the daily join XP and daily cap together. |
items.yml |
Skill requirements for crafting, placing, using, and other item actions | Add a rule for one material/action and keep the fallback action intentional. Configured requirements also appear in item hover lore for all players. |
world-access.yml |
Skill gates for Nether/End access and optional WorldGuard regions | Change a gate's skill/level or leave WorldGuard regions disabled. |
scopes.yml |
Leaderboard world/group views and optional Paper player-list ordering | Disable or rename a leaderboard; keep world names exact. |
lang/<language>.yml |
Player-facing translated messages, command text, and built-in announcement bodies | Choose a language in config.yml; use the matching language file for wording. |
Most servers only need to start with config.yml, skills.yml, and general-xp.yml. Edit items.yml or world-access.yml only when you want to restrict actions or access.
How config updates work
McProgression preserves an existing server's progression choices during upgrades. It copies a missing file from the plugin jar, but it does not replace an existing configuration with the new defaults.
- New default settings are merged into existing
config.yml,scopes.yml, andgeneral-xp.ymlwhile preserving values already set by the server. - Existing
skills.yml,items.yml, andworld-access.ymlare intentionally left as-is. Compare these files with the release's shipped examples when a new option is announced, and add it manually if you want it. - Upgrade files are not automatically cleaned: removed or unknown keys may remain in older files, but settings that are no longer supported have no effect.
- Applying a starter preset intentionally replaces
skills.yml,items.yml, andworld-access.yml. Preview it first; application makes a backup and requires a restart. - Never delete
progression.db,progress.yml, or your configured SQL tables as a way to reset a config. Those contain player progression data.
Preview starter profiles safely
The starter profiles are examples with different unlock policies. They do not change player XP formulas or account data when previewed.
/mcpadmin preset list
/mcpadmin preset preview progressive
If you want to apply one, back up the plugin folder and then run:
/mcpadmin preset apply progressive
Applying a preset replaces its three gameplay files, writes a timestamped backup, and asks for a restart. Existing player progress remains in the selected storage backend. Review the preview's skill and access changes before applying.
Common changes
Change the daily boundary for XP and login rewards
Set the IANA timezone in the top-level config.yml setting time-zone, for example Europe/Brussels or UTC. This controls daily skill XP caps, General XP caps, join rewards, and login streak days. Use a timezone name rather than a fixed UTC offset so daylight-saving changes are handled.
Discord event timestamps have their own integrations.discord-webhooks.timezone setting. Changing it does not change when XP caps or login streaks reset.
Tune skill XP
In skills.yml, find a skill ID, then its activity under activities. Set the activity's xp, enabled, and, where supported, its materials, entities, or xp-by-material values. A per-material value overrides the activity's general xp; materials not listed use the general value. Setting a skill/activity to disabled stops its awards.
The xp object under a skill controls its level curve, not the amount granted by an activity. linear, quadratic, and explicit curves are described at the top of skills.yml. Treat the shipped rates as a starting balance, then verify with /mcprogression help <skill> and playtesting.
Add an item requirement
Add the exact material and action in items.yml. This example requires Mining 10 to craft a diamond pickaxe; other actions continue to use the configured fallback:
rules:
DIAMOND_PICKAXE:
actions:
CRAFT:
all-of:
- skill: mining
level: 10
Use all-of when every listed skill is required. Use any-of when meeting any one listed skill requirement should be enough. Check the runtime material-policy-runtime.csv after startup or /mcpadmin audit to review how the rules resolve on the current server.
Change Global Rank thresholds
In config.yml, edit global-rank.tiers. Each key (such as apprentice) is a stable tier ID; name is the displayed name and minimum-score is the required combined score. The score combines enabled skill levels and General XP converted by general-xp-per-score-point. Set that conversion to 0 if General XP should not affect Global Rank. Reward lists are optional and empty by default; see progression rewards.
Safe-editing checklist
- Keep a dated copy of the plugin configuration and database before changing progression balance or storage.
- Preserve YAML indentation and quote text containing
:,#,{}, or special formatting. - Keep skill IDs, tier IDs, and reward IDs stable after players have earned progress or rewards.
- Use
/mcpadmin auditand resolve unexpected findings before opening the server to players. - Do not enable a CoreProtect import until you have reviewed its preview and read the moderator progression guide.
- Do not paste real database passwords or Discord webhook URLs into public issue trackers or shared config examples.