Custom Skills
Create your own skills and configure max levels
Overview
Custom Skills let you define entirely new skills beyond the 20 built-in ones. Each custom skill has a unique ID, display name, category, and trigger types - all configurable through the admin UI or mods/mmoskilltree/custom-skills.json.
You can also disable built-in skills you don't want on your server, and set per-skill max levels to control progression.
Custom skills are a config feature - they cannot be shipped in a content pack (skills load too early). Packs can add the content that hangs off a skill - quests, achievements, XP maps - but not the skill itself.
Admin UI
The easiest way to manage custom skills is through the admin dashboard. Open /mmoadmin and click Custom Skills.
The page has three sections:
- Max Level Management - Set a default max level for all skills and override it per-skill. Skills with overrides are highlighted orange
- Built-in Skills - View all 20 built-in skills with their category and trigger types. Toggle any skill on/off
- Custom Skills - Create, edit, and delete custom skills with a visual form
Creating Custom Skills
Each custom skill has these fields:
| Field | Required | Description |
|---|---|---|
| ID | Yes | Unique identifier (auto-uppercased, e.g., HERBALISM). Cannot match a built-in skill name |
| Display Name | Yes | Name shown to players in the UI (e.g., "Herbalism") |
| Category | No | One of: Gathering, Combat, Crafting, Misc. Defaults to Misc |
| Description | No | Admin-facing description for reference |
| Trigger Types | No | Which events award XP to this skill (see below) |
| Icon Path | No | Custom item ID used as the skill's icon. Falls back to a default icon when unset |
| Description Key | No | Explicit localization key for the skill description. Falls back to the skill.<id>.desc convention when unset |
| Requires Features | No | Feature-gate list (same shape as quest/achievement requiresFeatures) that must all be enabled for the skill to be available |
Trigger Types
Trigger types determine which in-game events award XP to the skill. A custom skill can have multiple triggers.
| Trigger | Event | Example Use |
|---|---|---|
| Break Block | Breaking blocks | Mining, woodcutting, gathering |
| Place Block | Placing blocks | Building, construction |
| Melee Damage | Dealing physical damage | Custom weapon skills |
| Take Damage | Receiving damage | Defense, endurance |
| Fall Damage | Surviving falls | Acrobatics, parkour |
| Craft Item | Crafting at stations | Specialty crafting |
| Kill Entity | Killing mobs | Hunting, bounty skills |
| Tame Entity | Taming creatures | Beast mastery |
| Catch Fish | Catching/killing fish | Fishing variants |
| Movement: Sprint | Sprinting | Endurance, running |
| Movement: Swim | Swimming | Aquatic skills |
| Movement: Safe Landing | Landing safely after a fall | Acrobatics |
| Movement: Dangerous Fall Survived | Surviving a fall that would otherwise deal damage | Acrobatics, luck-based skills |
Multiple triggers allow a single skill to level from different actions. For example, a "Survival" skill could trigger on Break Block, Kill Entity, and Take Damage.
XP Configuration
Custom skills have no default XP values - you must configure which blocks, items, or mobs award XP. Use the XP Maps editor in the admin dashboard or edit xp-maps.json directly.
// xp-maps.json - XP patterns for a custom "HERBALISM" skill
{
"HERBALISM": {
"Plant_": 15,
"Flower_": 10,
"Herb_Rare": 50,
"Mushroom_": 20
}
}Pattern matching works the same as built-in skills: prefix patterns like Plant_ match any block starting with that prefix. Use -1 to explicitly disable a pattern.
Full Feature Integration
Custom skills integrate with all existing systems:
- Skill Trees - Add reward tiers through the Skill Tree editor. Custom skills support a "+" button to add new tiers since they have no built-in defaults. Combat rewards (Damage, Crit, Lifesteal, Parry) can target your custom skill ID - just enter the skill ID in the Target field
- Item Rewards - Configure command rewards at milestones, just like built-in skills
- XP Maps - Appears in the XP Maps admin editor alongside built-in skills
- Leaderboards - Custom skills appear in leaderboard rankings and category totals
- XP Tokens - Not automatically generated; tokens are only created for built-in implemented skills
- Item Requirements - Reference custom skills in level requirements (e.g.,
HERBALISM:5,MINING:10) - Permissions - When skill permissions are enabled, custom skills follow the same permission pattern
Disabling Built-in Skills
Any of the 20 built-in skills can be disabled from the Custom Skills admin page. Disabled skills:
- Are hidden from all player-facing UI pages
- Stop awarding XP from any source
- Are excluded from leaderboards and total level calculations
- Are hidden from admin editors (XP Maps, Skill Tree, etc.)
- Player XP data is preserved - re-enabling a skill restores all progress
Per-Skill Max Levels
Control how far players can level each skill. The default max level is 200 for all skills. Override it per-skill to create different progression caps.
- Once a skill reaches its max level, no further XP is awarded
- Applies to both built-in and custom skills
- Configurable via the admin UI or
custom-skills.json - Need to cap individual players or groups below the configured max? See Level Cap Permissions - permission nodes can lower the cap per player and per skill.
Config File Reference
Custom skill definitions are stored in mods/mmoskilltree/custom-skills.json using the override-based config system.
{
"schemaVersion": 1,
"skills": [
{
"id": "HERBALISM",
"displayName": "Herbalism",
"category": "GATHERING",
"description": "Gather and collect herbs",
"descriptionKey": "skill.herbalism.desc",
"iconPath": "Ingredient_Herb_Rare",
"triggerTypes": ["BREAK_BLOCK"],
"requiresFeatures": []
},
{
"id": "BEAST_HUNTING",
"displayName": "Beast Hunting",
"category": "COMBAT",
"description": "Track and hunt dangerous creatures",
"triggerTypes": ["KILL_ENTITY", "DEAL_DAMAGE_PHYSICAL"]
}
],
"disabledBuiltinSkills": ["TAMING"],
"defaultMaxLevel": 200,
"maxLevels": {
"HERBALISM": 150,
"MINING": 300
},
"builtinRequiresFeatures": {
"TAMING": ["taming"]
}
}Config Fields
| Field | Type | Description |
|---|---|---|
schemaVersion | int | Must be 1 |
skills | array | Custom skill definitions (see fields table above) |
disabledBuiltinSkills | array | Built-in skill IDs to disable (e.g., ["TAMING", "FISHING"]) |
defaultMaxLevel | int | Default max level for all skills (default: 200) |
maxLevels | object | Per-skill max level overrides (e.g., {"MINING": 300}) |
builtinRequiresFeatures | object | Per-built-in-skill feature-gate overrides, keyed by skill ID (e.g., {"TAMING": ["taming"]}). Lets an owner re-gate a built-in skill behind a different or additional feature flag |
Trigger Type Names for Config
When editing the JSON directly, use these trigger type names:
BREAK_BLOCK, PLACE_BLOCK, DEAL_DAMAGE_PHYSICAL,
TAKE_DAMAGE, FALL_DAMAGE, CRAFT_ITEM,
KILL_ENTITY, TAME_ENTITY, CATCH_FISH,
MOVEMENT_SPRINT, MOVEMENT_SWIM,
MOVEMENT_SAFE_LANDING, MOVEMENT_DANGEROUS_FALL_SURVIVEDExample: Adding a Custom Skill
- Open
/mmoadmin→ Custom Skills - Enter an ID (e.g.,
HERBALISM) and display name - Select a category (Gathering) and trigger types (Break Block)
- Click Save
- Go to Edit XP Maps and select your new skill
- Add XP patterns for the blocks that should award XP
- Optionally add skill tree tiers via Edit Skill Tree
- Optionally add item rewards via Edit Rewards
Changes are saved immediately to config files and take effect without a server restart.