AI disclosure: this mod was written with AI assistance (DeepSeek Harness) on the author's machine. The author only tested every release in-game.
English | 简体中文
Adds a short description under every enchantment in item tooltips, with the numbers computed from the enchantment's own data — so it always matches what the game actually does at that level.
在原版(及部分模组)附魔名字下方加一行描述,数值直接读游戏数据,当前等级是多少就显示多少。
| Loader | Minecraft | File |
|---|---|---|
| Fabric | 1.21.1 | detailed_enchantment_descriptions-1.0.0+1.21.1.jar |
| Fabric | 1.21.4 | detailed_enchantment_descriptions-1.0.0+1.21.4.jar |
| Fabric | 1.21.8 | detailed_enchantment_descriptions-1.0.0+1.21.8.jar |
| Fabric | 1.21.11 | detailed_enchantment_descriptions-1.0.0+1.21.11.jar |
| NeoForge | 1.21.1 (21.1.265+) | detailed_enchantment_descriptions-neoforge-1.0.0+1.21.1.jar |
Client side only. Fabric needs Fabric API; NeoForge needs nothing else. Mod Menu is optional on Fabric (settings entry point).
- 42 vanilla enchantments covered, each with a one-line description of the current level.
- Numbers come from the game:
Enchantment#getEffect/LevelBasedValueon Fabric andEnchantment#getEffects/LevelBasedValueon NeoForge — no hard-coded tables that go stale. - Config screen (
/ded, key bind or Mod Menu): toggle descriptions / numbers / books, colour picker with HSV wheel, presets and#RRGGBBinput. - Hold-a-key mode: optionally only show descriptions while a key is held (rebindable).
- JSON overrides for any enchantment (including other mods'): drop a file into a resource pack or
the config folder, pick
replace/append/hide. See docs/EXTENDING.md. - Commands:
/ded reload,/ded dump <id>,/ded export <id>. - Chinese and English translations, numbers formatted without trailing
.0. - Respects the vanilla "hide enchantments" flag.
| Sword | Boots |
|---|---|
![]() |
![]() |
| Enchanted book | Colour picker |
![]() |
![]() |
The rounded tooltip frame and smoother text rendering in these screenshots come from other client mods (tooltip styling / font rendering), not from this one.
- Install Fabric Loader or NeoForge for your Minecraft version.
- Put the matching jar (and Fabric API on Fabric) into
mods/. - Remove other enchantment description mods to avoid duplicated lines.
Open with /ded, /dedconfig, the rebindable "Open settings" key, or Mod Menu on Fabric.
Settings are stored in config/detailed_enchantment_descriptions.json.
Any enchantment can be described without code. Put a JSON file in
- a resource pack:
assets/<any namespace>/enchantment_descriptions/<name>.json, or - the config folder:
config/detailed_enchantment_descriptions/enchantments/<name>.json
The config folder wins over resource packs. Run /ded reload after editing the config folder
(F3+T for resource packs). Full schema: docs/EXTENDING.md.
{
"schema": 1,
"enchantment": "minecraft:sharpness",
"mode": "append",
"lines": [
{ "type": "text", "text": "锋利:这把武器更锋利了。" }
]
}Fabric (one jar per version; writes into ../dist/):
node tools/build-version.mjs 1.21.1 1.21.4 1.21.8 1.21.11NeoForge 1.21.1 (writes build/libs/):
cd neoforge
gradle build --offlineRequires JDK 21. Version specific Fabric code lives in src/versions/<version>/ and overlays/;
NeoForge sources use Mojang mappings.
- Value effects (
damage,damage_protection,knockback, …): the enchantment's effect list is evaluated at the current level. - Attribute effects (
efficiency,depth_strider,sweeping_edge, …): the attribute bonus is read fromattributes, or fromlocation_changedfor enchantments like Soul Speed. - Damage reduction: every point of
damage_protectionis 4% (capped at 20 points = 80%). - A few values live in vanilla code rather than in enchantment data (for example Flame's 5 seconds); those are documented where they are used.
Inspired by Exact Enchantments by Ronidas (MIT). This is an independent reimplementation for newer Minecraft versions; no code was copied.
MIT.
Hi everyone! This is my very first open-source project, and I am still a beginner.
I want to be completely upfront: a vast majority of this project was generated with the help of AI. Because of this, there might be some flaws, unpolished code, or things that aren't perfectly implemented.
I'm sharing this to learn and improve. Any feedback, suggestions, or pull requests are highly appreciated. Please bear with me as I continue to learn and fix things. Thanks for visiting!



