English
EmakiAttribute
EmakiAttribute handles real stats, resources, and combat resolution. You use it to define RPG attributes, damage types, and conditions, and it exposes PDC attribute APIs for other modules (PDC means plugin-defined data, the hidden fields a plugin writes onto an item). One rule to remember: equipment stats must be written into the Attribute payload, not only as lore text
Basic information
| Item | Value |
|---|---|
| Module version | 4.8.7 |
| Main command | /emakiattribute |
| Aliases | /eattribute, /ea |
| Hard dependency | EmakiCoreLib |
| Soft dependencies | MythicMobs, PlaceholderAPI, MMOItems, BetterHUD |
| Default permissions | emakiattribute.use and emakiattribute.points default to true; other administrative permissions default to op |
What it solves
When vanilla attributes are not enough for RPG combat, you can define your own stat and damage logic with EmakiAttribute, for example:
- physical, spell, and projectile attack
- physical, spell, and projectile defense
- critical chance, critical damage, and critical resistance
- armor penetration, spell penetration, and true damage
- health, mana, regeneration, dodge, lifesteal, attack speed, movement speed, and vanilla attribute mapping
These stats come from PDC payloads written by Item, Forge, Strengthen, Gem, Skills, or other modules. Attribute aggregates and calculates them for you, so no plugin needs to build its own stat system
Default runtime folder
text
plugins/EmakiAttribute/
├── config.yml
├── attribute_balance.yml
├── attributes/
├── conditions/
├── damage_types/
├── lore_formats/
├── presets/
├── gui/
├── lang/
└── data/| Path | Purpose |
|---|---|
attributes/ | Attribute definitions |
damage_types/ | Damage types such as physical, projectile, and spell |
conditions/ | Attribute read conditions (PDC read rules) |
lore_formats/ | How attributes are displayed in lore |
attribute_balance.yml | Attribute balance semantics and power score weights |
presets/ | Attribute preset definitions |
gui/ | Attribute points GUI configuration (attribute_points.yml) |
lang/ | Language files (bundled zh_CN.yml and en_US.yml) |
data/ | Runtime data, for example data/parent_attributes/<UUID>.yml |
Typical workflow
- Define attributes in
attributes/ - Define display formats in
lore_formats/ - Configure damage calculation in
damage_types/ - Let Item / Forge / Strengthen / Gem write attribute payloads
- Attribute aggregates player stats after equipment changes or resync
- Combat uses damage type, attacker stats, and target stats to calculate the result
- Messages, action bars, PlaceholderAPI, or debug output can show the result
Relations with other modules
| Module | Integration |
|---|---|
| EmakiItem | Items can carry base attributes and set attributes |
| EmakiForge | Forge results can write extra attributes |
| EmakiStrengthen | Strengthen stars can add attributes |
| EmakiGem | Gems can provide attributes |
| EmakiSkills | Skills can read or consume Attribute resources and check stat requirements |
| MythicMobs | Can participate in skill or mob combat ecosystems |
| PlaceholderAPI | Exposes player stats, resources, or combat data |
Pages
| Page | Content |
|---|---|
| Configuration | Main config, attribute folders, damage folders, condition folders, and troubleshooting order |
| Attributes | Attribute fields, display formats, and ID design |
| Scaling Curves | Thresholds, curves, and balancing advice for high stat values |
| Damage | Multi-stage damage pipeline, hard lock, hit feedback, and recovery config |
| Conditions | Equipment conditions, attribute conditions, and cross-module conditions |
| Lore Formats | Lore display templates and read patterns |
| Commands | /ea commands, lint, preview, dump, source, trace, and debug |
| Placeholders | PlaceholderAPI output and damage message template variables |
| MythicMobs | Damage mechanic, temporary attribute mechanics, and attribute condition |
| CoreLib Actions | Action IDs and parameters registered by Attribute |
| API | EmakiAttributeApi, PdcAttributeAccess, and integration contracts |
| Events | Public Bukkit events |
| Damage Event | EmakiAttributeDamageEvent in detail |
Suggested configuration order
- Start the server with default attributes and confirm the module loads
- Add or edit one attribute file, then run reload / lint
- Write that attribute onto one test item
- Use preview / dump commands to confirm the attribute is read
- Then configure damage types and combat tests
config.yml
The full field list, bundled defaults, and copyable examples all live in Configuration. Here is what the common sections control:
default_profile: default resources and attribute baselinesattribute_sources: whether item attributes are read from Lore / PDC and whether both sources must matchvanilla_event_damage: perfect takeover versus compatibility re-application of vanilla damageshield: whether shield blocking is resolved by vanilla or by EAallowed_damage_causes: the allowlist mapping BukkitDamageCausevalues to attribute damage typesscaling_curves: diminishing-return rules above a threshold; empty by default
Attribute actions
EmakiAttribute registers attribute damage, temporary attribute, resource, tag, and synchronization actions into CoreLib. You will find every action ID, parameter, and example in CoreLib Actions
Common examples:
yaml
actions:
- 'attribute_damage amount=50 type=physical'
- 'attribute_add effect_id=forge_buff attribute=physical_attack value=20 duration_ticks=10s'
- 'attribute_resource_consume resource=mana amount=20'
- 'attribute_sync all=false'