promotional bannermobile promotional banner

[EO] Enchanted Outlines

Each enchantment type is assigned a unique color identifier, allowing you to instantly comprehend the power of the item in your hand
Back to Files

enchanted_outlines-0.1.7.jar

File nameenchanted_outlines-0.1.7.jar
Uploader
LOVE_U987LOVE_U987
Uploaded
Aug 13, 2026
Downloads
72
Size
89.9 KB
Mod Loaders
NeoForge
File ID
8638798
Type
B
Beta
Supported game versions
  • 1.21.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:enchanted-outlines-1643642:8638798"

Learn more aboutΒ Curse Maven

What's new

Enchanted Outlines Changelog 🎨✨


v0.1.7 (2026-08-12)

βš”οΈ Fixed: Handheld Outlines Now Follow Better Combat Attack Animations (issue #2)

  • Issue: When using Better Combat (including Punchy), enchanted outlines didn't follow the weapon's swing animation during attacks β€” the outline stayed at the vanilla static position while the animated weapon body moved away, creating a visible gap.
  • Root cause: Better Combat uses PlayerAnimator to drive attack animations. The player's held item body rendering goes through ItemInHandLayer.renderArmWithItem β†’ ItemInHandRenderer.renderItem, with attack animation transforms (scale/translate/rotate) applied to the PoseStack before renderItem is called by PlayerAnimator. The old outline injected at ItemRenderer.render (8-arg) HEAD β€” when PlayerAnimator version/path differences occurred (first-person THIRD_PERSON_MODEL mode: cancels vanilla first-person, renders via player entity + PlayerItemInHandLayer), the outline saw a different pose than the body β†’ stayed at static position.
  • Fix: New ItemInHandRendererMixin β€” moves player handheld outline earlier to ItemInHandRenderer.renderItem HEAD. This injection point's pose is 100% consistent with the body (already includes Better Combat animation transforms). Outline draws first as underlay, body covers the center afterward β€” perfectly synced with the body. Also uses a static flag to let ItemRendererMixin skip duplicate outline rendering at the 8-arg render HEAD for the same item (avoids "static outline + animated outline" double-drawing).
  • Coverage: First-person (both vanilla ItemInHandRenderer and PlayerAnimator PlayerItemInHandLayer converge here) and third-person (ItemInHandLayer). Dropped items / item frames (GROUND/FIXED) don't go through ItemInHandRenderer, still handled by ItemRendererMixin.

πŸ”„ Fixed: Severe Rendering Errors After Multiplayer Disconnect/Reconnect (issue #1)

  • Issue: First render after joining a server works fine, but after disconnecting from client/server and rejoining, rendering breaks badly; requires entering a singleplayer world first to "fix" it each time.
  • Root cause: Render caches weren't cleared on "resource reload / world entry-exit" β€” joining a server (especially with server resource packs) triggers resource reload, TextureManager destroys all dynamic textures, but worldOutlineRenderTypes / armorRenderTypes and other RenderType caches plus shieldModel / tridentModel proxy model caches were never cleared β†’ old caches reference invalidated resources β†’ outline renders in broken state. Entering singleplayer happened to trigger RegisterShadersEvent which partially cleared caches, "fixing" the symptom.
  • Fix:
    • OutlineRenderer new unified entry invalidateCaches() β€” clears ALL caches (shape textures / brightness / RenderTypes / proxy models / geometry caches);
    • setOutlineShader (resource reload callback) now uses invalidateCaches();
    • EnchantedOutlinesClient listens to NeoForge LevelEvent.Load (entering world) and ClientPlayerNetworkEvent.LoggingOut (leaving server), clearing caches on world entry/exit too β€” covers the "direct connect to server without resource pack doesn't trigger resource reload" scenario.

This mod has no additional files