Pixel Dream StudiosWiki
Mods

Reskillable Reimagined

The complete skill-locking and leveling system — skills, perks, configs, commands, and cross-loader support.

Reskillable Reimagined is an RPG-style progression mod that adds a skill-based locking and leveling system to Minecraft.

Players spend experience to level skills, unlock equipment, meet progression requirements, gain configurable perks, and access stronger content.

The current system is designed with modpacks in mind and supports both built-in and custom progression paths.

1.21.1 Loader Support

Reskillable Reimagined is available for NeoForge and Fabric.

The Fabric version requires Fabric Loader, Fabric API, and Java 21. Core skills, configs, locks, gates, commands, custom skills, and built-in skill customization are kept aligned with the 1.21.1 NeoForge version.

On Fabric, EMI is the supported recipe-viewer integration. Jade is optional. Loader-specific integrations for NeoForge-only APIs are not automatically available on Fabric.

Core Features

Reskillable includes:

  • A full XP-based skill leveling system
  • Item and block requirements
  • Entity attack requirements
  • Crafting requirements
  • Configurable skill progression gates
  • Up to 8 custom skills
  • Fully editable built-in skills
  • Configurable skill IDs, names, icons, perks, and attributes
  • Multiple configurable perk attributes per skill
  • A configurable global skill-level cap
  • Bonus health based on total progression
  • Requirement tooltips with pass/fail coloring
  • Optional Jade integration
  • EMI screen compatibility on Fabric
  • Automatic mod item scanning
  • JSON-based modpack configuration

Skill System

Each player has skills that can be leveled by spending experience.

Default Built-In Skills

SkillPurpose
AttackWeapon usage, combat progression, and offensive perks
DefenseArmor usage and defensive progression
MiningMining-tool progression and mining bonuses
GatheringGathering tools such as axes and shovels
FarmingFarming tools and crop-related progression
BuildingBuilding-related progression and interaction reach
AgilityMovement and mobility progression
MagicMagical 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.json

This 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

FieldDescription
skillFixed internal behavior/save-data hook. Keep this tied to the original skill.
idPublic ID used by locks, gates, commands, and the UI. This can be renamed.
displayNameCustom literal name shown to the player. Blank keeps the normal translated name.
enabledSet to false to disable the skill.
iconOptional replacement icon texture. Blank keeps the default icon.
perkAttributesPreferred multi-attribute perk format. null keeps the original built-in perk, [] removes the perk, and one or more entries replace the original perk.
perkAttributeLegacy single-attribute override. Still supported for existing configs.
perkOperationLegacy operation used with perkAttribute.
perkAmountPerStepLegacy amount used with perkAttribute.
perkStepLegacy/default milestone step. Multi-attribute entries can each define their own perkStep.

Each object inside perkAttributes supports:

FieldDescription
attributeRegistry ID of the attribute to modify.
operationModifier operation such as ADDITION, MULTIPLY_BASE, or MULTIPLY_TOTAL.
amountPerStepAmount granted at each milestone.
perkStepNumber of skill levels between milestones for this specific attribute.

Built-In Perk Override Rules

For built-in skills, perkAttributes has three distinct states:

"perkAttributes": null

Keeps 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 skill field is the permanent internal mapping.
  • The id field is the public-facing config ID.
  • The original skill IDs remain accepted as compatibility aliases.
  • Renaming attack to combat, for example, does not invalidate older lock configs that still use attack.
  • 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 reload reloads 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.json

Example 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

FieldDescription
idInternal/public skill ID used by commands, locks, and gates
displayNameName shown in the skill screen and requirement tooltips
enabledEnables or temporarily disables the custom skill
iconTexture path used for the skill icon
perkAttributesPreferred array of attribute perks. Use multiple entries to grant multiple attributes. An empty array gives the custom skill no perk.
perkAttributeLegacy single-attribute format. Still supported for existing configs.
perkOperationLegacy operation used with perkAttribute.
perkAmountPerStepLegacy amount used with perkAttribute.
perkStepLegacy/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, and perkStep fields inside each perkAttributes entry.
  • 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 Pages & GUI Customization

The main skill screen supports separate pages for built-in and custom skills.

Useful options include:

enableSecondSkillPage = true
subpageNavPosition = "BOTTOM"
showSubpageTitles = true

enableSecondSkillPage

Controls whether the custom-skill page is available.

subpageNavPosition

Controls where the built-in/custom page navigation arrows are placed.

Supported values:

  • TOP
  • BOTTOM
  • LEFT
  • RIGHT

showSubpageTitles

Controls whether the Built-In / Custom page title is shown.

Inventory / Skills Tab Position

The inventory-side Skills tab position is stored in:

config/reskillable/reskillable_tabs.json

Example:

{
  "x": -28,
  "y": 7
}

This allows the tab position to remain configurable rather than being permanently fixed to one inventory layout.


Leveling & XP

Players spend Minecraft XP to increase skill levels.

XP cost is calculated using Reskillable's progression curve and can be globally scaled.

Important options include:

xpScalingMultiplier
maximumLevel
maxTotalSpentLevels

maximumLevel

Controls the maximum level an individual skill can reach.

xpScalingMultiplier

Changes the XP cost of skill progression.

maxTotalSpentLevels

Limits how many total skill levels a player may invest across all enabled skills.

maxTotalSpentLevels = -1

-1 means unlimited.

This can be used to create character-build systems where players must specialize instead of eventually maxing every skill.


Skill Progression Gates

Skill gates can stop a player from leveling a skill past a configured point until other progression requirements are met.

Gates do not stop the player from earning XP. They prevent the skill upgrade itself until the requirements are satisfied.

Configured with:

skill_level_gates = []

Gate Format

SKILL:MIN_CURRENT_LEVEL:REQUIREMENTS

Supported requirement tokens include:

TOTAL=<level>
OTHER_SKILL=<level>
ADV=<namespace:path>

All requirements on the same rule must be satisfied.

Require an Advancement

skill_level_gates = [
  "ATTACK:15:ADV=minecraft:story/mine_diamond"
]

Attack can be leveled normally until level 15.

After that, the player must complete the configured advancement.

Custom advancements can also be used, making this useful for quest systems and modpack progression.

Require Total Skill Levels

skill_level_gates = [
  "ATTACK:10:TOTAL=30"
]

Attack can be leveled normally through level 10.

Further progression requires at least 30 total skill levels.

Require Multiple Conditions

skill_level_gates = [
  "ATTACK:15:TOTAL=40,MINING=10,DEFENSE=10"
]

Attack progression beyond the gate requires:

  • 40 total skill levels
  • Mining 10
  • Defense 10

Multiple Gates

skill_level_gates = [
  "ATTACK:10:TOTAL=25",
  "ATTACK:20:TOTAL=50",
  "MAGIC:15:ATTACK=10"
]

This allows one skill to have multiple progression checkpoints.


Perks & Attribute Bonuses

Skills can use their original Reskillable perk or one or more configurable attribute perks.

The preferred format is:

"perkAttributes": [
  {
    "attribute": "modid:attribute",
    "operation": "ADDITION",
    "amountPerStep": 1.0,
    "perkStep": 5
  }
]

A skill may contain multiple entries, and every entry can use a different operation, amountPerStep, and perkStep.

For example, one attribute can trigger every 5 levels while another triggers every 10 levels.

Built-In vs. Custom Perk Behavior

For built-in skills:

  • perkAttributes: null keeps the original Reskillable perk.
  • perkAttributes: [] disables the perk.
  • perkAttributes: [ ... ] replaces the original perk with the configured attribute list.
  • The legacy singular perkAttribute format is still supported and also acts as a replacement when configured.

For custom skills:

  • perkAttributes: [] means the skill has no attribute perk.
  • perkAttributes: [ ... ] grants every configured attribute perk.
  • The legacy singular format remains supported for backward compatibility.

A custom attribute override does not stack with special built-in behavior such as Mining speed, Gathering bonus XP orbs, or Farming crop-growth chance. Supplying an override replaces that original perk.

Modifier Operations

Common operation names include:

ADDITION
MULTIPLY_BASE
MULTIPLY_TOTAL

ADDITION adds the configured amount directly at each milestone.

MULTIPLY_BASE uses the amount as a fraction of the attribute's base value. For example, 0.05 represents +5% of the base value per milestone.

Perk Page Names

When a built-in skill is using its original perk, Reskillable uses its normal legacy perk description.

When a skill is using a configured attribute override, the perk page displays the configured attribute's translated name. For third-party attributes, that translated name is normally supplied by the mod that owns the attribute.

For example, changing Reskillable's legacy:

tooltip.rereskillable.bonus_xp_orbs

changes the name used by the original Gathering perk. It does not rename a third-party attribute such as attributeslib:experience_gained.

Default Skill Bonus Types

SkillTypical Original Bonus
AttackAttack damage
DefenseArmor / defensive attribute
AgilityMovement speed
MagicConfigurable magic attribute
BuildingBlock interaction reach
GatheringBonus XP gain
MiningMining speed
FarmingCrop growth chance

These defaults remain active when perkAttributes is null. Supplying a configured attribute override replaces the corresponding original perk.


Health Scaling

Reskillable can grant bonus health based on total skill progression.

Controlled by:

HealthBonus
levelsPerHeart
healthPerHeart

For example, a pack can grant additional health every 10 combined skill levels.

Disabled skills are not intended to contribute to normal progression totals.


Skill Locking

Reskillable can restrict:

  • Item usage
  • Block interaction
  • Block breaking
  • Entity attacks
  • Crafting

Requirements may use built-in or custom skill IDs.


Item & Block Requirements

Configured through:

config/reskillable/skill_locks.json

Example:

{
  "skillLocks": {
    "minecraft:diamond_sword": ["attack:15"],
    "minecraft:netherite_chestplate": ["defense:30"]
  }
}

Multiple requirements may be added to the same entry:

{
  "skillLocks": {
    "examplemod:ancient_blade": [
      "attack:20",
      "agility:10"
    ]
  }
}

The player must satisfy all configured requirements.

Built-in skill IDs can use either the configured public ID or the original compatibility alias.


Wildcard Item Locks

Item requirement configs support prefix wildcards.

The wildcard must appear at the end of the item path.

Example:

{
  "skillLocks": {
    "examplemod:steel_*": [
      "attack:10"
    ]
  }
}

This expands against registered items whose paths begin with steel_.

Wildcards are useful for large content mods where many items share a naming prefix.


Entity Attack Requirements

Entity attack requirements are configured in:

config/reskillable/attack_skill_locks.json

Example:

{
  "attackSkillLocks": {
    "minecraft:warden": ["attack:25"]
  }
}

This lets modpacks gate stronger enemies behind character progression.


Crafting Requirements

Crafting restrictions are configured in:

config/reskillable/craft_skill_locks.json

Example:

{
  "craftSkillLocks": {
    "minecraft:diamond_sword": [
      "attack:15",
      "mining:10"
    ]
  }
}

This allows crafting progression to be stricter or different from normal item-use requirements.


Requirement Tooltips

Restricted items display their requirements directly in the item tooltip.

The tooltip includes:

  • A Requirements: heading
  • The configured skill name
  • Required level
  • Green text when the player meets the requirement
  • Red text when the player does not meet the requirement

Configured built-in display names and custom skill display names are respected.

This means renaming attack to Combat in built_in_skills.json also updates the name shown to players in requirement tooltips.


Jade Integration

Jade is optional.

When Jade is installed, Reskillable can display matching requirements directly in Jade tooltips while looking at blocks and supported entities/item entities.

Requirement entries use the same pass/fail coloring as normal item tooltips.

This makes progression requirements visible without forcing the player to first pick up or open an item.


Fabric Integration

The Fabric 1.21.1 port keeps the core Reskillable systems aligned with NeoForge.

Requirements

Fabric builds require:

  • Fabric Loader
  • Fabric API
  • Minecraft 1.21.1
  • Java 21

EMI

EMI is the supported recipe-viewer integration on Fabric.

The integration registers Reskillable's Skills tab and Skill Screen as exclusion areas so EMI sidebars do not cover the custom GUI.

There is no JEI hook/dependency in the Fabric build.

Jade

Jade remains optional on Fabric.

Loader-Specific Mod Integrations

Some integrations rely on APIs that are specific to NeoForge builds.

The Fabric port does not hard-link NeoForge-only integrations such as:

  • Curios APIs
  • Iron's Spells event APIs
  • TaCZ event APIs

Core Reskillable functionality does not depend on those integrations.

Where possible, generic registry/NBT-based behavior may still work without linking directly against another mod's API.


Main Config

The main config contains global Reskillable behavior.

On current Fabric 1.21.1 builds, it is stored at:

config/reskillable-common.toml

The JSON progression files remain under:

config/reskillable/

Important Main Config Options

ConfigDescription
disableWoolDropsControls Reskillable's wool-drop restriction
deathSkillResetResets skills on player death
HealthBonusEnables total-level health scaling
showTabButtonsShows the Inventory / Skills tab buttons
xpScalingMultiplierGlobal XP cost multiplier
maximumLevelMaximum level per skill
enableSkillLevelingEnables or disables normal GUI leveling
enableSkillUpMessageShows skill-up chat messages
skillAliasesAdditional accepted names for configured skills
skill_level_gatesSkill progression gate rules
enableSecondSkillPageEnables the custom-skill page
subpageNavPositionPosition of the built-in/custom page arrows
showSubpageTitlesShows or hides the skill subpage titles
maxTotalSpentLevelsMaximum combined spendable levels; -1 is unlimited
levelsPerHeartTotal skill levels required per health milestone
healthPerHeartHealth granted per milestone
attackAttributeAttribute used by the default Attack perk
attackOperationModifier operation for Attack
attackDamageBonusAttack perk amount
defenseAttributeAttribute used by Defense
defenseOperationModifier operation for Defense
agilityAttributeAttribute used by Agility
agilityOperationModifier operation for Agility
magicAttributeAttribute used by Magic
magicOperationModifier operation for Magic
buildingAttributeAttribute used by Building
buildingOperationModifier operation for Building
miningSpeedMultiplierMining bonus scaling

Some legacy bonus option names retain their original capitalization/spaces for compatibility. Per-skill values can also be overridden through built_in_skills.json.


Configuration Files

Reskillable automatically creates or uses the following files:

FilePurpose
config/reskillable-common.tomlMain/global configuration
config/reskillable/skill_locks.jsonItem and block requirements
config/reskillable/attack_skill_locks.jsonEntity attack requirements
config/reskillable/craft_skill_locks.jsonCrafting requirements
config/reskillable/built_in_skills.jsonBuilt-in skill definitions
config/reskillable/custom_skills.jsonAdditional custom skills
config/reskillable/reskillable_tabs.jsonInventory/Skills tab position

Commands

Reskillable provides administration and modpack-development commands under:

/skills

Most administrative commands require operator/game-master permission.

Get Skill Levels

/skills get

Checks player skill levels.

Set a Skill

/skills set <player> <skill> <level>

Sets a built-in or enabled custom skill.

Set All Skills

/skills set <player> all <level>

Sets all enabled built-in and custom skills.

Add Skill Levels

/skills add <player> <skill> <amount>

Levels can also be added to all enabled skills.

Respec a Player

/skills respec <player>

Resets progression and refunds stored/spent XP according to the command's respec behavior.

Reload Configs

/skills reload

Reloads Reskillable's current configuration and JSON data without requiring a normal full game restart.

Scan a Mod

/skills scanmod <modid>

Scans registered items belonging to a mod and adds generated entries to skill_locks.json.

Existing entries are preserved.

Generated requirement values should be treated as starting points and reviewed by the modpack author before release.


Mod Item Scanning

The scan command can save a large amount of manual configuration work.

/skills scanmod examplemod

Reskillable checks registered items in that namespace and generates suggested skill-lock entries.

The generated values can use item properties such as:

  • Armor defense
  • Armor toughness
  • Tool type
  • Weapon/tool progression

The scanner does not overwrite entries that already exist.


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
attack

Additional aliases may also be configured with skillAliases.


Modpack Design Examples

Rename Attack to Combat

built_in_skills.json:

{
  "skill": "attack",
  "id": "combat",
  "displayName": "Combat",
  "enabled": true,
  "icon": "",
  "perkAttributes": null,
  "perkOperation": null,
  "perkAmountPerStep": null,
  "perkStep": 5
}

New configs can then use:

"examplemod:greatsword": ["combat:20"]

Older configs using:

"examplemod:greatsword": ["attack:20"]

remain compatible.

Remove Magic From a Non-Magic Pack

{
  "skill": "magic",
  "id": "magic",
  "displayName": "",
  "enabled": false,
  "icon": "",
  "perkAttributes": null,
  "perkOperation": null,
  "perkAmountPerStep": null,
  "perkStep": 5
}

This removes Magic from normal progression without shifting another built-in skill into its internal data slot.

Replace Gathering With a Slayer Perk

{
  "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
    }
  ]
}

Because perkAttributes contains an override, the original Gathering bonus-XP-orb perk is disabled for this skill. The configured AttributesLib perk is used instead.

Give One Skill Multiple Attribute Perks

{
  "skill": "attack",
  "id": "warrior",
  "displayName": "Warrior",
  "enabled": true,
  "icon": "",
  "perkAttributes": [
    {
      "attribute": "minecraft:generic.attack_damage",
      "operation": "ADDITION",
      "amountPerStep": 0.5,
      "perkStep": 5
    },
    {
      "attribute": "minecraft:generic.max_health",
      "operation": "ADDITION",
      "amountPerStep": 1.0,
      "perkStep": 10
    }
  ]
}

This grants the attack-damage bonus every 5 levels and the max-health bonus every 10 levels.

Create a Specialization System

maxTotalSpentLevels = 80

Then combine the cap with skill gates to force meaningful build choices instead of allowing every player to max every skill.


Loader-Specific Compatibility

The main skill system is intended to remain consistent across supported loaders, but integrations that depend on another mod's loader-specific API may differ.

NeoForge

NeoForge builds can contain integrations for APIs/mods such as Curios, Iron's Spells, TaCZ, or other NeoForge-side systems depending on the Minecraft version.

Fabric 1.21.1

Fabric focuses on the shared Reskillable systems and native Fabric integrations:

  • Fabric API
  • EMI
  • Optional Jade

Do not assume a NeoForge-only compatibility hook exists on Fabric simply because the base mod is available on both loaders.


Who Should Use Reskillable?

Reskillable is designed for:

  • RPG modpacks
  • Progression-based survival packs
  • Hardcore packs
  • Adventure packs
  • Class or specialization systems
  • Magic or combat progression packs
  • Servers with advancement-based progression
  • Packs using quest systems to gate character growth

FAQ

On this page