Skills
The built-in skills, editing them, up to eight custom skills, and how configs name a skill.
Skill System
Each player has skills that can be leveled by spending experience.
Default Built-In Skills
| Skill | Purpose |
|---|---|
| Attack | Weapon usage, combat progression, and offensive perks |
| Defense | Armor usage and defensive progression |
| Mining | Mining-tool progression and mining bonuses |
| Gathering | Gathering tools such as axes and shovels |
| Farming | Farming tools and crop-related progression |
| Building | Building-related progression and interaction reach |
| Agility | Movement and mobility progression |
| Magic | Magical equipment and configurable magic attributes |
These eight skills are no longer permanently fixed in the GUI.
Editing Built-In Skills
Built-in skills are configured in:
config/reskillable/built_in_skills.jsonThis file allows a modpack to rename, reorder, customize, or disable the original skills without changing the internal save-data hooks used by Reskillable.
Example using the original built-in perk:
{
"skill": "attack",
"id": "combat",
"displayName": "Combat",
"enabled": true,
"icon": "yourpack:textures/gui/skills/combat.png",
"perkAttributes": null,
"perkOperation": null,
"perkAmountPerStep": null,
"perkStep": 5
}perkAttributes: null is intentional. For a built-in skill, it means keep the original Reskillable perk behavior.
Example replacing the original perk with multiple attributes:
{
"skill": "gathering",
"id": "slayer",
"displayName": "Slayer",
"enabled": true,
"icon": "born_in_chaos_v1:textures/item/shattered_skull.png",
"perkAttributes": [
{
"attribute": "attributeslib:experience_gained",
"operation": "MULTIPLY_BASE",
"amountPerStep": 0.05,
"perkStep": 5
},
{
"attribute": "minecraft:generic.movement_speed",
"operation": "MULTIPLY_BASE",
"amountPerStep": 0.02,
"perkStep": 10
}
]
}In this example, the original Gathering bonus-XP-orb perk is replaced. The first configured attribute gains +5% of its base value every 5 skill levels, while the second gains +2% of its base value every 10 skill levels.
Built-In Skill Fields
| Field | Description |
|---|---|
skill | Fixed internal behavior/save-data hook. Keep this tied to the original skill. |
id | Public ID used by locks, gates, commands, and the UI. This can be renamed. |
displayName | Custom literal name shown to the player. Blank keeps the normal translated name. |
enabled | Set to false to disable the skill. |
icon | Optional replacement icon texture. Blank keeps the default icon. |
perkAttributes | Preferred multi-attribute perk format. null keeps the original built-in perk, [] removes the perk, and one or more entries replace the original perk. |
perkAttribute | Legacy single-attribute override. Still supported for existing configs. |
perkOperation | Legacy operation used with perkAttribute. |
perkAmountPerStep | Legacy amount used with perkAttribute. |
perkStep | Legacy/default milestone step. Multi-attribute entries can each define their own perkStep. |
Each object inside perkAttributes supports:
| Field | Description |
|---|---|
attribute | Registry ID of the attribute to modify. |
operation | Modifier operation such as ADDITION, MULTIPLY_BASE, or MULTIPLY_TOTAL. |
amountPerStep | Amount granted at each milestone. |
perkStep | Number of skill levels between milestones for this specific attribute. |
Built-In Perk Override Rules
For built-in skills, perkAttributes has three distinct states:
"perkAttributes": nullKeeps the original Reskillable perk.
"perkAttributes": []Explicitly disables that skill's perk.
"perkAttributes": [
{
"attribute": "modid:attribute",
"operation": "ADDITION",
"amountPerStep": 1.0,
"perkStep": 5
}
]Replaces the original built-in perk with the configured attribute perk or perks.
This replacement behavior also applies to built-ins with special non-attribute legacy effects. For example:
- overriding Mining stops its original mining-speed perk
- overriding Gathering stops its original bonus-XP-orb perk
- overriding Farming stops its original crop-growth perk
The legacy singular perkAttribute, perkOperation, perkAmountPerStep, and perkStep format remains supported. A configured legacy perkAttribute is treated as a single replacement perk. If the newer perkAttributes array is present, use that format instead.
Important Built-In Skill Notes
- The
skillfield is the permanent internal mapping. - The
idfield is the public-facing config ID. - The original skill IDs remain accepted as compatibility aliases.
- Renaming
attacktocombat, for example, does not invalidate older lock configs that still useattack. - Built-in levels remain stored under their original internal keys.
- Reordering the JSON entries changes their order on the built-in skill page.
- Disabling or reordering a built-in skill does not shift another skill into its save-data slot.
- A disabled built-in skill is excluded from normal leveling, UI display, totals, gates, and perks.
- Deleting a built-in entry also causes that built-in skill to be treated as disabled.
- Each configured attribute can use a different operation, amount, and milestone step.
/skills reloadreloads perk definitions and cleans up Reskillable modifiers that were removed or changed.- On multiplayer, current skill definitions are synchronized from the server to the client so the perk page reflects the server configuration.
This makes it possible to heavily theme the system for a modpack while keeping existing player progression safe.
Custom Skills
Reskillable supports up to 8 additional custom skills.
Custom skills are defined in:
config/reskillable/custom_skills.jsonExample using the preferred multi-attribute format:
{
"id": "swimming",
"displayName": "Swimming",
"enabled": true,
"icon": "reskillable:textures/gui/custom_skills/swimming.png",
"perkAttributes": [
{
"attribute": "minecraft:generic.water_movement_efficiency",
"operation": "ADDITION",
"amountPerStep": 0.1,
"perkStep": 5
}
]
}Custom skills can also grant multiple attributes:
{
"id": "adventuring",
"displayName": "Adventuring",
"enabled": true,
"icon": "",
"perkAttributes": [
{
"attribute": "minecraft:generic.movement_speed",
"operation": "MULTIPLY_BASE",
"amountPerStep": 0.02,
"perkStep": 5
},
{
"attribute": "minecraft:generic.max_health",
"operation": "ADDITION",
"amountPerStep": 1.0,
"perkStep": 10
}
]
}Attribute registry IDs can change between Minecraft versions and loaders. Always use an attribute ID that exists in the exact version and loader used by your pack.
Custom Skill Fields
| Field | Description |
|---|---|
id | Internal/public skill ID used by commands, locks, and gates |
displayName | Name shown in the skill screen and requirement tooltips |
enabled | Enables or temporarily disables the custom skill |
icon | Texture path used for the skill icon |
perkAttributes | Preferred array of attribute perks. Use multiple entries to grant multiple attributes. An empty array gives the custom skill no perk. |
perkAttribute | Legacy single-attribute format. Still supported for existing configs. |
perkOperation | Legacy operation used with perkAttribute. |
perkAmountPerStep | Legacy amount used with perkAttribute. |
perkStep | Legacy/default milestone step. Multi-attribute entries can each define their own step. |
Custom Skill Notes
- IDs should use lowercase letters, numbers, and underscores.
- IDs should be unique.
- Custom skills start at level 1.
- Disabled custom skills keep their stored player level.
- A custom skill can be referenced by:
- item and block locks
- crafting locks
- entity requirements
- skill level gates
- commands
- A configured perk allows a custom skill to participate in the perk system.
- Custom skills support the same
attribute,operation,amountPerStep, andperkStepfields inside eachperkAttributesentry. - The old singular perk fields remain supported so existing custom-skill configs do not need to be rewritten immediately.
Using Custom Skills in Locks
{
"skillLocks": {
"minecraft:trident": ["swimming:10"]
}
}Using Custom Skills in Gates
skill_level_gates = [
"SWIMMING:10:TOTAL=25"
]Skill IDs & Aliases
There are three useful concepts when identifying a skill:
Internal Built-In Mapping
The skill value in built_in_skills.json.
Example:
"skill": "attack"This should not be repurposed because it identifies the original behavior/save-data slot.
Public Skill ID
The configurable id.
Example:
"id": "combat"This can be used in new locks, gates, and commands.
Compatibility Alias
The original built-in ID remains recognized.
That means both of these can continue to resolve to the same built-in skill after renaming:
combat
attackAdditional aliases may also be configured with skillAliases.
