Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details
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.
What it does
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 (with an empty cursor) 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...).
The two shipped example recipes are:
cactus + any armor + any sword-> Thornsany sword + potion of strength + grindstone-> Sharpness
(The original idea's "sharpening station" is mapped to a vanilla grindstone.)
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 the 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. That is the intended buff. 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 accepted in a recipe: 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), load-tested on Paper 1.21.11; no Paper-only classes, no NMS, no dependencies. Action-bar feedback uses the bundled BungeeCord chat component API, which is part of the Spigot API.
Known gaps / not yet verified
- Not playtested in a live client. The build is verified (compiles, jar,
bundled
plugin.yml, all classes are Java-21 class version 65), but no in-client GUI test was possible in this environment. The inventory-event logic is the highest-risk area and should be smoke-tested on a server before relying on it (forge a book, apply it, shift-click items in and out, close the GUI mid-edit and confirm nothing is lost or duplicated). - Cursor-on-close. Items in input slots are returned on close; an item left on the cursor is handled by the server's own cursor-drop behaviour, which is the normal Bukkit path.
- Potion keyword matching keys on the potion type / effect / display-name
string. Exotic custom potions named oddly might not match a
potion:<keyword>token; a plainpotiontoken always matches any potion. - One enchant per recipe by design. A book minted by the forge holds a single enchant. Applying a multi-enchant book obtained elsewhere will apply all of its compatible enchants in one go (still a flat cost).
Original concept by u/Ciryl_Lynyard on Reddit (r/Minecraft). Built by BeansNToast.


