✨ Enchanted Outlines · 轮廓即宣言
Every enchanted item deserves its own soul color.
Inspired by the Enchantment Outlines resource pack, but pushed to its absolute limit as a native mod.
🎨 One Glance, One Enchantment — Color Is the Language
Tired of the same old purple enchantment glint?
Enchanted Outlines injects a complete
visual semantic system into Minecraft's enchantment framework — every enchantment type is assigned a unique color identity, letting you read the power in your hands in an instant.
💡 Unconfigured enchantments automatically fall back to the default color. Supports per-enchantment customization via config file or in-game UI.
🚀 Eight Core Features
1. 🧬 Procedural Outline Generation — Zero Textures, Full Compatibility
Traditional resource packs require pre-baked outline textures for every item.
Enchanted Outlines uses a
custom core shader to extract the item model's alpha mask in real-time on the GPU, then offsets and renders it in
8 directions.
Original Item Texture → Alpha Mask
↓
8-Directional Offset Render
(N / S / E / W / NE / NW / SE / SW)
↓
Solid Fill → Blend Overlay → Outline
This means:
- ✅ Any modded item works automatically — no pre-drawn textures needed
- ✅ Zero bake time — install and play
- ✅ Zero pixel readback — pure GPU computation
- ✅ Zero cached memory — generated fresh every frame
2. 🌐 Full Rendering Context Coverage
From inventory to battlefield, from ground to sky — the outline is everywhere:
| Scene |
Rendering Method |
Special Handling |
| 🎒 Inventory / Hotbar / Container GUI |
2D Texture Outline |
Supports 3D item preview |
| 🤚 First-person Held |
Vertex Normal Extrusion |
Uniform thickness, surface-hugging |
| 👤 Third-person Held / Dropped Items |
Vertex Normal Extrusion |
Dynamic lighting response |
| 🖼️ Item Frames |
Standard Model Outline |
Orientation-adaptive |
| 🛡️ Worn Armor |
Model Extrusion |
Independent armorThickness config |
| 🦋 Worn Elytra |
Model Extrusion |
Flight pose synchronization |
| 🔱 Thrown Trident |
Approximate Box Model |
Throwing pose tracking |
3. 🎯 BEWLR Smart Approximation
Shields, tridents, and spyglasses use procedural rendering (BEWLR) and lack traditional models for outlining. We've built
geometric approximate box models for them, tracking
blocking (shield raise) and
throwing (trident throw) display transforms in real-time to ensure the outline never misaligns.
⚠️ Fishing rods, maps, and other placeholder BEWLR models lack geometric shapes and are not outlined — this is a technical limitation, not an oversight.
4. 🔄 Animation & Variant Native Correctness
Clock hand rotation, compass needle deflection, NBT-driven variant models, damage-induced model switching — all dynamic changes are
resolved from the same model every frame, so the outline shape stays perfectly synchronized with the item itself.
5. 🔧 Native Config UI — Dark Amber-Gold Theme
No need to manually edit TOML files. Adjust everything in-game through a polished config interface:
- 🎨 Dark + Amber-Gold theme, harmonized with vanilla style
- 📂 Categorized navigation: Enchant Colors / Item Colors / Global Settings / Disabled List
- 📜 Scrollable lists: Supports large numbers of enchantment/item entries
- 💾 Instant save: Changes take effect immediately, no restart required
- 🚫 Blur background disabled: Avoids conflicts with certain UI mods
- 🎛️ Pixel-color glint toggles (
itemPixelColorGlint / armorPixelColorGlint): decide whether the outline blends with the item's per-pixel texture color under shader packs, or stays a pure solid color
6. 🔌 Developer-Friendly API
Other mods can programmatically register rules via the event bus, with
priority over config files:
NeoForge.EVENT_BUS.addListener(OutlineColorEvent.class, event -> {
// Register enchantment color
OutlineColorRegistry.registerEnchantmentColor(
ResourceLocation.fromNamespaceAndPath("mymod", "my_enchant"),
0xFFFFA500 // Amber Gold
);
// Register item override color
OutlineColorRegistry.registerItemColor(
ResourceLocation.fromNamespaceAndPath("mymod", "magic_sword"),
0xFF00FF00 // Magic Green
);
// Register per-item thickness (overrides global armorThickness)
OutlineColorRegistry.registerItemThickness(
ResourceLocation.fromNamespaceAndPath("mymod", "big_axe"),
3
);
// Disable outline for specific item
OutlineColorRegistry.disableItem(
ResourceLocation.fromNamespaceAndPath("mymod", "special_item")
);
});
7. ⚡ Pure Client-Side — Plug and Play
- 🚫 Zero server-side code
- 🚫 Zero network packets
- ✅ Join any multiplayer server
- ✅ Singleplayer / Multiplayer / Realm compatible
8. 🧩 Seamless Compatibility Ecosystem
| Compatibility Type |
Status |
Notes |
| Custom Model Mods (OptiFine / EMF / ETF) |
✅ Fully Compatible |
Shader-level processing, no texture dependency |
| UI Beautification Mods |
✅ Compatible |
Blur background disabled to avoid conflicts |
| Other Enchantment Visual Mods |
⚠️ Test Recommended |
May produce overlay effects |
| Shader Packs (Iris / Oculus) |
✅ Compatible |
Runtime detection via reflection (no hard dependency); active packs use a built-in entity_translucent_emissive fallback so world outlines stay bright & correctly colored — see below |
Shader-Pack (Iris / Oculus) Fallback Mode
Enchanted Outlines
detects shader packs at runtime (reflecting
IrisApi — no compile-time dependency, and behavior is completely unchanged when Iris is installed but no pack is active). When a shader pack is active and
allowUnknownShaders is off (Iris default), custom core shaders get skipped by Iris, so world rendering falls back to a built-in
entity_translucent_emissive RenderType:
- Emissive glow preserved — no lightmap multiplication, so outlines stay full-bright instead of being darkened by the pack's lighting rewrite.
- Shield / trident box models sample a dedicated pure-white texture (not the block atlas) → no more "shields/tridents reflecting nearby block textures"; colors stay pure.
- Flat items (swords/bows/tools) keep the block sheet — the sprite's alpha mask still defines the shape.
- Item frames render uniformly as translucent glow in fallback mode.
Two toggles control how much the item's own pixel colors bleed into the outline:
| Config |
Default |
Effect (shader-pack fallback mode) |
itemPixelColorGlint |
true |
Flat & 3D item outlines blend with the item's per-pixel texture color (outline color × texture color, e.g. red outline on a diamond sword appears yellow-green). false = pure outline color with the exact item shape preserved |
armorPixelColorGlint |
true |
Armor / elytra / trident-entity outlines sample the original texture (shape hugs the single-layer cutout), colored by mixing. false = pure outline color, shape from model geometry |
💡 Without a shader pack (or with allowUnknownShaders enabled), the custom shader keeps shape and color fully separate, so outlines are always pure colors and these toggles have no effect.
When pixel-color blending is off, a "shape texture" is generated on the CPU from the item sprite's original pixels (RGB = outline color, A = original alpha; cached in TextureManager, auto-cleared on resource reload) — so disabling blending never degrades the shape into a rectangle.
⚠️ Known Limitations
| Limitation |
Cause |
Mitigation |
| 🔱 Thrown trident cannot color by enchantment |
Client cannot access pickupItemStack enchantment list |
Falls back to isFoil() check, uses item fixed color / default color |
| 🎣 Fishing rods, 🗺️ maps not outlined |
BEWLR placeholder models lack geometric shapes |
No current solution, does not affect normal use |
| 🛡️ Shields / 🔱 Tridents / 🔭 Spyglasses have approximate outlines |
Box model approximation used |
Still visually distinguishable |
| 🛡️ Shield / trident boxes are always pure white under shader packs |
Box models use the dedicated white texture to avoid Iris's block-atlas lookup |
Acceptable trade-off; still glows and contrasts clearly |
🤝 Contributing & Feedback
- 🐛 Bug Reports: Please include Minecraft version, NeoForge version, and relevant mod list
- 💡 Feature Suggestions: New default enchantment color palettes or rendering contexts welcome
- 🔗 Compatibility Issues: Please provide conflicting mod name and version
Made with 💜 and a lot of shader magic.
Every enchanted item deserves to be seen.
轮廓即宣言 · Enchanted Outlines