Attributification [Attribute Unification]

Quick rating

Attributification [Attribute Unification]

No reviews yet

A compatibility mod that unifies similar attributes from different mods to prevent duplication and improve cross-mod compatibility.

QoL & Tweaks
Mod Loaders
Forge
NeoForge
Fabric
Minecraft

Community voices

Reviews

Versions
Loading versions…
Match includes

Click once to include, again to exclude, again to clear

Rating Any
Any 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
Min
Max
Play Status
Reviews
Time Played
hrs+
Verified developers only
Has developer response
List view
Grid view
Compact view
Sort by
Date
Rating
Helpful
Unhelpful
Edited
Sort ascending
Delete this review?

This removes your review from the project. You can write a new review after.

Review submitted for moderation

Your review has been sent to moderators, who will check that it meets our guidelines before it appears publicly.

No reviews yet. Be the first to review this project!

Get it on

Available Platforms

Compatibility

Supported Environments

Dev Environment
Client Required
Server Required

About

Project Details

Type
Mod
License
MIT License
Latest Version
attributification-neoforge-2.0.5+1.21.1.jar
Authors
CurseForge
Modrinth

For authors

Embed Badge

If you're the author of this project, you can embed a live badge anywhere that supports HTML or Markdown. It updates automatically whenever ratings change.

Custom banner text
ModDex rating badge preview

Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.

Identifiers

Platform IDs

CurseForge ID
Modrinth ID

Resources

External Links

Source Issues Wiki Discord

About

Description

Key Features

  • In-Game Configuration GUI – Edit mappings directly in-game with automatic GUI generation
  • Static & Dynamic Mappings – Static mappings use registry aliasing for simple 1:1 conversions (requires restart), dynamic mappings use runtime conversion with full scaling support (reloadable)
  • Attribute Conversion – Converts source attribute modifiers to target attributes using configurable ratios
  • Unidirectional Mode – Control whether source shows virtual values or redirects directly to target
  • Operation Conversion – Transform ADDITION modifiers to MULTIPLY_BASE/MULTIPLY_TOTAL for proper scaling
  • Fallback Support – Maps to secondary attributes if a primary target mod is missing
  • Full Replacement Mode – Completely replaces specific attributes to prevent "double-dipping" balance issues
  • Real-Time Reload – Dynamic mapping changes apply immediately with relog (no full restart needed)
  • Client-Server Sync – Server config automatically syncs to all connected clients

How It Works

Unlike effects which use boolean checks, attributes store numeric values. Attributification handles this by:

  1. Modifier Conversion: Item modifiers are converted from source to target at application time
  2. Virtual Display: /attribute get commands show virtual values calculated from the target (when unidirectional=false)
  3. Attribute Redirection: Source attribute lookups redirect to target attribute
  4. Operation Transformation: ADDITION modifiers can be converted to MULTIPLY_BASE for percentage-based scaling

Unidirectional Mode

Unidirectional = false (default):

  • Source shows virtual value: source = target × equivalence
  • /attribute get source returns calculated value from target
  • Use for most cases where you want visual consistency

Unidirectional = true:

  • Source does NOT show virtual value
  • Direct redirection without multiplication
  • Use when you want source to show target value directly

Supported Mods (Out-of-the-box)

Note: Pre-configured mappings are included only in the Forge version. Fabric users start with an empty config because most target mods in the default mappings are not available on Fabric. You can add your own mappings for Fabric-compatible mods via the in-game GUI or config file.

Configuration

In-Game GUI

Access the configuration GUI through:

  • Fabric: Mod Menu → Attributification → Config button
  • Forge: Mods list → Attributification → Config button

The GUI provides:

  • Visual Editor – Edit all mappings with a user-friendly interface
  • Attribute Suggestions – Dropdown lists of all registered attributes
  • Real-Time Preview – See changes immediately without restarting
  • Field Tooltips – Hover over fields for detailed explanations
  • List Summaries – Quick overview of each mapping in the list

Configuration File

Config location: config/attributification/attributification.toml

The configuration system supports:

  • Static Mappings – Registry aliasing at startup (requires restart, simple 1:1 only)
  • Dynamic Mappings – Runtime attribute conversion (reloadable with relog, supports scaling)
  • Equivalence Ratios – Define exact scaling between different attribute values
  • Operation Conversion – Switch logic between ADDITION and MULTIPLY_BASE/MULTIPLY_TOTAL
  • Unidirectional Mode – Control whether source shows virtual values or redirects directly
  • Full Replacement – Freeze source attribute to prevent double-dipping
  • Fallback Chains – Define multiple target attributes: "primary, fallback1, fallback2"
  • Custom Mappings – Add support for any mod utilizing the standard Minecraft attribute system
  • Automatic Migration – Old configs are automatically converted to the latest format

Migration from Older Versions

When upgrading:

  1. Your old config is automatically converted to the latest format
  2. All your custom mappings are preserved
  3. Old config is backed up with .old extension
  4. No manual action required!
Example 1: Static Mapping (Registry Aliasing)
[[staticMappings]]
sourceAttribute = "spell_power:haste"
targetAttribute = "irons_spellbooks:cast_time_reduction"
**What happens:** - Registry-level aliasing: `spell_power:haste` becomes an alias for `irons_spellbooks:cast_time_reduction` - Simple 1:1 mapping without conversion options - Requires game restart to apply changes - Use only when attributes have identical scales (1:1 ratio) - For attributes with different scales (e.g., 100:1), use dynamic mappings instead
Example 2: Dynamic Mapping with Operation Conversion
[[dynamicMappings]]
sourceAttribute = "spell_power:earth"
targetAttribute = "gtbcs_geomancy_plus:geo_spell_power, irons_spellbooks:nature_spell_power"
equivalence = 3.0
conversionEquivalence = 20.0
unidirectional = false
onlyVisualChange = false
fullReplacement = false
subtractValue = 0.0
operationConversion = "ADDITION_TO_MULTIPLY_BASE"
**What happens:** - Item with `+6 spell_power:earth` ADDITION → converted to `+0.3 geo_spell_power` MULTIPLY_BASE (30% increase) - `/attribute get spell_power:earth` shows virtual value: `geo_spell_power × 3.0` - If GTBC's Geomancy Plus is not installed, falls back to `irons_spellbooks:nature_spell_power` - Unidirectional=false: source shows virtual value calculated from target - Changes apply with relog (no restart needed)
Example 3: Full Replacement to Prevent Double-Dipping
[[dynamicMappings]]
sourceAttribute = "obscure_api:critical_hit"
targetAttribute = "attributeslib:crit_chance"
equivalence = 1.0
conversionEquivalence = 0.0
unidirectional = false
onlyVisualChange = false
fullReplacement = true
subtractValue = 0.0
operationConversion = "DEFAULT"
**What happens:** - Source attribute is "frozen" at base value (modifiers are blocked) - Only target attribute works, preventing both from stacking - `/attribute get obscure_api:critical_hit` shows base value only - Solves balance issues where both attributes would stack for double effect
Example 4: Visual Change Only
[[dynamicMappings]]
sourceAttribute = "some_mod:visual_attribute"
targetAttribute = "minecraft:generic.attack_damage"
equivalence = 1.0
conversionEquivalence = 0.0
unidirectional = false
onlyVisualChange = true
fullReplacement = false
subtractValue = 0.0
operationConversion = "DEFAULT"
**What happens:** - Source attribute is renamed to target without value conversion - Item with `+10 some_mod:visual_attribute` shows as `+10 minecraft:generic.attack_damage` - No modifier conversion, only display name changes - Useful for cosmetic unification

Key Features

  • In-Game Configuration GUI – Edit mappings directly in-game with automatic GUI generation
  • Static & Dynamic Mappings – Static mappings use registry aliasing for simple 1:1 conversions (requires restart), dynamic mappings use runtime conversion with full scaling support (reloadable)
  • Attribute Conversion – Converts source attribute modifiers to target attributes using configurable ratios
  • Unidirectional Mode – Control whether source shows virtual values or redirects directly to target
  • Operation Conversion – Transform ADDITION modifiers to MULTIPLY_BASE/MULTIPLY_TOTAL for proper scaling
  • Fallback Support – Maps to secondary attributes if a primary target mod is missing
  • Full Replacement Mode – Completely replaces specific attributes to prevent "double-dipping" balance issues
  • Real-Time Reload – Dynamic mapping changes apply immediately with relog (no full restart needed)
  • Client-Server Sync – Server config automatically syncs to all connected clients

How It Works

Unlike effects which use boolean checks, attributes store numeric values. Attributification handles this by:

  1. Modifier Conversion: Item modifiers are converted from source to target at application time
  2. Virtual Display: /attribute get commands show virtual values calculated from the target (when unidirectional=false)
  3. Attribute Redirection: Source attribute lookups redirect to target attribute
  4. Operation Transformation: ADDITION modifiers can be converted to MULTIPLY_BASE for percentage-based scaling

Unidirectional Mode

Unidirectional = false (default):

  • Source shows virtual value: source = target × equivalence
  • /attribute get source returns calculated value from target
  • Use for most cases where you want visual consistency

Unidirectional = true:

  • Source does NOT show virtual value
  • Direct redirection without multiplication
  • Use when you want source to show target value directly

Supported Mods (Out-of-the-box)

Note: Pre-configured mappings are included only in the Forge version. Fabric users start with an empty config because most target mods in the default mappings are not available on Fabric. You can add your own mappings for Fabric-compatible mods via the in-game GUI or config file.

Configuration

In-Game GUI

Access the configuration GUI through:

  • Fabric: Mod Menu → Attributification → Config button
  • Forge: Mods list → Attributification → Config button

The GUI provides:

  • Visual Editor – Edit all mappings with a user-friendly interface
  • Attribute Suggestions – Dropdown lists of all registered attributes
  • Real-Time Preview – See changes immediately without restarting
  • Field Tooltips – Hover over fields for detailed explanations
  • List Summaries – Quick overview of each mapping in the list

Configuration File

Config location: config/attributification/attributification.toml

The configuration system supports:

  • Static Mappings – Registry aliasing at startup (requires restart, simple 1:1 only)
  • Dynamic Mappings – Runtime attribute conversion (reloadable with relog, supports scaling)
  • Equivalence Ratios – Define exact scaling between different attribute values
  • Operation Conversion – Switch logic between ADDITION and MULTIPLY_BASE/MULTIPLY_TOTAL
  • Unidirectional Mode – Control whether source shows virtual values or redirects directly
  • Full Replacement – Freeze source attribute to prevent double-dipping
  • Fallback Chains – Define multiple target attributes: "primary, fallback1, fallback2"
  • Custom Mappings – Add support for any mod utilizing the standard Minecraft attribute system
  • Automatic Migration – Old configs are automatically converted to the latest format

Migration from Older Versions

When upgrading:

  1. Your old config is automatically converted to the latest format
  2. All your custom mappings are preserved
  3. Old config is backed up with .old extension
  4. No manual action required!
Example 1: Static Mapping (Registry Aliasing)
[[staticMappings]]
sourceAttribute = "spell_power:haste"
targetAttribute = "irons_spellbooks:cast_time_reduction"

What happens:

  • Registry-level aliasing: spell_power:haste becomes an alias for irons_spellbooks:cast_time_reduction
  • Simple 1:1 mapping without conversion options
  • Requires game restart to apply changes
  • Use only when attributes have identical scales (1:1 ratio)
  • For attributes with different scales (e.g., 100:1), use dynamic mappings instead
Example 2: Dynamic Mapping with Operation Conversion
[[dynamicMappings]]
sourceAttribute = "spell_power:earth"
targetAttribute = "gtbcs_geomancy_plus:geo_spell_power, irons_spellbooks:nature_spell_power"
equivalence = 3.0
conversionEquivalence = 20.0
unidirectional = false
onlyVisualChange = false
fullReplacement = false
subtractValue = 0.0
operationConversion = "ADDITION_TO_MULTIPLY_BASE"

What happens:

  • Item with +6 spell_power:earth ADDITION → converted to +0.3 geo_spell_power MULTIPLY_BASE (30% increase)
  • /attribute get spell_power:earth shows virtual value: geo_spell_power × 3.0
  • If GTBC's Geomancy Plus is not installed, falls back to irons_spellbooks:nature_spell_power
  • Unidirectional=false: source shows virtual value calculated from target
  • Changes apply with relog (no restart needed)
Example 3: Full Replacement to Prevent Double-Dipping
[[dynamicMappings]]
sourceAttribute = "obscure_api:critical_hit"
targetAttribute = "attributeslib:crit_chance"
equivalence = 1.0
conversionEquivalence = 0.0
unidirectional = false
onlyVisualChange = false
fullReplacement = true
subtractValue = 0.0
operationConversion = "DEFAULT"

What happens:

  • Source attribute is "frozen" at base value (modifiers are blocked)
  • Only target attribute works, preventing both from stacking
  • /attribute get obscure_api:critical_hit shows base value only
  • Solves balance issues where both attributes would stack for double effect
Example 4: Visual Change Only
[[dynamicMappings]]
sourceAttribute = "some_mod:visual_attribute"
targetAttribute = "minecraft:generic.attack_damage"
equivalence = 1.0
conversionEquivalence = 0.0
unidirectional = false
onlyVisualChange = true
fullReplacement = false
subtractValue = 0.0
operationConversion = "DEFAULT"

What happens:

  • Source attribute is renamed to target without value conversion
  • Item with +10 some_mod:visual_attribute shows as +10 minecraft:generic.attack_damage
  • No modifier conversion, only display name changes
  • Useful for cosmetic unification

Screenshots

Gallery

  • eidolon mod
    eidolon mod
  • jewelry mod
    jewelry mod
  • ranged weapon api
    ranged weapon api
  • paladins mod
    paladins mod
  • ranged weapon api
    ranged weapon api
  • eidolon mod
    eidolon mod
  • jewelry mod
    jewelry mod
  • paladins mod
    paladins mod

Versions

Files

Relations

Project Relations

More like this

Similar Mods

Suggestions use data such as tags, dependencies, dependents, descriptions, titles, and more to rank how much they overlap with this mod.

On ModDex

Community snapshot

0
Ratings
0
Followers
1
In stacks

By the numbers

Statistics

~16,000
Total Downloads
CurseForge
~13,000
Modrinth
~3,000
Last Updated
CurseForge
Modrinth
Created
CurseForge
Modrinth
Last synced
When ModDex last fetched this project from CurseForge or Modrinth. Every project is re-checked on a schedule, and any project that ships a new file is synced automatically within hours of the release.
New file updates sync automatically
How syncing works