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.6.jar

File nameenchanted_outlines-0.1.6.jar
Uploader
LOVE_U987LOVE_U987
Uploaded
Aug 9, 2026
Downloads
110
Size
86.0 KB
Mod Loaders
NeoForge
File ID
8609073
Type
R
Release
Supported game versions
  • 1.21.1

Curse Maven Snippet

NeoForge

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

Learn more about Curse Maven

What's new

Enchanted Outlines Changelog 🎨✨


v0.1.6 (2026-08-09)

⚔️ Fixed: Cataclysm Weapon Outline Compatibility (Mapping Table + Pre-Transform Classification)

  • Issue: In a 240-mod pack, most Cataclysm weapons had no outlines (only Brontes Hammer worked); Void Assault Shoulder Cannon, Wrath of the Desert, etc. had their outlines rendered behind the player, invisible.
  • Root cause 1 (field name mismatch → no outline): Cataclysm's CMItemstackRenderer static model field names don't follow the uniform <ITEM_ID_UPPERCASE>_MODEL convention:
    • wither_assault_shoulder_weapon / void_assault_shoulder_weapon share the abbreviation WASW_MODEL (not WITHER_/VOID_ASSAULT_SHOULDER_WEAPON_MODEL);
    • wrath_of_the_desert (Wrath of the Desert) = WRATH_OF_DESERT_MODEL (missing _THE_ from registry ID);
    • soul_render (Soul Render) / the_annihilator (The Annihilator) = SOUL_RENDER / THE_ANNIHILATOR (no _MODEL suffix). Reflection couldn't find fields by convention name → findBewlrModel returns null → outline completely missing.
  • Root cause 2 (one-size-fits-all pre-transform → offset/behind): All Cataclysm items were using translate(0.5,0.5,0.5)+scale(1,-1,-1) pre-transform, but bytecode inspection (Cataclysm 1.21.1-3.32) revealed Coral Spear / Coral Bardiche / Black Steel Round Shield / Azure Sea Stone Shield branches only have scale(1,-1,-1) (no centering translation) → outline gets an extra 0.5 offset, misaligned behind the body.
  • Fix:
    • OutlineRenderer added Cataclysm weapon precise adapter table CATACLYSM_WEAPON_SPECS (item registry ID → model field name + texture field name + pre-transform category), covering 5 special field names + 4 pure-flip branches; unlisted weapons (Brontes Hammer etc.) still use generic <ID>_MODEL convention + centered flip, compatible with future versions.
    • BewlrModel added two new pre-transform types: CM_FLIP (pure scale(1,-1,-1), for Coral Spear etc.) and CM_CENTER_FLIP_TOP (translate(0.5,1.5,0.5)+scale(1,-1,-1), for EMP / Altar / Anvil block-like items; auto-corrected by model class package .model.block., also fixes block-like BEWLR item outline Y-offset by 1 block).
    • Texture field reading: mapping table explicitly specifies (SOUL_RENDER has no _MODEL suffix, generic replace can't derive _TEXTURE, must be explicit).

🎨 Fixed: Compatible with neoforge:separate_transforms Multi-View Models (Resource Packs Changing 3D to 2D)

  • Issue: After loading third-party community resource packs (e.g. XIMStudio), Cataclysm weapons in inventory changed from 3D to 2D, some 3D models got replaced → outlines completely disappeared.
  • Root cause: Resource packs use neoforge:separate_transforms loader to split items into multi-view sub-models (GUI/FIXED = 2D flat item/generated, in-hand = 3D builtin/entity base). Its baked model SeparateTransformsModel.Baked has three traps:
    1. isCustomRenderer() always returns false (doesn't delegate to base) → old outline never triggers BEWLR 3D branch;
    2. getQuads() returns base (builtin/entity placeholder) quads = empty geometry → outline has no vertices to draw → completely no outline;
    3. getTransforms() returns NO_TRANSFORMS → transform chain broken. Meanwhile the body ItemRenderer.render calls model.applyTransform(context) before rendering to switch sub-models by view → body displays normally, outline can't get geometry. Violates the iron law: "match the outline to the actual render."
  • Fix: ItemRendererMixin / GuiGraphicsMixin now also calls model.applyTransform(context, pose, leftHand) before outline rendering to get the same view sub-model as the body:
    • GUI/FIXED → 2D flat sub-model → flat outline (aligns with body icon);
    • In-hand → 3D base → BEWLR 3D inflated shell (aligns with body in-hand). Normal models' applyTransform default implementation = original getTransforms().getTransform().apply(), behavior unchanged; isCustomRenderer() judgment based on sub-model.

May your outlines be ever colorful and perfectly aligned. 🌈⚔️

This mod has no additional files