
Description
Villager Trade Enchant
A villager who enchants your gear, at a price you control.
Place an enchanting table near an unemployed villager and it becomes an Enchanter. Right-click it, put an item in, pick the exact enchantment and level you want, pay and take the enchanted item. No lapis, no experience levels, no random rolls.
Features
- New profession: the Enchanter. Its job site is the enchanting table, and it wears its own crimson robe as a villager and as a zombie villager.
- Pick exactly what you want. One row per enchantment level, sorted by name, with the price next to it. Curses are shown in red.
- Anvil rules. Only enchantments the item could take in an anvil are offered. Conflicting enchantments and levels the item already has are hidden. Upgrading an enchantment costs the full price of the new level.
- Books too. Plain books become enchanted books, and enchanted books can get more enchantments.
- No rework penalty. Enchanting here does not raise the item's anvil repair cost.
- Every enchantment, modded ones included. Treasure enchantments like Mending, curses, and enchantments from other mods and datapacks are all available.
- Configurable prices. Every level has its own price in the server config: any item, 1 to 64. By default they cost emeralds, or emerald blocks for the expensive ones.
- Vanilla feel. The screen looks like the trading screen, and picking a row moves the payment from your inventory, just like selecting a trade.
The Enchanter never trades and never levels up. Its prices are exactly what the config says: no discounts, no usage limit.
How to use
- Place an enchanting table near an unemployed villager. It walks over and becomes an Enchanter.
- Right-click the Enchanter.
- Put the item in the first slot and pick a row. Once the payment is enough, take the result.
In a world that existed before the mod was installed, an enchanting table that was already placed may not be recognized yet. Break it and place it again.
Configuration
config/villagertradeenchant-server.toml is created on the first start and lists every enchantment in the game with its default price:
priceMultiplier = 1.0
allowConflicts = false
allowBooks = true
[prices."minecraft:sharpness"]
enabled = true
levels."1" = { item = "minecraft:emerald", count = 19 }
levels."5" = { item = "minecraft:emerald_block", count = 8 }
priceMultiplier: multiplies every price.allowConflicts: also offer enchantments that conflict with one already on the item.allowBooks: allow books and enchanted books.enabled = false: hide an enchantment.
Your edits are never overwritten: enchantments from newly added mods or datapacks are added at the end of the file. Mistakes do not crash the server; invalid entries are skipped with a warning in the log.
Requirements
Required on both the client and the server.
| Minecraft | Loaders |
|---|---|
| 1.21.1 | NeoForge 21.1.4+, Forge 52.0.0+, Fabric (1.21–1.21.1) with Fabric API |
| 1.20.1 | Forge 47.1.0+ (also runs on NeoForge 1.20.1), Fabric (1.20–1.20.1) with Fabric API |
Compatibility
- Not compatible with mods that also use the enchanting table as a villager job site, such as Villager Enchanter. The game shows an error at startup.
- Safe to remove. The world still opens, Enchanters become unemployed villagers, and enchantments already bought stay on the items.
Better together
- Villager Trade Peek: see a villager's locked trades before you unlock them.
- Villager Trade Swap: reroll a single trade slot.
- Villager Trade Labels: see enchantment and map names right in the trading screen.
Source code and issues: GitHub




