promotional bannermobile promotional banner

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
35
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.renderArmWithItemItemInHandRenderer.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 ItemInHandRendererMixinmoves 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 related projects