Skip to content

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

ParameterTypeDefaultDescription
damagedoubleskill powerBase damage
damage_typestring—Damage type id, such as physical or spell
allow_criticalbooleantrueWhether critical hits are allowed
allow_target_dodgebooleanfalseWhether target dodge is allowed
calculate_target_defensebooleantrueWhether target defense is calculated
trigger_mythic_on_damagedbooleanfalseWhether MythicMobs on-damaged behavior is triggered

Example:

yaml
FireBlast:
  Skills:
    - emaki_damage{damage=50;damage_type=spell;allow_critical=true} @target

Skill 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

  1. emaki_attribute_add_tag no longer produces composite effect IDs. effect_prefix=poison used to write one separate poison:<attributeId> record per matched attribute; they now all join a single poison effect group. Configuration deleting a composite ID no longer matches — use emaki_attribute_remove{effect_id=poison} instead, which previously removed nothing and now works
  2. 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

ParameterTypeDefaultDescription
effect_idstring—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
attributestring—Attribute id. An unregistered id returns INVALID_CONFIG and logs a warning. Aliases: attribute_id, attributeid
valuedouble0Temporary value. NaN / ±Inf return INVALID_CONFIG. Aliases: amount, v
durationint—Duration in ticks, must be greater than 0. Aliases: duration_ticks, ticks, d
stack_modestringattribute defaultREPLACE 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
setbooleanfalseWhen 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

ParameterTypeDescription
effect_idstringEffect 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

ParameterTypeDefaultDescription
tagstring—Attribute tag (e.g. DEBUFF), case-insensitive. Aliases: tags, t
valuedouble0Value applied to every matching attribute. Aliases: amount, v
durationint—Duration in ticks, must be greater than 0. Aliases: duration_ticks, ticks, d
effect_prefixstringtag:<tag>Effect group id that every matched attribute joins. Aliases: effectprefix, prefix
stack_modestringper-attribute defaultREPLACE 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

ParameterTypeDescription
tagstringAttribute 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} @target

Condition: emaki_attribute ​

Aliases: emakiattribute_attribute, attribute_value, attribute_resource

ParameterDescription
attributeAttribute id when checking an attribute value
resourceResource id when checking a resource value. Players only
fieldResource field: current (aliases current_value, value), max (alias current_max), default (alias default_max), bonus (alias bonus_max), or percent. Defaults to current
operatorComparison operator
valueComparison value
value_2Second value for between
OperatorAliasesDescription
>gtGreater than
>=gteGreater than or equal (default)
<ltLess than
<=lteLess than or equal
!=<>, neNot 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} true

Mob 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