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.
A content pack can ship a whole skill too, one file per skill, so a pack author is not limited to the content that hangs off a skill. See Skills from a content pack below; the file on this page stays the server owner's last word over anything a pack adds.
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 | Type | Default | Description |
|---|---|---|---|
ID* | - | - | Unique identifier (auto-uppercased, e.g., HERBALISM). Cannot match a built-in skill name |
Display Name* | - | - | Name shown to players in the UI (e.g., "Herbalism") |
Category | - | optional | One of: Gathering, Combat, Crafting, Misc. Defaults to Misc |
Description | - | optional | Admin-facing description for reference |
Trigger Types | - | optional | Which events award XP to this skill (see below) |
Icon Path | - | optional | Custom item ID used as the skill's icon. Falls back to a default icon when unset |
Description Key | - | optional | Explicit localization key for the skill description. Falls back to the skill.<id>.desc convention when unset |
Requires Features | - | optional | 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.
A content pack shipping a skill (see Skills from a content pack below) ships that skill's own XP patterns too, as Server/MMOSkillTree/XpMaps/<Skill>.json beside its CustomSkills file - a pack-shipped skill with no XP map is defined but inert. mods/mmoskilltree/xp-maps.json stays the owner override that wins last.
// 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
Skills from a content pack Since 1.6.0
A content pack adds a whole skill by shipping one file per skill under Server/MMOSkillTree/CustomSkills/. The filename, uppercased, is the skill id (Smithing.json becomes SMITHING), and the skill folds into the roster the same way a built-in does: it shows on the skills page, earns XP, ranks on leaderboards, and can carry tree tiers and rewards.
// Server/MMOSkillTree/CustomSkills/Smithing.json (filename -> SMITHING)
{
"Display": {
"Name": "Smithing",
"Description": "Forge weapons and armor to gain experience",
"DescriptionKey": null,
"Icon": "Icons/ItemsGenerated/Ingredient_Bar_Iron.png"
},
"Placement": { "Category": "CRAFTING", "InsertAfter": "ENCHANTING" },
"Triggers": ["CRAFT_ITEM"],
"RequiresFeatures": ["stations"],
"MaxLevel": null
}- Display -
NameandDescriptionare last-resort fallbacks only. The translated name comes from the pack's ownskill.<id>language key (and the description fromskill.<id>.desc, or an explicitDescriptionKey), so a pack skill can be properly translated per language by shipping its own additive language file.Iconis a texture path. - Placement - which tab the skill sits in (Gathering, Combat, Crafting, Misc) and which skill it slots in after within that tab.
- Triggers - the events that award XP, using the same names as the config file below. A skill with no triggers is still a real, listed skill; it just earns its XP from a companion mod or a command instead.
- RequiresFeatures - features that must be present for the skill to be available. When one is missing the skill is defined but hidden and earns nothing.
- MaxLevel - an optional per-skill cap; an owner cap in
custom-skills.jsonstill wins over it.
Precedence is the usual defaults, then pack, then owner: a pack skill joins the roster, and your own custom-skills.json entry with the same id still overrides it, so you can retune or rename anything a pack installs. /mmoconfig reload keeps pack skills in place, and /mmoconfig validate reports a pack skill that shadows a built-in id, names an unknown category or trigger, or has neither a name nor a language key.
Prefer a content pack: author one file per skill under Server/MMOSkillTree/CustomSkills/ inside a pack folder, zip it, and drop the .zip into your server Mods/ folder. Building the zip.
mods/mmoskilltree/custom-skills.json stays the quick per-server tweak that always wins.
Smithing and Cooking arrive this way, as skills shipped by the stations pack in a later stations release, not as built-in skills. Nothing ships them today.
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 | Default | Description |
|---|---|---|---|
schemaVersion | int | optional | Must be 1 |
skills | array | optional | Custom skill definitions (see fields table above) |
disabledBuiltinSkills | array | optional | Built-in skill IDs to disable (e.g., ["TAMING", "FISHING"]) |
defaultMaxLevel | int | optional | Default max level for all skills (default: 200) |
maxLevels | object | optional | Per-skill max level overrides (e.g., {"MINING": 300}) |
builtinRequiresFeatures | object | optional | 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.