Community listing page, reviews may not be monitored by the author.
Community voices
Reviews
No reviews yet. Be the first to review this project!
Get it on
Available Platforms
About
Project Details
For authors
Embed Badge
If you're the author of this project, you can embed a live badge anywhere that supports HTML or Markdown. It updates automatically whenever ratings change.
Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.
Identifiers
Platform IDs
Resources
External Links
About
Description
Enchantment Progression (Forge 1.20.1)
Enchantment Progression overhauls Minecraft’s enchantment mechanics. Instead of instantly acquiring maximum-tier gear through basic trading or anvil combining, enchantments grow stronger dynamically as you use your equipment in the world.
Every swing, arrow, block broken, hit absorbed, and flight second feeds experience directly into your active gear. Enchantments level up organically through gameplay, turning your gear into evolving artifacts tailored to your journey.
Key Features
- Organic Leveling Mechanics: Enchantments level up while actively being used in battle, mining, exploration, and survival.
- Dedicated Dynamic Triggers: Built-in tracking for melee combat, ranged weapons, armor types, tridents, fishing rods, shields, and elytra flight.
- Anvil XP Recycling: Combining identical enchantments on an anvil transfers stored XP and level-based bonus XP instead of bypassing the progression curve with instant tier increases.
- Clean Visual Tooltips: Shift-hovering over items displays clear progress bars, current XP, and requirements for the next tier.
- Fully Data-Driven: Every enchantment's XP requirements, multipliers, maximum levels, and conditions can be adjusted via main config TOML file and JSON configs.
- KubeJS Integration: Native event hooks (
EnchantmentProgressionEvents.xpGain) and script bindings (EnchProgression.addXp(...)) allow full modpack automation.
How It Works
Earning Experience
When an item has an enchantment that can still level up, relevant gameplay actions will award enchantment experience directly to that item.
When the stored XP reaches the required threshold for the current tier, the enchantment level automatically increments. The player receives a level-up notification in the action bar, accompanied by sound and particle effects.
Supported Progression Triggers
| Category | Enchantments | Action Required |
|---|---|---|
| Melee Combat | Sharpness, Smite, Bane of Arthropods, Knockback, Sweeping Edge, Fire Aspect, Looting | Slaying enemies, hitting specific mob categories (Undead/Arthropods), sprinting knockback hits, sweeping attacks, and burning target hits. |
| Archery & Crossbows | Power, Punch, Flame, Piercing, Quick Charge | Long-range bow shots, shooting flying targets (Ghasts, Phantoms, Dragons), piercing multiple mobs with a single projectile, and close-quarters crossbow combat. |
| Tridents | Impaling, Loyalty, Riptide | Hitting aquatic mobs or wet targets in rain, landing long-range trident throws, and launching with Riptide in water or rain. |
| Tools | Efficiency, Fortune, Silk Touch | Mining valid blocks with the correct tool (XP scales based on block hardness). |
| Fishing | Lure, Luck of the Sea | Catching fish and reeling in treasure/junk loot. |
| Armor & Defense | Protection, Blast/Fire/Projectile Protection, Thorns, Feather Falling | Taking mob damage, surviving explosions, absorbing fire damage, reflecting attacks via Thorns, and surviving high fall distances. |
| Special Utility | Respiration, Aqua Affinity, Swift Sneak, Soul Speed, Frost Walker, Depth Strider | Submerging underwater, sneaking in dark/hostile environments, sprinting on soul sand/soil, walking on frosted ice, and swimming. |
| Shields & Elytra | Unbreaking | Blocking heavy incoming damage with a shield; gliding continuously across the skies with an Elytra. |
Anvil Merging & XP Transfer
In vanilla Minecraft, combining two items with identical enchantment levels instantly gives the next level. Enchantment Progression replaces this mechanic with an XP-transfer system:
- Target Item (Left Slot): Keeps its current level as the starting base.
- Sacrifice Item (Right Slot): Transfers a portion of its stored progression and grants bonus XP based on its level.
The Formula
XP Granted = (Stored XP on Sacrifice × combine_xp_percent) + (Sacrifice Level × combine_xp_per_level)
If the combined XP exceeds the requirement for the next tier, the target item levels up immediately on the anvil. Excess XP carries over to the new tier.
Configuration & Datapacks
Every single value in the mod is configurable without touching any Java code.
Global Config (config/enchantment_progression/_default.js)
Controls fallback default behavior when a specific enchantment file does not override a setting:
{
"base_xp": 100.0, // Base XP required for level 1 -> 2
"level_multiplier": 2.0, // Exponential scaling factor per level
"max_level_override": 0, // Override max enchantment tier (0 = use vanilla max)
"enabled": true, // Whether progression is active for this enchantment
"combine_xp_per_level": 50.0, // Flat bonus XP per sacrifice level on an anvil
"combine_xp_percent": 0.25, // Percentage of stored sacrifice XP transferred on an anvil (0.25 = 25%)
"trigger_xp": 1.0, // Fallback XP amount if omitted in triggers
"trigger_xp_multiplier": 1.0 // Fallback multiplier if omitted in triggers
}
Formulas
The amount of experience required for an item to move from the current level to the next: Threshold = base_xp × current_level^level_multiplier
The amount of experience awarded for a specific action (hit, mining, flying, etc.): XP Added = trigger.xp × (baseAmount × trigger.xp_multiplier)
Custom Enchantment JSON (data/enchantment_progression/enchantment_progression/<name>.js)
You can override or create custom files in datapacks or directly inside config/enchantment_progression/.
Example: sharpness.js
{
"enchantment": "minecraft:sharpness",
"base_xp": 120.0,
"level_multiplier": 2.5,
"max_level_override": 5,
"enabled": true,
"combine_xp_per_level": 60.0,
"combine_xp_percent": 0.30,
"triggers": [
{
"type": "deal_damage",
"xp": 1.0,
"xp_multiplier": 1.0
},
{
"type": "kill_entity",
"xp": 5.0,
"xp_multiplier": 1.5
}
]
}
Supported Trigger Filter Keys:
"type": The identifier of the action (deal_damage,kill_entity,break_block,shield_block,elytra_flight,take_damage, etc.)."block_tag"/"specific_block": Matches specific block tags or registry IDs."item_tag": Filter for caught fish/loot."entity_type_tag": Filter for entities (minecraft:undead,minecraft:arthropods, etc.)."damage_type_tag": Filter for damage sources (minecraft:is_explosion,minecraft:is_fire, etc.)."min_distance": Minimum distance required for ranged hits or throws."target_flying": Requires the target to be in flight."target_on_fire": Requires the target to be burning."in_water_or_rain": Requires the entity to be wet.
KubeJS Support (kubejs/server_scripts/<name>.js)
If KubeJS is installed, Enchantment Progression registers custom events and script bindings.
Listening & Modifying XP Gains
Example: xp_modifier.js
EnchantmentProgressionEvents.xpGain(event => {
let player = event.player;
let item = event.itemStack;
let ench = event.enchantmentId; // e.g. "minecraft:sharpness"
// Double Sharpness experience if the player is in the Nether
if (ench === 'minecraft:sharpness' && player.level.dimension === 'minecraft:the_nether') {
event.xp = event.xp * 2.0;
}
// Cancel XP gain completely under custom conditions:
// event.cancel();
});
Manually Adding XP (Curios / Custom Inventory Integration)
You can award XP to any item from external scripts.
Example: manual_xp_addition.js
// Add 50 XP directly to the item's Unbreaking progression
EnchProgression.addXp(player, itemStack, 'minecraft:unbreaking', 50.0);
Commands for Testing
Quickly generate starter enchanted gear (lvl:1) to test the progression mechanics:
Weapon
/give @p netherite_sword{Enchantments:[{id:"minecraft:sharpness",lvl:1s},{id:"minecraft:looting",lvl:1s},{id:"minecraft:unbreaking",lvl:1s}]} 1
Bow & Crossbow
/give @p bow{Enchantments:[{id:"minecraft:power",lvl:1s},{id:"minecraft:unbreaking",lvl:1s}]} 1
/give @p crossbow{Enchantments:[{id:"minecraft:piercing",lvl:1s},{id:"minecraft:quick_charge",lvl:1s}]} 1
Trident
/give @p trident{Enchantments:[{id:"minecraft:loyalty",lvl:1s},{id:"minecraft:impaling",lvl:1s}]} 1
Armor & Shields
/give @p netherite_chestplate{Enchantments:[{id:"minecraft:protection",lvl:1s},{id:"minecraft:thorns",lvl:1s}]} 1
/give @p shield{Enchantments:[{id:"minecraft:unbreaking",lvl:1s}]} 1
/give @p elytra{Enchantments:[{id:"minecraft:unbreaking",lvl:1s}]} 1
Compatibility
- Minecraft Version: 1.20.1
- Mod Loader: Minecraft Forge (47.1.0+)
- Client / Server: Required on both Client and Server (syncs tooltips and progression logic).
- Modded Enchantments: Modded enchantments with defined categories automatically fall back to balanced default curves and can be fully customized with their own JSON definitions.
Known Issues
Impaling&Loyalitydoesn't gain progress when used by trident throw.
Screenshots
Gallery
Versions
Files
Relations
Project Relations
More like this
Similar Mods
Suggestions use data such as tags, dependencies, dependents, descriptions, titles, and more to rank how much they overlap with this mod.
On ModDex
Community snapshot
By the numbers
Statistics
Get it on
Available Platforms
On ModDex
Community snapshot
By the numbers
Statistics
Resources