Skip to content

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 ​

ItemValue
Module version4.8.7
Main command/emakiattribute
Aliases/eattribute, /ea
Hard dependencyEmakiCoreLib
Soft dependenciesMythicMobs, PlaceholderAPI, MMOItems, BetterHUD
Default permissionsemakiattribute.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/
PathPurpose
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.ymlAttribute 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 ​

  1. Define attributes in attributes/
  2. Define display formats in lore_formats/
  3. Configure damage calculation in damage_types/
  4. Let Item / Forge / Strengthen / Gem write attribute payloads
  5. Attribute aggregates player stats after equipment changes or resync
  6. Combat uses damage type, attacker stats, and target stats to calculate the result
  7. Messages, action bars, PlaceholderAPI, or debug output can show the result

Relations with other modules ​

ModuleIntegration
EmakiItemItems can carry base attributes and set attributes
EmakiForgeForge results can write extra attributes
EmakiStrengthenStrengthen stars can add attributes
EmakiGemGems can provide attributes
EmakiSkillsSkills can read or consume Attribute resources and check stat requirements
MythicMobsCan participate in skill or mob combat ecosystems
PlaceholderAPIExposes player stats, resources, or combat data

Pages ​

PageContent
ConfigurationMain config, attribute folders, damage folders, condition folders, and troubleshooting order
AttributesAttribute fields, display formats, and ID design
Scaling CurvesThresholds, curves, and balancing advice for high stat values
DamageMulti-stage damage pipeline, hard lock, hit feedback, and recovery config
ConditionsEquipment conditions, attribute conditions, and cross-module conditions
Lore FormatsLore display templates and read patterns
Commands/ea commands, lint, preview, dump, source, trace, and debug
PlaceholdersPlaceholderAPI output and damage message template variables
MythicMobsDamage mechanic, temporary attribute mechanics, and attribute condition
CoreLib ActionsAction IDs and parameters registered by Attribute
APIEmakiAttributeApi, PdcAttributeAccess, and integration contracts
EventsPublic Bukkit events
Damage EventEmakiAttributeDamageEvent in detail

Suggested configuration order ​

  1. Start the server with default attributes and confirm the module loads
  2. Add or edit one attribute file, then run reload / lint
  3. Write that attribute onto one test item
  4. Use preview / dump commands to confirm the attribute is read
  5. 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 baselines
  • attribute_sources: whether item attributes are read from Lore / PDC and whether both sources must match
  • vanilla_event_damage: perfect takeover versus compatibility re-application of vanilla damage
  • shield: whether shield blocking is resolved by vanilla or by EA
  • allowed_damage_causes: the allowlist mapping Bukkit DamageCause values to attribute damage types
  • scaling_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'