Enchanting Rework
A custom enchanting-table GUI that replaces the vanilla "gamble on three options" flow with something deterministic and craft-y. Right-click an enchanting table (or run /enchanting) to open a 54-slot interface with two functions: a Book Forge that mints enchanted books from ingredient blueprints, and an Apply station that puts a book onto an item for a flat level cost.
Book Forge
Place a recipe's ingredient items in the three forge slots and some lapis in the lapis slot. The ingredients are a blueprint - they are not consumed. When they match a configured recipe, a preview of the resulting enchanted book appears in the output. Click it to mint the book; you pay the recipe's level and lapis cost, and the ingredients stay where they are so you can forge again.
Recipes can require specific materials (CACTUS, DIAMOND), a potion (potion:strength), or whole categories (any sword, any armor, any pickaxe...). Shipped examples:
cactus + any armor + any sword -> Thorns
any sword + potion of strength + grindstone -> Sharpness
A broad default set covers common combat, tool, armor, and bow enchants - see /enchanting recipes in game or config.yml.
Apply
Put an item in the target slot and an enchanted book in the book slot. A preview of the enchanted item appears in the output; click it to enchant the item for a flat level cost (default 5). Conflicting enchants are skipped, and a stored enchant only upgrades an item if it is a higher level than what is already there.
By default, books minted by the forge are reusable - they are not consumed when applied. Books from other sources (loot, trades) are consumed on apply like normal. Set reusable-books: false to make every book single-use. Minted books are genuine vanilla enchanted books, so anvils and grindstones still work with them.
Opening the GUI
- Right-click any vanilla enchanting table (can be turned off).
- Run
/enchanting (can be turned off).
Players without enchanting.use always fall through to the vanilla enchanting table, so disabling permission never locks anyone out of enchanting entirely.
Commands
All under /enchanting (aliases: /erework, /ench).
| Command |
Description |
/enchanting |
Open the Enchanting Rework GUI. |
/enchanting recipes |
List the configured book-forge recipes. |
/enchanting info |
Plugin info and current toggles. |
/enchanting reload |
Reload config.yml. (admin) |
Permissions
| Permission |
Default |
Grants |
enchanting.use |
true |
Open the GUI, forge books, apply enchants, list recipes. |
enchanting.admin |
op |
reload (includes enchanting.use). |
Configuration (config.yml)
| Key |
Default |
Meaning |
open-via-command |
true |
Allow opening the GUI with /enchanting. |
intercept-enchanting-table |
true |
Right-clicking a vanilla table opens this GUI. |
reusable-books |
true |
Forged books are not consumed on apply. |
apply-cost-levels |
5 |
Flat level cost to apply a book to an item. |
default-level-weaker-than-max |
true |
Recipes with no explicit level use vanilla max minus one. |
recipes.<id> |
(see file) |
A forge recipe: ingredients, result-enchant, optional level, cost-levels, cost-lapis. |
Ingredient tokens: a material name (CACTUS, minecraft:diamond), a potion (potion, potion:strength), or a category (any_sword, any_axe, any_pickaxe, any_shovel, any_hoe, any_tool, any_armor, any_helmet, any_chestplate, any_leggings, any_boots, any_bow, any_book). Result enchants accept a modern key (sharpness, minecraft:thorns) or a legacy Bukkit name (DAMAGE_ALL). Bad recipes are logged and skipped on load, never partially applied.
Compatibility
Paper / Spigot / Bukkit / Purpur, Minecraft 1.21.1-1.21.11. One jar, built against the 1.21.1 API (Java 21, class 65); no Paper-only classes, no NMS, no dependencies.
Notes
- One enchant per recipe by design. A book minted by the forge holds a single enchant. Applying a multi-enchant book obtained elsewhere applies all its compatible enchants in one go (still a flat cost).
- Items in input slots are returned on close.
- Potion matching keys on the potion type / effect / display name; a plain
potion token always matches any potion.
Original concept by u/Ciryl_Lynyard on Reddit (r/Minecraft). Built by BeansNToast.