A custom enchanting-table GUI that replaces the vanilla gamble. Forge reusable enchanted books from ingredient blueprints (the ingredients are not consumed), then apply them to gear for a flat level cost. Deterministic and craft-y. 25 default recipes.
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.
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.
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.
/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.
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) |
| Permission | Default | Grants |
|---|---|---|
enchanting.use |
true | Open the GUI, forge books, apply enchants, list recipes. |
enchanting.admin |
op | reload (includes enchanting.use). |
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.
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.
plugin.yml, all classes are Java-21 class version 65), but nopotion:<keyword>potion token always matches any potion.Original concept by u/Ciryl_Lynyard on Reddit (r/Minecraft). Built by BeansNToast.