What is Immersive Enchanting?
Immersive Enchanting reimagines and reworks the vanilla enchanting experience. Choose your enchantments through a new skill-tree based enchanting GUI! Use materials instead of levels to enchant

New Enchanting UI
Enchanted books unobtainable
Spoiler
The new enchanting GUI makes enchanted books obsolete. Now, you can choose your enchantments without annoying anvil level costs or tedious villager trade halls!
Mending unobtainable
Spoiler
Mending is an extremely overpowered enchantment that removes the need to ever build new tools again once it is unlocked. In this mod, it cannot be obtained from enchanted books or the enchanting table.
In this mod anvil costs are heavily reduced and do not increase with enchantments on gear! This removes the need for mending - don't panic.
You can change this setting via config on a world-by-world basis. Enabling mending will give Ancient Books a chance to spawn with mending, and mending will appear in the enchanting table.
For 1.21.1:
Start a world, press escape, then Mods -> Immersive Enchanting -> Settings -> Enable Mending.
For 1.20.1:
Use /togglemending (requires cheats to be on!)
Ancient books in chiseled bookshelves!
Spoiler
Rather than grinding leather and sugar cane for bookshelves to reach max level enchantments, you are encouraged to explore the world and discover ancient books in loot chests. Add them to your chiseled bookshelves to unlock new enchantments! Plus, they look way cooler.
No XP requirement to enchant
Spoiler
Nothing is worse than standing at a mob grinder waiting to hit level 30 just so you can have the chance of unlocking a good enchantment. XP costs have been removed completely from the enchantment process. Instead, you are encouraged to explore and gather items, as enchantments now have material costs.
For Modpack Developers:
Immersive Enchanting is free to be used in any modpack.
Immersive Enchanting now supports custom recipes! You can configure the item costs for each enchantment in the recipes.json file. For more information and guidance, see the Wiki or join the Discord for help.
For more information/tutorials on how to use the mod, see the Wiki.
Note from the Mod Author:
This is my first ever mod and I would appreciate any feedback! The enchantment costs were designed to encourage exploration and lock higher tier enchantments behind some difficult to obtain items. If you have any recommendations for rebalancing these costs, I am open to suggestions!
Credits:
Thanks to @carl_class on Modrinth for the Enchanted Book sprites! Thanks to everyone in The NeoForge Project Discord for your support.
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 1mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 8mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 9mo ago | 1 | ||||
| 10mo ago | 1 | ||||
| 10mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 |
Technical:
Loot Modifier has new signature
BlockEvent.BreakEvent now BreakBlockEvent
Ported new build.gradle from 1.21.1 branch with mod dev runs
The previously released and removed 6.0.0 version contained game breaking issues, these have been resolved.
XP levels now subtract correctly [#74]
Costs containing air (i.e transmute) did not validate correctly [#76]
Datapacks did not sync properly between client and server, fixed in latest AlfinoLib version 1.2.0 [#81]
Fixed Mixin conflict with MoreJS [#73]
6.0.0 Changelog:
• Requires AlfinoLib 1.2.0
• Added mod filters – press ‘Tab’ when an item is inserted in the enchanting table to show enchantments for specific mods
• Thanks to armandoxtraceroespalda-dev: Items now stay in the enchanting table. The tool is rendered above the enchanting table. Particles now correctly display when filled chiselled bookshelves are nearby.
• Datapack refactored – final revision (see Wiki)
• Added support for data components in cost datapacks.
• Added node API for addon mods
• All enchantments now show up by default in the enchanting table
• All enchantments must now have a valid cost file
• Added clearer error messaging when datapack files are invalid or missing
• Removed ‘Allow Transmute’ and ‘Allow Replicate’ from config – replaced with ‘enable’ and ‘disable’ in their cost files.
• Added config option for enabling/disabling enchanted book villager trades – trade override moved to Mixin instead of event/datapack manipulation.
• Added config option for changing enchanted book loot mode to replace with ancient books or remove.
• Books/Enchanted books now work in the enchanting table.
• Fixed crashes related to invalid datapacks, now displays error messages rather than crashing
• Transmute node now correctly shows as locked if matching enchantment not available
• Fixed hover ordering when there are many nodes that overlap
• Creative bookshelf can now be inserted to see all enchantments
The previously released and removed 6.0.0 version contained game breaking issues, these have been resolved.
XP levels now subtract correctly [#74]
Costs containing air (i.e transmute) did not validate correctly [#76]
Datapacks did not sync properly between client and server, fixed in latest AlfinoLib version 1.2.0 [#81]
Fixed Mixin conflict with MoreJS [#73]
6.0.0 Changelog:
• Requires AlfinoLib 1.2.0
• Added mod filters – press ‘Tab’ when an item is inserted in the enchanting table to show enchantments for specific mods
• Thanks to armandoxtraceroespalda-dev: Items now stay in the enchanting table. The tool is rendered above the enchanting table. Particles now correctly display when filled chiselled bookshelves are nearby.
• Datapack refactored – final revision (see Wiki)
• Added support for data components in cost datapacks.
• Added node API for addon mods
• All enchantments now show up by default in the enchanting table
• All enchantments must now have a valid cost file
• Added clearer error messaging when datapack files are invalid or missing
• Removed ‘Allow Transmute’ and ‘Allow Replicate’ from config – replaced with ‘enable’ and ‘disable’ in their cost files.
• Added config option for enabling/disabling enchanted book villager trades – trade override moved to Mixin instead of event/datapack manipulation.
• Added config option for changing enchanted book loot mode to replace with ancient books or remove.
• Books/Enchanted books now work in the enchanting table.
• Fixed crashes related to invalid datapacks, now displays error messages rather than crashing
• Transmute node now correctly shows as locked if matching enchantment not available
• Fixed hover ordering when there are many nodes that overlap
• Creative bookshelf can now be inserted to see all enchantments
The previously released and removed 6.0.0 version contained game breaking issues, these have been resolved.
XP levels now subtract correctly [#74]
Costs containing air (i.e transmute) did not validate correctly [#76]
Datapacks did not sync properly between client and server, fixed in latest AlfinoLib version 1.2.0 [#81]
Fixed Mixin conflict with MoreJS [#73]
6.0.0 Changelog:
• Requires AlfinoLib 1.2.0
• Added mod filters – press ‘Tab’ when an item is inserted in the enchanting table to show enchantments for specific mods
• Thanks to armandoxtraceroespalda-dev: Items now stay in the enchanting table. The tool is rendered above the enchanting table. Particles now correctly display when filled chiselled bookshelves are nearby.
• Datapack refactored – final revision (see Wiki)
• Added support for data components in cost datapacks.
• Added node API for addon mods
• All enchantments now show up by default in the enchanting table
• All enchantments must now have a valid cost file
• Added clearer error messaging when datapack files are invalid or missing
• Removed ‘Allow Transmute’ and ‘Allow Replicate’ from config – replaced with ‘enable’ and ‘disable’ in their cost files.
• Added config option for enabling/disabling enchanted book villager trades – trade override moved to Mixin instead of event/datapack manipulation.
• Added config option for changing enchanted book loot mode to replace with ancient books or remove.
• Books/Enchanted books now work in the enchanting table.
• Fixed crashes related to invalid datapacks, now displays error messages rather than crashing
• Transmute node now correctly shows as locked if matching enchantment not available
• Fixed hover ordering when there are many nodes that overlap
• Creative bookshelf can now be inserted to see all enchantments
Bookshelves did not correctly extend range when using Bookshelf Search Range config.
Changed min value of Bookshelf Search X/Z to 2 instead of 1.
Bookshelves did not correctly extend range when using Bookshelf Search Range config.
Changed min value of Bookshelf Search X/Z to 2 instead of 1.
Bookshelves did not correctly extend range when using Bookshelf Search Range config.
Changed min value of Bookshelf Search X/Z to 2 instead of 1.
Changelog:
GUI Changes:
· Enchanting GUI can now be zoomed with mouse scroll wheel
· Improved progress bar when removing enchantment
· Added unique node hover sounds, these can be changed in data/immersiveenchanting/sounds/node_sounds.json
· Node tooltips are no longer restricted to the GUI viewport
· Moving the mouse off a locked tooltip will stop it from rendering
· Enchantment icons moved from textures/gui/enchantment_icons to textures/enchantment
· Enchantment icons updated to latest version of Carl’s Recovered
Gameplay Changes:
· Reworked enchantment costs – now require fewer items
· Ancient books will now spawn more commonly in certain structures, for example, fire based enchantments are more likely in nether structures
· Removed old method of obtaining Biblioclasm music disc - now spawns in ancient libraries instead
Modpack Developer Changes:
· The processor “fill_chiseled_bookshelf” for ancient libraries now has more options
· The loot modifier “ancient_book_loot_modifier” now has more options: “random_enchantment_from_enabled”, “random_enchantment_from_list”, “random_enchantment_from_enabled_except”, “min_rolls” and “max_rolls”
· “any_of” removed from enchantment costs – now uses a list object instead
· Enchantments are no longer added from mods automatically – they must have an enchantment cost file to spawn and appear in the GUI (I recommend to use /immersiveenchanting generateEmptyDatapack)
Changelog:
GUI Changes:
· Enchanting GUI can now be zoomed with mouse scroll wheel
· Improved progress bar when removing enchantment
· Added unique node hover sounds, these can be changed in data/immersiveenchanting/sounds/node_sounds.json
· Node tooltips are no longer restricted to the GUI viewport
· Moving the mouse off a locked tooltip will stop it from rendering
· Enchantment icons moved from textures/gui/enchantment_icons to textures/enchantment
· Enchantment icons updated to latest version of Carl’s Recovered
Gameplay Changes:
· Reworked enchantment costs – now require fewer items
· Ancient books will now spawn more commonly in certain structures, for example, fire based enchantments are more likely in nether structures
· Removed old method of obtaining Biblioclasm music disc - now spawns in ancient libraries instead
Modpack Developer Changes:
· The processor “fill_chiseled_bookshelf” for ancient libraries now has more options
· The loot modifier “ancient_book_loot_modifier” now has more options: “random_enchantment_from_enabled”, “random_enchantment_from_list”, “random_enchantment_from_enabled_except”, “min_rolls” and “max_rolls”
· “any_of” removed from enchantment costs – now uses a list object instead
· Enchantments are no longer added from mods automatically – they must have an enchantment cost file to spawn and appear in the GUI (I recommend to use /immersiveenchanting generateEmptyDatapack)
- Replicate did not work in survival
- Invalid IDs in datapack caused crash
- Fixed shift clicking lapis on servers
Changelog:
GUI Changes:
• Enchanting GUI can now be zoomed with mouse scroll wheel
• Improved progress bar when removing enchantment
• Added unique node hover sounds, these can be changed in data/immersiveenchanting/sounds/node_sounds.json
• Node tooltips are no longer restricted to the GUI viewport
• Moving the mouse off a locked tooltip will stop it from rendering
• Enchantment icons moved from textures/gui/enchantment_icons to textures/enchantment
• Enchantment icons updated to latest version of Carl’s Recovered
Gameplay Changes:
• Added Lunge enchantment
• Reworked enchantment costs – now require fewer items
• Ancient books will now spawn more commonly in certain structures, for example, fire based enchantments are more likely in nether structures
• Removed old method of obtaining Biblioclasm music disc - now spawns in ancient libraries instead
Modpack Developer Changes:
• The processor “fill_chiseled_bookshelf” for ancient libraries now has more options
• The loot modifier “ancient_book_loot_modifier” now has more options: “random_enchantment_from_enabled”, “random_enchantment_from_list”, “random_enchantment_from_enabled_except”, “min_rolls” and “max_rolls”
• “any_of” removed from enchantment costs – now uses a list object instead
• Enchantments are no longer added from mods automatically – they must have an enchantment cost file to spawn and appear in the GUI (I recommend to use /immersiveenchanting generateEmptyDatapack)
• Fixed crash if costs using an item tag did not have an XP level defined.
• Fixed crash if replicate/transmute costs used item tags.
• Fixed crash if ancient book without any enchantment is put into enchanting table.
• Added enchantment_fuels.json to immersiveenchanting folder in enchantment_costs – uses the same format as all other costs and allows you to change the enchantment fuel requirement for each level.
• Items in enchantment_fuels.json can be shift clicked into the enchanting fuel slot.
• Enchanting now requires extra lapis per level by default (i.e enchantment level 5 now requires 5 lapis).
• Added fuel cost to the enchanting tooltips.
• Fixed crash if replicate/transmute costs used item tags.
• Fixed crash if ancient book without any enchantment is put into enchanting table.
• Added enchantment_fuels.json to immersiveenchanting folder in enchantment_costs – uses the same format as all other costs and allows you to change the enchantment fuel requirement for each level.
• Items in enchantment_fuels.json can be shift clicked into the enchanting fuel slot.
• Enchanting now requires extra lapis per level by default (i.e enchantment level 5 now requires 5 lapis).
• Added fuel cost to the enchanting tooltips.
Removed old data component migration for Ancient Books (it is assumed all users of the mod have updated to a version past 3.0.0 by this point)
· Datapack format has now changed (old costs are still be compatible except for disabled enchantments which have changed):
o Enchantments can no longer be disabled using an empty file with “{}”.
o Added a boolean “enabled” tag. If false, the enchantment will be disabled (treated the same way as the old “{}” method).
o Added a list “any_of” tag. This can contain a list of items. Any of the items are treated as valid costs.
o Added an integer “xp_levels” tag.
o The “item” tag can now accept item tags such as “#minecraft:planks”. These are treated the same as an “any_of” tag.
o Removed “lapis_cost.json” – valid enchanting fuels are now set using the item tag “#neoforge:enchanting_fuels”
o Added “immersiveenchanting/replicate.json” and “immersiveenchanting/transmute.json” which determine the costs for replicating and transmuting.
o For more information, see the updated wiki page.
· Added Biblioclasm music disc
o Obtained by burning an ancient book in soul fire.
· Added Arcane Memories music disc
o Rare chance of spawning inside of ancient library chiselled bookshelves.
· Added book tab to the enchanting table GUI
o Displays which books are locked/unlocked around your enchanting table.
· Added enchantment removal – hold to remove an enchantment
· Added commands
o /immersiveenchanting getDisabledEnchantments – returns a list of disabled enchantments
o /immersiveenchanting getEnabledEnchantments – returns a list of enabled enchantments.
o /immersiveenchanting giveRandomBook – gives a random ancient book (it will not give books that are disabled).
o /immersiveenchanting generateEmptyDatapack – outputs a datapack containing all enchantments in the current instance of Minecraft with template json files.
· Added new client config options
o Item carousel speed – How fast items will switch in the enchanting table tooltip if there a multiple item costs.
· Added new server config options
o Bookshelf search X/Y/Z – the range the table can discover chiselled bookshelves.
o Allow enchantment removal
o Allow enchanted book trades – if enabled, vanilla enchanted books will appear in villager trades (requires /reload or world restart)
o Allow enchanted book loot tables – if enabled, vanilla enchanted books will appear in their normal loot tables
o Obfuscate locked enchantments – if enabled, locked enchantments will show their full name in the enchanting table rather than showing ‘glitchy’ text
Other changes/Bug fixes:
· Fixed issue where tooltips for transmute/replicate didn’t render their item tooltip when locked and hovered.
· The “Cost” label has been renamed to “Materials”
· The “Free” label has been renamed to “None”
o Fixed issue where “Free” label was positioned incorrectly.
· Improved consistency on transmute/replicate tooltips as they now share the same layout as enchanting tooltips
· Higher level enchantments now have different sounds in the enchanting table screen
Commands now have correct permissions (level 4 [Owner] to generateEmptyDatapack, and level 2 [Gamemaster] to giveRandomBook and see enable/disabledEnchantments.
Generate data pack now generates the pack.mcmeta and data pack format, so now the folder is ready to use instantly.
Generate data pack now generates all enchantments with their highest default level.
Fixed issue where 'click to copy' after generating data pack didn't give the correct file path.
• Datapack format has now changed (old costs are still be compatible except for disabled enchantments which have changed):
o Enchantments can no longer be disabled using an empty file with “{}”.
o Added a boolean “enabled” tag. If false, the enchantment will be disabled (treated the same way as the old “{}” method).
o Added a list “any_of” tag. This can contain a list of items. Any of the items are treated as valid costs.
o Added an integer “xp_levels” tag.
o The “item” tag can now accept item tags such as “#minecraft:planks”. These are treated the same as an “any_of” tag.
o Removed “lapis_cost.json” – valid enchanting fuels are now set using the item tag “#neoforge:enchanting_fuels”
o Added “immersiveenchanting/replicate.json” and “immersiveenchanting/transmute.json” which determine the costs for replicating and transmuting.
o For more information, see the updated wiki page.
• Added Biblioclasm music disc
o Obtained by burning an ancient book in soul fire.
• Added Arcane Memories music disc
o Rare chance of spawning inside of ancient library chiselled bookshelves.
• Added book tab to the enchanting table GUI
o Displays which books are locked/unlocked around your enchanting table.
• Added enchantment removal – hold to remove an enchantment
• Added commands
o /immersiveenchanting getDisabledEnchantments – returns a list of disabled enchantments
o /immersiveenchanting getEnabledEnchantments – returns a list of enabled enchantments.
o /immersiveenchanting giveRandomBook – gives a random ancient book (it will not give books that are disabled).
o /immersiveenchanting generateEmptyDatapack – outputs a datapack containing all enchantments in the current instance of Minecraft with template json files.
• Added new client config options
o Item carousel speed – How fast items will switch in the enchanting table tooltip if there a multiple item costs.
• Added new server config options
o Bookshelf search X/Y/Z – the range the table can discover chiselled bookshelves.
o Allow enchantment removal
o Allow enchanted book trades – if enabled, vanilla enchanted books will appear in villager trades (requires /reload or world restart)
o Allow enchanted book loot tables – if enabled, vanilla enchanted books will appear in their normal loot tables
o Obfuscate locked enchantments – if enabled, locked enchantments will show their full name in the enchanting table rather than showing ‘glitchy’ text
Other changes/Bug fixes:
• Fixed issue where tooltips for transmute/replicate didn’t render their item tooltip when locked and hovered.
• The “Cost” label has been renamed to “Materials”
• The “Free” label has been renamed to “None”
o Fixed issue where “Free” label was positioned incorrectly.
• Improved consistency on transmute/replicate tooltips as they now share the same layout as enchanting tooltips
• Higher level enchantments now have different sounds in the enchanting table screen
Thanks to @Beibok on Discord for reporting this :)
New Features!
Ancient Libraries with Jungle, Desert and End variants that spawn with bookshelves full of Ancient Books to find.
Ancient Books with the same enchantment can now be transmuted into a different enchantment for 10 XP levels.
Ancient Books can be replicated for 10 XP levels and 1 book and quill - replicated books cannot be transmuted.
Default enchantment costs reworked.
Other Changes:
Changed the styling for tooltips.
The item in the center of the enchanting table GUI now displays its tooltip when hovered.
Backend changes for GUI elements.
Backend Changes:
- Book data has migrated to use the same system as vanilla enchanted books, existing ancient books will automatically migrate. This should help with version parity and better mod compatibility in the future.
o Forge 1.20.1: Old NBT tag “immersiveenchanting:ancient_book_enchantment_type” has been changed to StoredEnchantments.
Mod Support:
- Ancient book tooltips now support the Enchantment Descriptions mod (Forge 1.20.1 and NeoForge 1.21.1).
- Enchant Limiter mod is now supported (NeoForge 1.21.1 only).
- Jade will show the enchantments on ancient books in chiselled bookshelves when looked at (NeoForge 1.21.1 only).
- Server config added
o Bookshelf Search Height: The number of blocks in the Y-level that the enchanting table can detect chiselled bookshelves. Each 'row' can hold up to 96 books. If you have many enchantments, you may need to increase this value to provide more space.
- Client config added
Other changes:
- Updated ancient book texture
- Added tooltip locking – right click over an enchantment to lock the tooltip in place, you can hover over the item to check its details.
- Respiration 3 default recipe now uses a tadpole bucket instead of frogspawn, as this was unobtainable in survival mode.
- Fixed bug where hovering over ancient books could crash the game in some cases.
Backend Changes:
- Book data has migrated to use the same system as vanilla enchanted books, existing ancient books will automatically migrate. This should help with version parity and better mod compatibility in the future.
o Forge 1.20.1: Old NBT tag “immersiveenchanting:ancient_book_enchantment_type” has been changed to StoredEnchantments.
Mod Support:
- Ancient book tooltips now support the Enchantment Descriptions mod (Forge 1.20.1 and NeoForge 1.21.1).
- Enchant Limiter mod is now supported (NeoForge 1.21.1 only).
- Jade will show the enchantments on ancient books in chiselled bookshelves when looked at (NeoForge 1.21.1 only).
- Server config added
o Bookshelf Search Height: The number of blocks in the Y-level that the enchanting table can detect chiselled bookshelves. Each 'row' can hold up to 96 books. If you have many enchantments, you may need to increase this value to provide more space.
- Client config added
Other changes:
- Updated ancient book texture
- Added tooltip locking – right click over an enchantment to lock the tooltip in place, you can hover over the item to check its details.
- Respiration 3 default recipe now uses a tadpole bucket instead of frogspawn, as this was unobtainable in survival mode.
- Fixed bug where hovering over ancient books could crash the game in some cases.
- Fixed bug where item stack counts didn't render correctly.
- Added language support for French.
- Moved some literal strings into lang files.
- Backend refactor to use ResourceKeys instead of ResourceLocations.
- Enchanting table icon in the centre of the enchanting table screen is now interactable.
- Fixed bug where item stack counts didn't render correctly.
- Added language support for French.
- Moved some literal strings into lang files.
- Backend refactor to use ResourceKeys instead of ResourceLocations.
- Enchanting table icon in the centre of the enchanting table screen is now interactable.
Fixed bug where loot did not spawn when on a server.
Ancient books now have a significantly higher chance of spawning by default (60% -> 90%).
Ancient books now spawn in more loot tables by default. Here are the loot tables that have been added:
Ruined Portals
Village Temples
Village Cartographers
Nether Fortresses
Buried Treasure
Stronghold Corridors
Bastions
Suspicious Sand/Suspicious Gravel
Underwater Ruins
Fixed bug where loot did not spawn when on a server.
Ancient books now have a significantly higher chance of spawning by default (60% -> 90%).
Ancient books now spawn in more loot tables by default. Here are the loot tables that have been added:
Ruined Portals
Village Temples
Village Cartographers
Nether Fortresses
Buried Treasure
Stronghold Corridors
Bastions
Suspicious Sand/Suspicious Gravel
Underwater Ruins