English
MythicMobs Integration
EmakiAttribute integrates with MythicMobs: attribute damage mechanics, temporary attribute mechanics, attribute conditions, and mob attribute configuration. Write each section's example into your MythicMobs config; parameters and return values follow the tables. Prerequisite: MythicMobs is installed and loaded (soft-dependency behavior is noted below)
NOTE
MythicMobs is a soft dependency. If it is not installed, related features are skipped
Skill mechanic: emaki_damage
Aliases: emakiattribute_damage, attribute_damage
| Parameter | Type | Default | Description |
|---|---|---|---|
damage | double | skill power | Base damage |
damage_type | string | — | Damage type id, such as physical or spell |
allow_critical | boolean | true | Whether critical hits are allowed |
allow_target_dodge | boolean | false | Whether target dodge is allowed |
calculate_target_defense | boolean | true | Whether target defense is calculated |
trigger_mythic_on_damaged | boolean | false | Whether MythicMobs on-damaged behavior is triggered |
Example:
yaml
FireBlast:
Skills:
- emaki_damage{damage=50;damage_type=spell;allow_critical=true} @targetSkill mechanics: temporary attributes
These mechanics target skill targets (@target, @self, etc.) and work on both players and mobs. Lifecycle: temporary attributes are removed automatically on expiry, are not persisted, and are lost on restart
Upgrade notes: timed attribute behaviour changes
emaki_attribute_add_tagno longer produces composite effect IDs.effect_prefix=poisonused to write one separatepoison:<attributeId>record per matched attribute; they now all join a singlepoisoneffect group. Configuration deleting a composite ID no longer matches — useemaki_attribute_remove{effect_id=poison}instead, which previously removed nothing and now works- Multi-group SET (
set=true) on the same attribute now has a defined winner: the last write, no longer dependent on internal hash-map iteration order
Single-attribute skill configuration is unaffected. Also note that low-level refusals (unregistered attribute, invalid stack_mode, NaN) used to still return SUCCESS; they now return INVALID_CONFIG and log a console warning
emaki_attribute_add
Alias: emakiattribute_add. Adds one temporary attribute to the target
| Parameter | Type | Default | Description |
|---|---|---|---|
effect_id | string | — | Effect group id. Several attributes can share one id: they coexist and emaki_attribute_remove clears the whole group. The stack mode only applies when the same attribute is re-applied inside the same group. Aliases: effectid, id |
attribute | string | — | Attribute id. An unregistered id returns INVALID_CONFIG and logs a warning. Aliases: attribute_id, attributeid |
value | double | 0 | Temporary value. NaN / ±Inf return INVALID_CONFIG. Aliases: amount, v |
duration | int | — | Duration in ticks, must be greater than 0. Aliases: duration_ticks, ticks, d |
stack_mode | string | attribute default | REPLACE or STACK. Falls back to the attribute's temporary_stack_mode; any other value returns INVALID_CONFIG instead of silently falling back. Aliases: stackmode, mode |
set | boolean | false | When true, uses overwrite (SET) instead of additive (ADD). Alias: override_value |
A target that is not a LivingEntity returns INVALID_TARGET
emaki_attribute_remove
Alias: emakiattribute_remove. Clears every temporary attribute inside the effect_id group
| Parameter | Type | Description |
|---|---|---|
effect_id | string | Effect group id to clear; every attribute in that group is removed. Returns CONDITION_FAILED when the target carries no such group, and INVALID_TARGET when the target is not a LivingEntity. Aliases: effectid, id |
emaki_attribute_add_tag
Alias: emakiattribute_add_tag. Adds a temporary attribute for every attribute whose tags contain the given tag, placing them all into one effect group, so emaki_attribute_remove with that group id clears the whole set at once
| Parameter | Type | Default | Description |
|---|---|---|---|
tag | string | — | Attribute tag (e.g. DEBUFF), case-insensitive. Aliases: tags, t |
value | double | 0 | Value applied to every matching attribute. Aliases: amount, v |
duration | int | — | Duration in ticks, must be greater than 0. Aliases: duration_ticks, ticks, d |
effect_prefix | string | tag:<tag> | Effect group id that every matched attribute joins. Aliases: effectprefix, prefix |
stack_mode | string | per-attribute default | REPLACE or STACK. Falls back to each attribute's temporary_stack_mode; any other value returns INVALID_CONFIG. Aliases: stackmode, mode |
A target that is not a LivingEntity returns INVALID_TARGET
emaki_attribute_clear_tag
Alias: emakiattribute_clear_tag. Clears every temporary attribute whose attribute carries the given tag
| Parameter | Type | Description |
|---|---|---|
tag | string | Attribute tag, case-insensitive. Aliases: tags, t. A target that is not a LivingEntity returns INVALID_TARGET |
Example:
yaml
CurseStrike:
Skills:
- emaki_attribute_add{effect_id=curse_slow;attribute=movement_speed;value=-2;duration=100} @target
- emaki_attribute_add_tag{tag=DEBUFF;value=-10;duration=100;stack_mode=STACK} @target
Purify:
Skills:
- emaki_attribute_clear_tag{tag=DEBUFF} @targetCondition: emaki_attribute
Aliases: emakiattribute_attribute, attribute_value, attribute_resource
| Parameter | Description |
|---|---|
attribute | Attribute id when checking an attribute value |
resource | Resource id when checking a resource value. Players only |
field | Resource field: current (aliases current_value, value), max (alias current_max), default (alias default_max), bonus (alias bonus_max), or percent. Defaults to current |
operator | Comparison operator |
value | Comparison value |
value_2 | Second value for between |
| Operator | Aliases | Description |
|---|---|---|
> | gt | Greater than |
>= | gte | Greater than or equal (default) |
< | lt | Less than |
<= | lte | Less than or equal |
!= | <>, ne | Not equal |
between | — | Between value and value_2, inclusive and order-independent |
NOTE
Omitting operator or supplying an unrecognized one falls back to >=. There is no dedicated equality operator
yaml
Conditions:
- emaki_attribute{resource=health;field=percent;operator=<;value=30} trueMob attributes
In a MythicMobs mob config file, use the EmakiAttribute section to give a mob attributes:
yaml
FireDragon:
Type: ENDER_DRAGON
Health: 500
EmakiAttribute:
- "physical_attack: 100"
- "physical_defense: 50"
- "spell_attack: 80"
- "health: 500"Every entry must be quoted
EmakiAttribute is a string list. Written unquoted as - physical_attack: 100, YAML parses each entry as a mapping instead of a string, the whole section is skipped, the mob receives no attributes, and nothing is logged
To check: run /ea debug on and enter combat, then look for your attribute IDs in the attacker snapshot. Seeing only default_profile entries means the section was not read
Attribute values support math expressions (parsed by ExpressionEngine). Attributes are synchronized when Mythic mobs spawn, and active Mythic mobs are resynced after MythicMobs reloads
Mythic mob names in damage messages
The entity label in attribute damage messages prefers the MythicMobs definition name: & legacy color codes in that name are converted to MiniMessage before display, so forms such as &c and &l&6 render as colour and bold exactly as they would inside MythicMobs. Only when no MythicMobs name exists does it fall back to the entity's custom name or vanilla name