Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details
Attribute calculation is one of the easiest parts of an RPG server to lose control of. Once equipment contains attack, critical chance, penetration, health, mana, recovery, dodge, and life-steal, a server without a unified aggregation system will let melee attacks, projectiles, spells, skills, and item stats calculate independently. The result is that the same item behaves differently in different systems, and players cannot understand which attribute actually produced the effect.
Another common problem appears when progression lines become longer. Attribute points, parent attributes, child-attribute bonuses, client health display, and actual resource calculation can start conflicting with one another. Players may see health values too large for a comfortable client display while the server still needs to preserve real underlying resource values. Projectile damage also needs to preserve the attributes at launch time instead of recalculating from equipment that may have changed before impact.
EmakiAttribute brings attributes, resources, and damage types into one calculation system. Attribute payloads written by Item, Forge, Strengthen, Gem, Skills, and other modules are aggregated by Attribute. Server administrators define attribute structures, damage rules, and GUI point-allocation flows through configuration files, then validate the player's real values through diagnostic commands.
Core Features
- Complete attribute aggregation: Attribute aggregation participates in attack, defense, critical chance, penetration, health, mana, recovery, dodge, life-steal, and related rules. Attribute payloads written by Item, Forge, Strengthen, Gem, and Skills are aggregated by Attribute, avoiding duplicate calculations across modules.
- Parent attributes and GUI point allocation:
attributes/defines base attributes, parent attributes, child-attribute bonuses, display formats, and vanilla attribute mappings.gui/attribute_points.ymlprovides the point-allocation and reset interface with separate permissions for normal use and administrator operations. - Configurable damage types:
damage_types/supports physical, projectile, and spell damage rules. Each type can be organized around attacker attributes, target defense, critical hits, penetration, and special rules, allowing different combat sources to have independent balancing curves. - Resource actions and display control: Resource actions manage health, mana, and similar resource changes.
health_display_scaling.enabledcan compress the client-side health display while preserving real server-side resource calculation. - Full diagnostic toolkit:
/ea lintchecks configuration,/ea preview [player] [slot]previews the attributes of a selected slot,/ea dump [player]outputs aggregated player attributes, and/ea resync allresynchronizes attribute state for the whole server.
Feature Overview
Attribute definition and display
attributes/: base attributes, parent attributes, child-attribute bonuses, display formats, and vanilla attribute mappings.attribute_balance.yml: attribute balancing, numerical curves, and resource-related configuration.lore_formats/: how attributes are displayed in item Lore.- Utility commands:
/ea preview [player] [slot],/ea dump [player].
Damage and resource calculation
damage_types/: physical, projectile, and spell damage types.conditions/: conditions for damage and attribute effects.- Projectile snapshot mechanism: ranged damage remains tied to the attributes at launch time.
- Utility commands:
/ea lint,/ea resync all.
Attribute points and player profiles
profiles/: player attribute profiles and configuration groups.gui/attribute_points.yml: attribute point allocation, reset, buttons, and display.- Resource display mechanism:
health_display_scaling.enabled. - Utility commands:
/ea points open,/ea reload.
Configuration and Mechanics
attributes/ is the root configuration directory of Attribute. Administrators define each attribute ID, display name, display format, base meaning, parent relationship, and child-attribute bonus there. Parent attributes convert progression attributes such as Strength, Agility, or Intelligence into combat attributes such as attack, critical chance, dodge, or mana. Child-attribute bonuses let player point allocation and equipment stats enter one unified calculation chain. Vanilla-attribute mapping handles the parts related to client-side vanilla attributes so that what players see and what the server calculates stay aligned.
damage_types/ determines how damage is applied. Physical damage can read attack, target defense, critical chance, and penetration. Projectile damage locks the attribute state at launch time through snapshots. Spell damage can independently use spell attack, spell defense, or other custom attributes. After administrators configure attacker attributes, target defense, critical hit, penetration, and rules for each damage type, combat sources only need to select the corresponding damage type; Attribute performs the final calculation.
The attribute-point system is carried by gui/attribute_points.yml. Administrators can control the GUI title, slots, buttons, pointable attributes, reset flow, and display text. Normal players use the point interface through emakiattribute.points, while administrators use emakiattribute.points.admin for higher-privilege operations. Before launch, run /ea lint, then execute /ea dump and /ea preview on representative players to confirm that equipment, gems, strengthening, skills, and point allocation all enter the same attribute aggregation.
health_display_scaling.enabled addresses client-display problems on high-health servers. When enabled, the health shown to the client can be compressed while the real underlying resource remains calculated by Attribute. Ranged combat also uses projectile snapshots so arrows, thrown items, or other ranged sources keep the launch-time attributes instead of changing because the player swapped equipment before impact.
Quick Start
- Place EmakiCoreLib and EmakiAttribute runtime Jars into
plugins/, then start the server to generate default configuration. - Review
attributes/,damage_types/,attribute_balance.yml, andgui/attribute_points.yml, then define base attributes, parent attributes, and damage types first. - Run
/ea lintto check attributes, damage types, Lore display, and GUI configuration. - Use
/ea preview [player] [slot]and/ea dump [player]to verify equipment slots, aggregated player attributes, and resource display. - Open
/ea points openand test point allocation, reset, resource changes, melee damage, projectile damage, and spell damage branches.
Compatibility and Dependencies
- Runtime baseline:
Paper 1.21.8+,Java 25,Folia supported. - Server installation: place the EmakiAttribute runtime Jar into
plugins/. Do not install*-api.jar; API Jars are only for developers asprovided/compileOnlydependencies. - Required dependency:
EmakiCoreLib. - Optional integrations: MythicMobs, PlaceholderAPI, MMOItems. They are enabled only when the corresponding plugins are installed.
- Main commands and aliases:
/emakiattribute,/eattribute,/ea. - Key permissions:
emakiattribute.use,emakiattribute.reload,emakiattribute.resync,emakiattribute.debug,emakiattribute.points,emakiattribute.points.admin,emakiattribute.admin. - Main configuration entries:
config.yml,attribute_balance.yml,attributes/,damage_types/,conditions/,lore_formats/,profiles/,gui/attribute_points.yml.
Get Started
Start with a small set of base attributes and one physical damage type, then gradually connect projectile damage, spell damage, attribute points, and cross-plugin equipment payloads.


