Enchanting Rework
PluginLicenseRef-All-Rights-Reserved

Enchanting Rework

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.

11
Downloads
0
Followers
4 weeks ago
Updated
📦
1
Versions

📖About Enchanting Rework

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 -> Thorns
  • any 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 plain potion token 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.