EmakiAttribute | RPG Attributes and DamageСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачать
ВЕРСИИ (22)
release
Emaki Attribute 4.8.0
4.8.031 авг. 2026 г.70Minecraft: 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.2, 26.2folia, paper, purpur
Что нового
### Added
- Effect-group temporary attributes with explicit combination and replacement policies.
- Registrable derived-attribute providers and third-party equipment-slot providers.
### Changed
- Snapshot collection now uses registered slots and enforces declared value ranges.
- Damage stages, PDC-source lifecycle, and live-entity operations follow the current role, formula, and owner-thread contracts.
### Fixed
- Restored MythicMobs targeter support for `emaki_damage`.
- Made perfect-takeover pending-event tracking safe for concurrent region execution.
### Upgrade Notes
- Back up data, run the CoreLib PDC migration dry-run, and verify custom MythicMobs skills and provider registrations after updating.
release
Emaki Attribute 4.7.0
4.7.011 авг. 2026 г.40Minecraft: 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.2, 26.2folia, paper, purpur
Что нового
### Added
- Damage indicators: floating numbers above the target, on by default. Four triggers under `damage_indicator.triggers` cover `normal` hits, `critical` hits, `heal` and `dodge`. Vanilla combat does not roll for dodges on its own, so a dodge indicator only appears once the target carries a dodge attribute such as `dodge_chance` and actually evades a hit; the bundled `attributes/dodge_chance.yml` defaults to `0`. Text templates live in the language file under `damage.indicator`, with `%damage%` for damage and `%amount%` for healing.
- Indicators arc through the air and scale up on entry, down on exit. The animation is client-side interpolation, so the indicator never moves and costs nothing extra. `damage_indicator.motion` sets `speed`, `gravity`, keyframe spacing via `step_ticks`, and throw direction via `direction.mode` (`random`, `fixed`, `away_from_attacker`).
- Per-trigger overrides: the top level of `damage_indicator` holds the defaults and each trigger only writes the keys it changes. In the shipped defaults criticals fly higher and faster, healing drifts straight up.
- Anti-spam keys `merge_window_ms` (default `500`), which merges repeated damage on one target into a single number, and `max_per_target_per_second` (default `4`). Matching `merge_window_ms` to `same_signature_ignores_invulnerability.window_ms` makes a multishot volley show one total instead of three numbers. `0` disables either limit.
- `damage_indicator.ignored_causes`, which defaults to blocking `FIRE_TICK`, `POISON`, `WITHER`, `DROWNING`, `FREEZE`, `SUFFOCATION` and `STARVATION`, since damage over time resolves every tick.
- `damage_indicator.visible_to` (`involved` / `all`), which applies on CoreLib's packet display backend. On the real-entity backend indicators are real entities visible to everyone nearby and the key has no effect.
- Attribute-based shield blocking via `shield.mode` (`vanilla` default, `attribute`). `vanilla` keeps vanilla behaviour: a raised shield removes the hit entirely and calculated attack, critical and penetration values do not apply. `attribute` zeroes the vanilla reduction and resolves blocking through a `block` stage in the damage type.
- Attributes `block_rate` (chance a raised shield blocks) and `block_reduction` (percentage of damage a successful block removes), with baselines under `default_profile.attributes` defaulting to `100` each, i.e. a guaranteed full block that matches vanilla feel. Shield item attributes stack on top of the baseline. `block_rate: 0` means blocking never triggers at all.
- `shield.require_facing` (default `true`) and `shield.facing_angle_degrees` (default `180`, equivalent to vanilla). Vanilla blocking checks facing itself, so once the plugin takes over the check must be enabled or blocking works in all directions. Environmental damage has no direction and never counts as frontal.
- Bundled `attributes/block_rate.yml` and `attributes/block_reduction.yml`, plus a `block` stage in the bundled `damage_types/physical.yml` and `damage_types/projectile.yml`.
- A `variables:` block on damage stages: define your own variables in a stage and reference them from `expression`. Values can be numbers, expressions or random ranges, for example `soft_cap: 120` with `overflow: "max(0, %input% - %soft_cap%)"`, then `expression: "%input% - %overflow% * 0.5"`. Your names override built-in variables; a random variable rolls once per expression but rerolls per stage and per hit.
- BetterHUD 2.0.0 soft dependency, connected automatically when present, with 11 triggers you can bind any popup or HUD element to from BetterHUD's own config: `emaki_melee_hit`, `emaki_ranged_hit`, `emaki_sweep_hit`, `emaki_critical_hit`, `emaki_kill`, `emaki_damage_taken`, `emaki_dodge_success`, `emaki_shield_block`, `emaki_resource_consumed`, `emaki_resource_low`, `emaki_point_allocated`.
- `ResourceDefinitionView`, returned by `catalog().resources()`.
### Changed
- **`scaling_curves` now takes effect, so review your values before upgrading a live server.** The section has been in `config.yml` for a while but the plugin never read it: the curve list stayed empty and attribute calculation returned the original value, so the feature effectively did not exist. Anything you already wrote will apply for the first time. This is the only change here that alters player numbers. The default is empty, so servers that never configured it are unaffected.
- Two `scaling_curves` descriptions corrected against real behaviour. `sqrt` is weaker than `logarithmic` at the same `factor`, and amplifies rather than decays when the excess is below `factor`. `factor` differs per curve: `logarithmic` and `sqrt` divide by it, so `0` or a negative value is lifted to `1`, while for `piecewise_linear` it is the retained share of the excess, where `0` legitimately drops the whole excess and is not lifted.
- An unrecognised `curve_type` falls back to `logarithmic` and the config precheck warns which attribute and which value, instead of quietly using the wrong curve. `piecewise_linear` is the single discount "excess times `factor`" and does not support multiple segments.
- Actions use a new syntax, and most of it is rewritten for you. On first startup CoreLib rewrites the config files of every Emaki plugin under `plugins/`, once only. Each edited file keeps the original beside it with a `.legacy-backup` suffix; a line that cannot be converted leaves your config untouched and goes into a `.v2-failed` file, with the file and line listed in the console.
- `attributedamage` is renamed to `attribute_damage` and is **not** covered by automatic rewriting, so rename it by hand. The old name is gone and a config still using it will not run that action. Skill configs using the action need the same rename.
- The other twelve attribute actions keep their names (`attribute_add`, `attribute_set`, `attribute_remove`, `attribute_tag_add`, `attribute_tag_remove`, `attribute_tag_clear`, `attribute_resource_add`, `attribute_resource_set`, `attribute_resource_remove`, `attribute_resource_consume`, `attribute_sync`, `attribute_refresh`), but the lines holding them are not rewritten either. Old placeholders inside them need changing by hand: `%player%` / `%player_name%` to `%caster.name%`, `%player_uuid%` to `%caster.uuid%`, `%target_name%` to `%target.name%`, and so on for the remaining `%player_*%` / `%target_*%` keys.
- The console output of `/emakiattribute dump` prints the signature and attribute values as a heading with indented lines. They previously required a mouse hover, which the console cannot do. Players in game still get the hover version.
- Config precheck problem lines are coloured by severity (yellow for warnings, red for errors), and loaded attributes are numbered in the console listing.
- For developers: the `EmakiAttributeApi` facade is reworked. `available()`, `readResourceCurrent`, `readResourceMax`, `consumeResource`, `readAttributeValue`, `scheduleEquipmentSync`, `applyDamage`, `registerItemContributionGate` and `isItemContributionActive` are replaced by three accessors: `catalog()` (reads), `operations()` (state changes) and `extensions()` (extension points and PDC). `status()` replaces `available()` and returns `ApiStatus`. The accessors return no-op implementations when the plugin is absent instead of throwing, and business methods return `EmakiResult<T>`. `catalog()` also offers `attributeIds()`, `damageTypeIds()`, `itemSnapshot` and `combatSnapshot`; `operations()` adds `calculateDamage` and `resyncPlayer`.
- For developers: events moved to `api.event`, extension points (`AttributeContribution`, `AttributeContributionProvider`, `ItemContributionGate` and their registration handles) to `api.extension`, and models (`AttributeSnapshot`, `DamageContext`, `DamageContextVariables`, `DamageResult`, `PdcAttributePayload`, `AttributeApiValues`) to `api.model`.
### Fixed
- Maximum health pinned to the plugin's own figure, ignoring health-cap bonuses from every other source. It affected any server running other plugins or health-boost effects: a Health Boost potion that did not lengthen the health bar, max health from another plugin doing nothing, vanilla-mapped health caps swallowed, and health pushed back down to the plugin's figure with no way to heal past it. The ceiling now follows the max health actually in effect on the server.
- External healing being reverted: `/heal` restoring full health then dropping back, golden apples having no effect, and health on login reset to the pre-logout value. Current health was derived from the plugin's own stored record, and changes from other plugins, commands or vanilla food regeneration were never observed, so the next sync or regeneration tick wiped them. Current health now follows the player's actual health.
- Health sync reviving a dead player and stranding them on the death screen: an unresponsive respawn button, or being alive server-side while the client stays on the death screen until relogging. Between dying and respawning, natural regeneration kept writing a positive health value back. Nothing is written during that window now, and respawning still restores full health.
### Removed
- JS scripting, with no automatic conversion, so your own `.js` scripts stop working and need redoing as config actions. For this plugin that covers JS damage hooks, JS-registered attribute definitions and providers, and JS damage types and pipelines. The bundled samples `scripts/examples/attribute_buff.js`, `scripts/examples/js_fire_mastery.js` and `scripts/mythic/mythic_js_damage.js` are gone as well.
- `PdcAttributeApi` and `PdcAttributeApiProvider`, replaced by the `PdcAttributeAccess` returned from `EmakiAttributeApi.extensions().pdc()`.
### Notes
- Requires EmakiCoreLib `4.7.0`. Update CoreLib first.
- Back up your whole `plugins/EmakiAttribute/` folder before upgrading.
- Three things need doing by hand: renaming `attributedamage` to `attribute_damage`, updating old placeholders on attribute action lines, and redoing JS attribute extensions and damage hooks as config actions.
- Attribute-based shield blocking needs one more manual edit: the plugin does not overwrite your existing `damage_types/physical.yml` and `projectile.yml`, so add the `id: block` stage yourself. Leaving `shield.mode` at `vanilla` keeps current behaviour and needs no changes.
- All other new config keys ship with defaults, so an existing config loads as-is and gets filled in. Player attribute data, attribute points and resource state are unaffected and need no migration.
- Damage indicators are on by default; set `damage_indicator.enabled` to `false` to turn them off. BetterHUD is optional and the plugin runs normally without it.
# Emaki Attribute v4.6.0
## MineBBS 更新日志
### 移除内容与破坏性变更
- 浏览器端 Web Console 层已移除:`web-console.yml`、语言文件的 web 扩展与整个前端项目都不再随插件提供。此前用它做属性诊断或配置编辑的服主请改用命令。
- 插件描述文件由 `plugin.yml` 迁移到 `paper-plugin.yml`,`commands:` 段落已移除,命令改为运行期注册;因此只有 Paper 系服务端能加载,纯 Spigot 不再支持。
### 一级属性系统
- 新增一级属性系统(力量 / 敏捷 / 智力)。一级属性可以来自 Lore、PDC 或玩家点数分配进入快照,并按权重展开为子属性贡献。
- 属性定义新增 `parent_attribute: true` 与 `child_bonuses: {子属性: 系数}` 两个字段。
### 属性点与分配界面
- 新增属性点系统与分配 GUI。玩家命令 `/emakiattribute points <view|open|add|reset>`,管理员额外可用 `grant|set|setreset`。
- 新增权限 `emakiattribute.points`(默认所有人)与 `emakiattribute.points.admin`(默认 OP)。
- 新增可配置的分配界面 `gui/attribute_points.yml`(CHEST、6 行、支持翻页,包含一级属性、汇总、重置、翻页、关闭与边框槽位)。
### 属性标签与 MythicMobs 机制
- 属性定义新增 `tags:`(例如 DEBUFF)与临时属性叠加模式 `temporary_stack_mode: REPLACE|STACK`。
- 新增 MythicMobs 机制 `emaki_attribute_add`、`emaki_attribute_remove`、`emaki_attribute_add_tag`、`emaki_attribute_clear_tag`,可按效果 id 增删,也可按标签批量清除;此前只有 `emaki_attribute` 与 `emaki_damage`。
### 属性来源与伤害配置
- 新增物品属性来源策略 `attribute_sources`:`read_lore_attributes`、`read_pdc_attributes`、`require_lore_pdc_match`。开启匹配模式后,同一属性 id 必须在 Lore 与 PDC 中同时存在且数值相同,并且只计算一次。
- 新增 `projectile_damage_type`(默认 `projectile`),可切换为 `physical` 以复用物理线属性。
- 新增 `same_signature_ignores_invulnerability`(`enabled: true`、`window_ms: 500`):同一攻击者、同一快照签名与伤害类型的多段攻击(例如多重射击的三支箭)不再因原版无敌帧互相抵消。
- 新增 `attack_speed.scope`(`global` / `attribute_only`):`attribute_only` 只接管带有 EmakiAttribute 攻速属性的物品,其余交回原版处理。
- 新增客户端血量显示缩放 `health_display_scaling`(`enabled: false`、`target: 20.0`),只缩放客户端血条显示,不影响真实最大生命值与伤害结算。
- 新增 `release_default_data`(默认 `true`);设为 `false` 后不再生成随包的属性、伤害类型、读取规则、Lore 格式、平衡系数与脚本示例。
### 接口与扩展能力
- 新增公开接口门面 `EmakiAttributeApi`,提供资源读取与消耗、属性读取、装备同步排程、伤害施加以及物品贡献闸门注册。
- 新增扩展点:第三方可以整件否决某个物品的 Lore + PDC 贡献(与既有的只增贡献提供者互补)。
- PDC 属性数据可以整体复制到另一件物品,并排除指定来源。
- 接入动作系统:属性同步、资源消耗、资源修改与临时属性标签动作。
### 校验与修复
- 属性定义校验更严格,配置错误会明确报出而不是静默失效:非一级属性上写了 `child_bonuses`、指向不存在的子属性、一级属性指向另一个一级属性,以及伤害类型阶段直接引用一级属性。
- 修复伤害反馈中攻击者显示为原版枚举名(例如 `ZOMBIE`)的问题,现在会解析为可读名称,玩家显示玩家名。
- 配置预检文本改为本地化(此前为硬编码英文),非英文服主现在能读懂预检结果。
- 追踪 / 调试字段标签本地化。
- 消息前缀更换为新的品牌渐变样式。
### 升级说明
- 需要 EmakiCoreLib `4.6.0`,请先升级 CoreLib 再升级本插件。
- `api-version` 由 `1.21` 提升到 `1.21.8`,低于 1.21.8 的服务端不再支持;依赖改为 Paper 结构化声明:EmakiCoreLib 为必需,MythicMobs / PlaceholderAPI / MMOItems 为可选。
- 构建基线由 spigot-api 改为 paper-api,Java 目标仍为 25;`folia-supported: true` 与此前一致。
- 所有新增配置键都带默认值,现有配置可以照常加载并自动补齐,不需要手动迁移。
- 建议升级后验证一次 `/emakiattribute points open`、属性快照与伤害结算,并确认原本通过 Web Console 完成的诊断已改用命令。
## SpigotMC Update Log
[CENTER][SIZE=6][B]◆ Emaki Attribute v4.6.0 Release ◆[/B][/SIZE][/CENTER]
[CENTER]Parent attributes, an attribute point system with allocation GUI, attribute tags with new MythicMobs mechanics, and Web Console removal.[/CENTER]
[CENTER][B]━━━━━━━━━━━━━━━━━━━━[/B][/CENTER]
[LIST]
[*]Removed: the browser-based Web Console layer is gone, including web-console.yml, the locale web extension, and the whole frontend project. Use commands for attribute diagnostics and configuration instead.
[*]Removed: the descriptor moved from plugin.yml to paper-plugin.yml and the commands: section is gone, so commands register at runtime. Only Paper-family servers can load the plugin; plain Spigot is no longer supported.
[*]Added a parent attribute system (strength / agility / intelligence). Parent attributes enter the snapshot from lore, PDC, or player point allocation and expand into child attribute contributions by weight, using the new definition fields parent_attribute: true and child_bonuses: {child: factor}.
[*]Added an attribute point system with an allocation GUI: /emakiattribute points <view|open|add|reset> for players, plus grant|set|setreset for admins, with the new permissions emakiattribute.points (default true) and emakiattribute.points.admin (default op).
[*]Added the configurable allocation interface gui/attribute_points.yml (CHEST, 6 rows, paged, with parent-attribute, summary, reset, page, close, and border slots).
[*]Added attribute tags and a temporary-attribute stacking mode: definitions gain tags: (for example DEBUFF) and temporary_stack_mode: REPLACE|STACK.
[*]Added the MythicMobs mechanics emaki_attribute_add, emaki_attribute_remove, emaki_attribute_add_tag, and emaki_attribute_clear_tag for add/remove by effect id and bulk clear by tag. Previously only emaki_attribute and emaki_damage existed.
[*]Added the item attribute source policy attribute_sources with read_lore_attributes, read_pdc_attributes, and require_lore_pdc_match. In match mode an attribute id must exist in both lore and PDC with equal values, and is then counted once.
[*]Added projectile_damage_type (default projectile), switchable to physical to reuse physical-line attributes.
[*]Added same_signature_ignores_invulnerability (enabled: true, window_ms: 500): multi-hit attacks from the same attacker with the same snapshot signature and damage type, such as three arrows from multishot, no longer suppress each other through the vanilla invulnerability window.
[*]Added attack_speed.scope (global / attribute_only); attribute_only only intercepts items carrying an EmakiAttribute attack-speed attribute and leaves everything else to vanilla.
[*]Added client health display scaling health_display_scaling (enabled: false, target: 20.0), which scales only the client-side health bar, not real max health or damage resolution.
[*]Added release_default_data (default true); false stops generating the bundled attribute, damage type, read rule, lore format, balance coefficient, and script samples.
[*]Added the public API facade EmakiAttributeApi with resource read/consume, attribute read, equipment sync scheduling, damage application, and item contribution gate registration.
[*]Added an extension point letting third parties veto an entire item's lore + PDC contribution, complementing the existing add-only contribution provider.
[*]PDC attribute payloads can now be copied wholesale between items with selected sources excluded.
[*]Added action system integration for attribute sync, resource consume, resource modify, and temporary attribute tag actions.
[*]Attribute definition validation is stricter and reports configuration errors instead of failing silently: child_bonuses on a non-parent attribute, pointing at a non-existent child, a parent pointing at a parent, and damage-type stages referencing a parent attribute directly.
[*]Fixed damage feedback showing the attacker as a raw vanilla enum name such as ZOMBIE; it now resolves a readable name and uses the player name for players.
[*]Fixed unreadable config precheck results for non-English owners; precheck text, along with trace and debug field labels, is now localized.
[*]The message prefix uses a new brand gradient.
[*]Requires EmakiCoreLib 4.6.0. api-version was raised from 1.21 to 1.21.8, and servers below 1.21.8 are unsupported.
[*]Dependencies are now declared in Paper's structured form: EmakiCoreLib required, MythicMobs / PlaceholderAPI / MMOItems optional. The build base moved from spigot-api to paper-api, and the Java target stays at 25.
[*]All new config keys ship with defaults, so an existing config loads as-is and gets filled in.
[/LIST]
## Modrinth Changelog
### Added
- Parent attribute system (strength / agility / intelligence). Parent attributes enter the snapshot from lore, PDC, or player point allocation, and expand into child attribute contributions by weight. Definitions gain `parent_attribute: true` and `child_bonuses: {child: factor}`.
- Attribute point system with an allocation GUI: `/emakiattribute points <view|open|add|reset>` for players, plus `grant|set|setreset` for admins. New permissions `emakiattribute.points` (default true) and `emakiattribute.points.admin` (default op).
- Configurable allocation interface `gui/attribute_points.yml` (CHEST, 6 rows, paged, with parent-attribute / summary / reset / page / close / border slots).
- Attribute tags and a temporary-attribute stacking mode: `tags:` (e.g. DEBUFF) and `temporary_stack_mode: REPLACE|STACK`.
- MythicMobs mechanics `emaki_attribute_add`, `emaki_attribute_remove`, `emaki_attribute_add_tag`, `emaki_attribute_clear_tag` for add/remove by effect id and bulk clear by tag. Previously only `emaki_attribute` and `emaki_damage` existed.
- Item attribute source policy `attribute_sources`: `read_lore_attributes`, `read_pdc_attributes`, `require_lore_pdc_match`. In match mode an attribute id must exist in both lore and PDC with equal values, and is counted once.
- `projectile_damage_type` (default `projectile`), switchable to `physical` to reuse physical-line attributes.
- `same_signature_ignores_invulnerability` (`enabled: true`, `window_ms: 500`): multi-hit attacks from the same attacker with the same snapshot signature and damage type no longer suppress each other via the vanilla invulnerability window.
- `attack_speed.scope` (`global` / `attribute_only`); `attribute_only` only intercepts items carrying an EmakiAttribute attack-speed attribute.
- Client health display scaling `health_display_scaling` (`enabled: false`, `target: 20.0`), affecting only the client-side health bar.
- `release_default_data` (default `true`); `false` stops generating the bundled attribute, damage type, read rule, lore format, balance coefficient, and script samples.
- Public API facade `EmakiAttributeApi` with resource read/consume, attribute read, equipment sync scheduling, damage application, and item contribution gate registration.
- Extension point letting third parties veto an entire item's lore + PDC contribution, complementing the existing add-only contribution provider.
- Wholesale copying of PDC attribute payloads between items with selected sources excluded.
- Action system integration for attribute sync, resource consume, resource modify, and temporary attribute tag actions.
### Changed
- Stricter attribute definition validation that reports configuration errors instead of failing silently: `child_bonuses` on a non-parent attribute, pointing at a non-existent child, a parent pointing at a parent, and damage-type stages referencing a parent attribute directly.
- Config precheck text and trace/debug field labels are localized.
- Message prefix switched to a new brand gradient.
- `api-version` raised `1.21` -> `1.21.8`. Dependencies declared in Paper's structured form: EmakiCoreLib required; MythicMobs / PlaceholderAPI / MMOItems optional. Build base moved spigot-api -> paper-api; Java target unchanged at 25.
### Fixed
- Damage feedback showed the attacker as a raw vanilla enum name (e.g. `ZOMBIE`); it now resolves a readable name, using the player name for players.
- Config precheck results were unreadable for non-English owners because the text was hardcoded English.
### Removed
- The browser-based Web Console layer (`web-console.yml`, the locale web extension, the whole frontend project). Owners who used it for attribute diagnostics or config editing must use commands instead.
- The descriptor `commands:` section, following the `plugin.yml` -> `paper-plugin.yml` migration; commands register at runtime.
- Support for plain Spigot. Only Paper-family servers can load the plugin.
### Notes
- Requires EmakiCoreLib `4.6.0`. Update CoreLib first.
- Servers below 1.21.8 are unsupported. `folia-supported: true` was already declared before this release.
- All new config keys ship with defaults, so an existing config loads as-is and gets filled in; no manual migration is required.
- After updating, verify `/emakiattribute points open`, attribute snapshots, and damage resolution, and move any Web Console diagnostics over to commands.
release
Emaki Attribute 4.6.0
4.6.027 июл. 2026 г.43Minecraft: 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.2, 26.2folia, paper, purpur
Что нового
### Added
- Parent attribute system (strength / agility / intelligence). Parent attributes enter the snapshot from lore, PDC, or player point allocation, and expand into child attribute contributions by weight. Definitions gain `parent_attribute: true` and `child_bonuses: {child: factor}`.
- Attribute point system with an allocation GUI: `/emakiattribute points <view|open|add|reset>` for players, plus `grant|set|setreset` for admins. New permissions `emakiattribute.points` (default true) and `emakiattribute.points.admin` (default op).
- Configurable allocation interface `gui/attribute_points.yml` (CHEST, 6 rows, paged, with parent-attribute / summary / reset / page / close / border slots).
- Attribute tags and a temporary-attribute stacking mode: `tags:` (e.g. DEBUFF) and `temporary_stack_mode: REPLACE|STACK`.
- MythicMobs mechanics `emaki_attribute_add`, `emaki_attribute_remove`, `emaki_attribute_add_tag`, `emaki_attribute_clear_tag` for add/remove by effect id and bulk clear by tag. Previously only `emaki_attribute` and `emaki_damage` existed.
- Item attribute source policy `attribute_sources`: `read_lore_attributes`, `read_pdc_attributes`, `require_lore_pdc_match`. In match mode an attribute id must exist in both lore and PDC with equal values, and is counted once.
- `projectile_damage_type` (default `projectile`), switchable to `physical` to reuse physical-line attributes.
- `same_signature_ignores_invulnerability` (`enabled: true`, `window_ms: 500`): multi-hit attacks from the same attacker with the same snapshot signature and damage type no longer suppress each other via the vanilla invulnerability window.
- `attack_speed.scope` (`global` / `attribute_only`); `attribute_only` only intercepts items carrying an EmakiAttribute attack-speed attribute.
- Client health display scaling `health_display_scaling` (`enabled: false`, `target: 20.0`), affecting only the client-side health bar.
- `release_default_data` (default `true`); `false` stops generating the bundled attribute, damage type, read rule, lore format, balance coefficient, and script samples.
- Public API facade `EmakiAttributeApi` with resource read/consume, attribute read, equipment sync scheduling, damage application, and item contribution gate registration.
- Extension point letting third parties veto an entire item's lore + PDC contribution, complementing the existing add-only contribution provider.
- Wholesale copying of PDC attribute payloads between items with selected sources excluded.
- Action system integration for attribute sync, resource consume, resource modify, and temporary attribute tag actions.
### Changed
- Stricter attribute definition validation that reports configuration errors instead of failing silently: `child_bonuses` on a non-parent attribute, pointing at a non-existent child, a parent pointing at a parent, and damage-type stages referencing a parent attribute directly.
- Config precheck text and trace/debug field labels are localized.
- Message prefix switched to a new brand gradient.
- `api-version` raised `1.21` -> `1.21.8`. Dependencies declared in Paper's structured form: EmakiCoreLib required; MythicMobs / PlaceholderAPI / MMOItems optional. Build base moved spigot-api -> paper-api; Java target unchanged at 25.
### Fixed
- Damage feedback showed the attacker as a raw vanilla enum name (e.g. `ZOMBIE`); it now resolves a readable name, using the player name for players.
- Config precheck results were unreadable for non-English owners because the text was hardcoded English.
### Removed
- The browser-based Web Console layer (`web-console.yml`, the locale web extension, the whole frontend project). Owners who used it for attribute diagnostics or config editing must use commands instead.
- The descriptor `commands:` section, following the `plugin.yml` -> `paper-plugin.yml` migration; commands register at runtime.
- Support for plain Spigot. Only Paper-family servers can load the plugin.
### Notes
- Requires EmakiCoreLib `4.6.0`. Update CoreLib first.
- Servers below 1.21.8 are unsupported. `folia-supported: true` was already declared before this release.
- All new config keys ship with defaults, so an existing config loads as-is and gets filled in; no manual migration is required.
- After updating, verify `/emakiattribute points open`, attribute snapshots, and damage resolution, and move any Web Console diagnostics over to commands.
release
Emaki Attribute 4.5.0
4.5.014 июл. 2026 г.23Minecraft: 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.2, 26.2folia, paper, purpur
Что нового
### Added
- Parent attributes and attribute points, including GUI and stored player point data.
- Temporary attribute tools for MythicMobs, including tags and stack modes.
- Resource actions for modifying, consuming, and syncing Attribute resources.
- Compressed client health display support.
- Manifest v2 Web Console integration.
### Fixed / Improved
- Fixed projectile attribute stacking and raw snapshot display issues.
- Improved entity names in damage messages.
- Improved command suggestions and diagnostics.
- Aligned with the Paper API / `paper-plugin.yml` 1.21.8+ baseline.
### Notes
- Update with the matching CoreLib release.
- Breaking: Action aliases were removed; use canonical action IDs.
- Review custom attribute configs when enabling parent attributes, point GUI, or health display settings.
release
Emaki Attribute 4.4.0
4.4.029 июн. 2026 г.47Minecraft: 1.21.8, 1.21.9, 1.21.10, 1.21.11folia, paper, purpur, spigot
Что нового
### Added
- Public Bukkit event `PlayerResourceConsumeEvent`, fired before resource consumption; cancellable, with overridable amount.
- JavaScript damage extensions: custom damage types and damage pipeline hooks.
- Script access through `emaki.module("attribute")`.
- Config precheck on startup and reload.
### Fixed
- Fixed attribute damage being zeroed out for very large values formatted in scientific notation.
### Refactored
- Refactored public API models and the script bridge layer; external behavior unchanged.
### Improved
- Better combat debug output and attribute source diagnostics.
- Reduced noisy startup and extension logs.
### Notes
- Breaking: MythicMobs bridge legacy parameter aliases removed (damage/operator/value/value_2).
- Breaking: legacy default damage rule auto-replacement removed.
release
Emaki Attribute 4.3.0
4.3.016 июн. 2026 г.24Minecraft: 1.21.8, 1.21.9, 1.21.10, 1.21.11folia, paper, purpur, spigot
Что нового
### Added
- Web Console Attribute diagnostics panel.
- Attribute contribution traces and damage traces.
- Clearer PDC attribute API capabilities.
- JavaScript runtime attributes, contribution providers, and damage hooks.
- Script access through `emaki.module("attribute")`.
### Fixed
- Fixed `/ea debug` player trace command handling and tab completion.
- Fixed unclear diagnostics wording and PDC read-rule output.
- Fixed default conditions to match the shared condition system.
### Refactored
- Public API facade/Bridge flow.
- PDC read rule models and script bridge handling.
### Improved
- Better combat debug output and attribute source diagnostics.
- Cleaner localized Web Console text.
release
Emaki Attribute 4.2.0
4.2.05 июн. 2026 г.44Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11folia, paper, purpur, spigot
Что нового
Attribute v4.2.0 makes the attribute system much friendlier to script-based extensions. You can now add runtime attributes, providers, and damage hooks without writing a separate Java plugin.
### Highlights
- JavaScript extensions for runtime attributes, providers, and damage hooks.
- Damage hook scripts can inspect attacker and target attribute snapshots.
- Attribute script module access through `emaki.module("attribute")`.
### Improved
- Generic MythicMobs JavaScript mechanics moved to CoreLib.
- Cleaner localized JavaScript extension logs.
- Less repeated startup output.
- CoreLib-managed bStats and runtime dependency handling.
### Notes
- Review custom scripts and prefer `emaki.module("attribute")`.
release
Emaki Attribute 4.1.0
4.1.02 июн. 2026 г.24Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11folia, paper, purpur, spigot
Что нового
# EmakiAttribute v4.1.0
> Vanilla damage takeover, combat debug system, scaling curves, and attribute contribution API.
---
### ✨ New Features
#### Vanilla Damage Takeover
A new configuration option lets you control whether EmakiAttribute fully takes over vanilla damage calculation, giving you complete control over how damage is computed in your server.
#### Perfect Takeover Coordinator
A new coordination mechanism ensures smooth integration between EmakiAttribute's damage calculation and vanilla Minecraft damage events, preventing conflicts and double-calculations.
#### Combat Debug System
A new combat debug handler and listener allow server admins to trace damage calculations step by step — invaluable for debugging complex combat mechanics and ensuring everything works as expected.
#### Damage Calculation Cache
A new caching service reduces redundant damage calculations, improving combat performance especially in high-frequency combat scenarios.
#### Scaling Curve Configuration
Customizable attribute scaling curves allow you to define how attribute values grow — linear, exponential, logarithmic, or any custom curve you need for balanced stat progression.
#### Attribute Contribution API
A new API interface allows other plugins to register custom attribute sources, enabling cross-plugin attribute bonuses and integrations.
#### Web Console Integration
EmakiAttribute is now accessible through the built-in Web management console, allowing you to edit attribute configurations and damage types directly in your browser.
### ♻️ Improvements
- The damage handling system has been refactored, splitting the original monolithic listener into a dedicated combat damage listener for cleaner, more maintainable code.
- Lore format templates have been updated and optimized.
- The attribute snapshot collector has been optimized for better performance.
- The attribute API has been extracted to a separate module for cross-plugin reference.
- Language files have been significantly expanded with new translations.
release
Emaki Attribute 4.0.0
4.0.011 мая 2026 г.36Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper, purpur, spigot
Что нового
## EmakiAttribute 4.0.0 Release
This release adds skill-based damage integration, enhanced damage messages, and PAPI placeholder expansion, while unifying condition expression syntax.
### New Features
- **EmakiSkills Damage Integration**: When EmakiSkills is installed, skill scripts can use `attribute_damage` to trigger the full attribute damage pipeline (attribute bonuses, crits, penetration, dodge, damage messages, etc.) with configurable damage type, target, and element tag.
- **Enhanced Damage Messages**: New placeholders in damage message templates: `{attacker_health}`, `{attacker_max_health}`, `{target_health}`, `{target_max_health}`, `{distance}`.
- **PAPI Resource Regen Placeholder**: `%emakiattribute_resource_<id>_regen%` returns per-second regeneration rate for HUD/scoreboard display.
- **Damage API**: Other plugins can invoke the attribute damage pipeline via `EmakiAttributeBridge.applyDamage()`.
### Improvements
- Config and language files auto-merge new keys on upgrade.
- All attribute definition files and condition files now include detailed field comments.
- Console log messages streamlined for cleaner startup/shutdown output.
### Breaking Changes
- Condition expression syntax changed from `%value%` to `{value}` (e.g., `%player_name%` → `{player_name}`). Custom condition files must be updated manually.
### Upgrade Notes
- Default condition files are auto-updated; custom condition files need manual syntax migration (`%var%` → `{var}`).
- Config version updated to `4.0.0` — structure remains compatible, new entries are auto-merged.
[View Full Documentation](https://jiuwu02.github.io/Emaki_Series/) | [Join Discord Community](https://discord.gg/FV4GFQbvCM) | [QQ Group](https://qm.qq.com/q/GqGrzHp0wU)
release
Emaki Attribute 3.5.0
3.5.04 мая 2026 г.25Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper, purpur, spigot
Что нового
## EmakiAttribute 3.5.0 Release
This release improves player runtime state cleanup and adds default EmakiItem condition support.
- Player kick events now clean combat/runtime caches like normal quit events.
- Added default `conditions/emakiitem.yml` for item-based attribute conditions.
- Improved cache hygiene for cooldowns, synthetic damage markers, and damage type overrides.
- Synchronized plugin, config, and language versions to `3.5.0`.
### Upgrade Notes
- Review `conditions/emakiitem.yml` if you use EmakiItem integration.
- Existing permission nodes and attribute configs remain compatible.
[View Full Documentation](https://jiuwu02.github.io/Emaki_Series/) | [Join Discord Community](https://discord.gg/FV4GFQbvCM) | [QQ Group](https://qm.qq.com/q/GqGrzHp0wU)
release
Emaki Attribute 3.4.0
3.4.028 апр. 2026 г.16Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper, purpur, spigot
Что нового
## EmakiAttribute 3.4.0 Dev Update
This dev update includes the weight → score terminology rename, PDC attribute API service registration, and permission centralization.
- **weight → score rename**: `AttributeBalanceRegistry` fields renamed from `weights` to `scores`; `weightOf` → `scoreOf`.
- **PDC attribute API as service**: EmakiAttribute now registers `PdcAttributeApi` via Bukkit `ServicesManager`, removing reflection.
- **Centralized permissions**: added `AttributePermissions` for admin, reload, resync, and debug nodes.
- **Cleaner command checks**: admin command handlers now use shared constants.
- **Entity state cleanup**: player quit and kick events clear runtime state for that player.
- **PDC cache guard**: regex compilation cache now has a fixed limit.
- **Language fallback improvements**: language loading supports non-string values and merges missing fallback entries.
### Upgrade Notes
- Update code references from `weightOf`/`weights` to `scoreOf`/`scores`.
- `attribute_balance.yml` structure has changed.
- Existing permission plugin configs should continue working.
[View Full Documentation](https://jiuwu02.github.io/Emaki_Series/) | [Join Discord Community](https://discord.gg/FV4GFQbvCM) | [QQ Group](https://qm.qq.com/q/GqGrzHp0wU)
release
EmakiAttribute 3.3.0
3.3.025 апр. 2026 г.12Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper, purpur, spigot
Что нового
## EmakiAttribute 3.3.0
EmakiAttribute 3.3.0 adds timed temporary attributes and makes PDC attribute reads more useful in real server conditions. Skills, rewards, events, or other action-driven systems can now add, set, or remove temporary attribute effects, while player snapshots automatically account for those effects until they expire.
- **Temporary attribute actions**: `attribute_add`, `attribute_set`, and `attribute_remove` can be called from CoreLib action chains.
- **Automatic cleanup and recalculation**: temporary effects expire on their own and invalidate affected player snapshots when necessary.
- **Placeholder-aware PDC reads**: condition text can resolve player context values and PlaceholderAPI output when available.
- **Better balance metadata**: `attribute_balance.yml` can define semantic groups, roles, summaries, and weights for attributes.
- **Combat-path cleanup**: damage caching, resource handling, snapshot collection, and error paths were refined for maintainability and performance.
- **Unified version fields**: default resources now use the current `version` key style.
### Upgrade Notes
- Use Java 25.
- Migrate custom version fields to `version`.
- Only call temporary attribute actions where a player context exists.
- Keep custom resources on the current non-EA-prefixed attribute names.
[View Full Documentation](https://jiuwu02.github.io/Emaki_Series/) | [Join Discord Community](https://discord.gg/FV4GFQbvCM) | [QQ Group](https://qm.qq.com/q/GqGrzHp0wU)
release
EmakiAttribute 3.2.0
3.2.024 апр. 2026 г.22Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper, purpur, spigot
Что нового
## EmakiAttribute 3.2.0
EmakiAttribute 3.2.0 focuses on tightening the combat pipeline, standardizing condition-file syntax, and fixing the vanilla attribute sync path on Spigot-compatible servers. The practical outcome is a cleaner condition schema, a safer startup path, and more consistent naming across default balance resources and preview output.
- **The combat pipeline is more modular now**. Damage recovery, combat-message dispatch, and synthetic-damage dispatch were split into dedicated services instead of staying inside one monolithic calculation flow.
- **`conditions`** **is now the only supported schema**. PDC read rules read `conditions` and reject `checks` as an unsupported field, while the loader now reports invalid entries more explicitly.
- **Vanilla attribute sync is safer across runtimes**. The synchronizer no longer depends on `getKeyOrThrow()` and resolves vanilla attributes through a safer key-aware path.
- **Spell critical naming is now consistent**. Default balance resources renamed `magic_crit_rate` and `magic_crit_damage` to `spell_crit_rate` and `spell_crit_damage`.
- **Preview and debug messages are clearer**. Additional schema feedback and explicit name labels make it easier to understand what the module actually read from config and item state.
### Upgrade Notes
- Migrate custom rule files from `checks` to `conditions`.
- Rename old `magic_crit_*` entries to `spell_crit_*` in custom resources.
[View Full Documentation](https://jiuwu02.github.io/Emaki_Series/) | [Join Discord Community](https://discord.gg/FV4GFQbvCM) | [QQ Group](https://qm.qq.com/q/GqGrzHp0wU)
release
EmakiAttribute 3.1.0
3.1.016 апр. 2026 г.24Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper, purpur, spigot
Что нового
# EmakiAttribute Changelog
## [3.1.0] - 2026-04-16
### Added
- Added a `default_profile` block in `config.yml` so base resources and base attributes now live in the main configuration instead of the old `profiles/global.yml` file.
- Added a flexible `checks` model for condition files with `pdc_meta`, `pdc_attribute`, and `lore_regex` support; the default Forge, Strengthen, and bind conditions now use the new structure as well.
### Improved
- Reworked lifecycle, directory loading, default-profile registration, and PDC read-rule handling so reload-time discovery, registry refresh, and summary output stay consistent.
- Introduced `AttributeFusionMath` and updated snapshot collection, stage calculation, movement speed sync, and attack-speed sync so fused combat values map back to vanilla behavior more consistently.
- Replaced string-based managed vanilla targets with direct `Attribute` tracking to reduce repeated resolution and runtime-specific divergence.
### Fixed
- Fixed a startup crash on Leaf / Spigot-style runtimes where vanilla attribute binding could fail when a runtime-specific API path was missing.
- Corrected the minimum value semantics for `physical_crit_damage` and clarified the default health resource description to avoid misleading defaults.
- Fixed inconsistent health, movement-speed, and attack-speed syncing when fused combat snapshots were re-applied after reload.
release
EmakiAttribute 3.0.0
3.0.012 апр. 2026 г.23Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper, purpur, spigot
Что нового
# 📦 EmakiAttribute 更新日志 / Changelog
## 中文版
### ✨ 新增特性
- **Lore 格式增强**: 为所有 Lore 格式文件添加详细注释和元数据
- `default_flat.yml`: 新增格式说明、优先级配置和正则匹配模式
- `default_percent.yml`: 新增百分比格式说明,优先级提升至 100
- `default_regen.yml`: 新增回复类格式说明,优先级 80
- `default_resource.yml`: 新增资源类格式说明,优先级 60
- **属性优先级配置**: 调整多个属性文件的 `read_priority` 值,确保 Lore 格式正确匹配
- `physical_damage_bonus`: 85 → 101
- `projectile_damage_bonus`: 91 → 93
- `spell_crit_rate`: 85 → 91
- `spell_damage_bonus`: 86 → 88
- **条件文件新增**: 新增 Forge 和 Strengthen 的条件配置文件
- `conditions/forge.yml`: Forge 模块的条件定义
- `conditions/strengthen.yml`: Strengthen 模块的条件定义
### 🐛 问题修复
- **Lore 格式优先级冲突**: 通过调整 read_priority 解决百分比格式与数值格式的匹配冲突
- **配置版本不一致**: 将所有配置文件的版本统一升级到 3.0.0
### 🚀 优化与改进
- **配置文件注释增强**: 为所有属性定义、Lore 格式和 Profile 文件添加详细的中文注释
- 说明每个配置的用途和示例输出
- 解释优先级的工作原理
- 标注正则匹配模式
- **属性定义优化**: 确保百分比格式优先于普通数值格式匹配
- 调整 priority 配置避免 Lore 读取冲突
- 优化属性匹配顺序
### ♻️ 架构与底层
- **配置版本升级**:
- `config.yml`: 2.3.0 → 3.0.0
- `lang/zh_CN.yml`: 2.3.0 → 3.0.0
- 所有属性定义和 Lore 格式文件版本同步升级
- **代码格式化**: 统一导入格式和代码风格
---
## English Version
### ✨ Features
- **Lore Format Enhancements**: Added detailed comments and metadata to all Lore format files
- `default_flat.yml`: Added format description, priority configuration, and regex matching patterns
- `default_percent.yml`: Added percentage format description, priority increased to 100
- `default_regen.yml`: Added regen format description, priority 80
- `default_resource.yml`: Added resource format description, priority 60
- **Attribute Priority Configuration**: Adjusted `read_priority` values in multiple attribute files to ensure correct Lore format matching
- `physical_damage_bonus`: 85 → 101
- `projectile_damage_bonus`: 91 → 93
- `spell_crit_rate`: 85 → 91
- `spell_damage_bonus`: 86 → 88
- **Condition Files Added**: Added condition configuration files for Forge and Strengthen modules
- `conditions/forge.yml`: Condition definitions for Forge module
- `conditions/strengthen.yml`: Condition definitions for Strengthen module
### 🐛 Bug Fixes
- **Lore Format Priority Conflicts**: Resolved matching conflicts between percentage and numeric formats by adjusting read_priority
- **Configuration Version Inconsistency**: Unified all configuration files to version 3.0.0
### 🚀 Improvements & Optimizations
- **Configuration Comment Enhancements**: Added detailed Chinese comments to all attribute definitions, Lore formats, and Profile files
- Explained the purpose and example output of each configuration
- Explained how priority works
- Annotated regex matching patterns
- **Attribute Definition Optimization**: Ensured percentage format takes precedence over plain numeric format matching
- Adjusted priority configuration to avoid Lore reading conflicts
- Optimized attribute matching order
### ♻️ Chores & Refactoring
- **Configuration Version Upgrade**:
- `config.yml`: 2.3.0 → 3.0.0
- `lang/zh_CN.yml`: 2.3.0 → 3.0.0
- All attribute definitions and Lore format files version synchronized
- **Code Formatting**: Unified import format and code style
release
EmakiAttribute 2.2.0
2.2.09 апр. 2026 г.13Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper, purpur
Что нового
# EmakiAttribute Changelog
## \[2.2.0] - 2026-04-09
### Added
#### New preview and lint admin commands
- Added `/emakiattribute preview [player] [slot]` so operators can inspect the snapshot signature, item name, and non-zero attributes of a specific equipment slot directly.
- Added `/emakiattribute lint`, which summarizes load issues from config, attribute definitions, damage types, default groups, lore formats, presets, and PDC read rules for pre-launch or post-reload checks.
### Improved
#### Better operational diagnostics and attribute display order
- The `preview` subcommand now provides player-name and slot completions, and the help output now includes clearer separators and command hints.
- Default attribute priorities were reorganized for entries such as `attack_speed_vanilla`, `physical_damage_bonus`, `projectile_damage_bonus`, `spell_crit_rate`, and `spell_damage_bonus`, making lore display order more stable.
### Fixed
- The `preview` command now distinguishes "no permission", "player not found", "invalid slot", and "no item in slot", which reduces ambiguity during investigation.
- `lint` now validates whether `default_damage_type` and `allowed_damage_causes` actually point to loaded damage types, preventing dangling config references.
### Upgrade Notes
- If you plan to run `/emakiattribute preview` from the console, always provide both player name and slot explicitly.
- If your item lore depends on the old default attribute ordering, re-check the rendered display after upgrading.
- It is recommended to run `/emakiattribute lint` after every reload of custom attributes, damage types, presets, or PDC condition rules.
### Known Issues
- None
release
EmakiAttribute 2.1.0
2.1.07 апр. 2026 г.15Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper, purpur
Что нового
## [2.1.0] - 2026-04-08
### Added
#### PDC Attribute Writing and Conditional Reading Interface
- Added `PdcAttributeApi` and registered it via Bukkit Services. External plugins can now write, read, and clear structured attribute payloads on items, grouped by `source_id`.
- Added `PdcAttributeService`, `PdcAttributePayload`, and `PdcReadRule`. This supports writing attribute values and meta data to an item's Persistent Data Container (PDC) and managing them grouped by source.
- Added a `conditions/` directory and `PdcReadRuleLoader`. Rules can determine whether a group of PDC attributes takes effect based on conditions like player placeholders, source meta, and source attributes.
- Included two disabled example configurations by default: `default_bind.yml` and `default_equipment_level.yml`, making it easy to enable binding checks and equipment level requirements according to server rules.
#### Integration of MMOItems Combat Bridge into the Attribute Damage Chain
- `MmoItemsBridge` now listens for MMOItems main-hand/off-hand melee hits, projectile hits, and the `SpecialWeaponAttackEvent`.
- MMOItems hit events are uniformly rewritten into EmakiAttribute's damage calculation process, preventing conflicts where external weapon damage and the attribute system calculate separately.
- Projectiles record their source and a snapshot before entering Attribute's projectile damage resolution chain. Synthetic knockback can be optionally added post-calculation based on configuration.
### Improvements & Optimizations
#### Item Snapshot Now Merges Lore and PDC Attributes
- `AttributeSnapshotCollector` now collects both Lore attributes and PDC attributes, generating a unified signature cache for the merged result.
- Equipped state snapshots support filtering PDC attributes based on the player's context. This allows rules like "equipment binding," "level requirements," and "source conditions" to directly affect the final combat attributes.
- Since read rules participate in signature generation, changes to equipment conditions will also trigger snapshot refreshes, reducing lingering attributes after a player logs in.
#### Placeholder and Lifecycle Cleanup
- Placeholder expansions have been standardized for attribute and resource queries. `power` now automatically maps to `attribute_power`.
- Resource placeholders now only retain explicit fields: `current`, `max`, `default`, `bonus`, `percent`.
- Added a PDC rule loading phase to the plugin's lifecycle. The `conditions/` directory is refreshed during reloads.
- Command aliases have been adjusted from `eattr` / `attr` to `eattribute` / `ea` to reduce conflicts with other plugin commands.
#### Consolidation of Default Attribute Sets
- Removed default attribute definitions for `skill_damage_bonus`, `skill_crit_rate`, `skill_crit_damage`, and `skill_cdr`.
- Removed `damage_types/skill.yml` and the example debug attribute `test_attribute`.
- Corresponding default entries have been removed from `attribute_balance.yml` and `profiles/global.yml` to prevent new servers from inheriting the old skill attribute groupings.
### Upgrade Notes
- If your equipment, loot, strengthening, or other modules still reference `skill_damage_bonus`, `skill_crit_rate`, `skill_crit_damage`, or `skill_crit_damage`, please migrate to your new attribute design before upgrading.
- External plugins that wish to write structured attributes to items should first obtain the `PdcAttributeApi`, register their own `source_id`, and then proceed with writing.
- Update old scripts calling `/emakiattribute attr` or `/emakiattribute eattr` to use `eattribute` or `ea` instead.
- After enabling MMOItems on your server, it is recommended to thoroughly retest melee, projectile, and special weapon attacks to ensure there is no double damage calculation or duplicate processing by old listeners.
### Known Issues
- None
release
EmakiAttribute 2.0.0
2.0.03 апр. 2026 г.13Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper, purpur
Что нового
# EmakiAttribute Changelog
## [2.0.0] - 2026-04-04
### Added
#### Asynchronous Reload Process
- Added `reloadPluginStateAsync(...)`, allowing the attribute system reload to be executed asynchronously in stages.
- Progress messages such as "reading language & configs / loading attribute definitions / refreshing cache" are continuously reported during the reload.
- Added reload mutex protection; executing `/emakiattribute reload` repeatedly will now directly prompt "A reload task is already in progress."
- When a command fails, the root cause error is reported back to the executor, facilitating troubleshooting of configuration or resource issues.
#### Asynchronous Damage Resolution Pipeline
- Added `AsyncDamageEngine`, migrating EA damage resolution to the CoreLib asynchronous scheduler.
- Melee, projectile, and environmental damage now uniformly follow the "async resolution + main thread finalization + application on the next tick" pipeline.
- The damage event `EmakiAttributeDamageEvent` is still triggered on the main thread, ensuring safe compatibility for existing listeners.
### Changed
#### Lifecycle & Thread Safety
- Added `AttributeLifecycleCoordinator` for orchestrating the staged logic of the reload process.
- `DirectoryLoader` now supports asynchronous loading with progress callbacks.
- `AttributeRegistry`, `DamageTypeRegistry`, `DefaultProfileRegistry`, `AttributeBalanceRegistry`, and `LanguageLoader` have been enhanced with synchronization protection to accommodate asynchronous read/write scenarios.
#### Damage Calculation Structure Refactoring
- `DamageCalculationService` has been refactored to split damage resolution into "preparation phase / result finalization phase," reducing code duplication between synchronous and asynchronous implementations.
- The same instance of damage will reuse unified type resolution, random seed, and event finalization logic.
- If asynchronous settlement fails, the root cause is logged, aiding in problem diagnosis when used with combat debugging output.
#### Configuration & Resource Upgrades
- Reloading configuration will now automatically merge new entries for `allowed_damage_causes`, reducing the manual patching effort during configuration upgrades.
- Added new language keys: `command.reload.in_progress`, `command.reload.started`, `command.reload.failed`.
- Removed the example file `attributes/test_attribute.yml`.
- Optimized the format of the built-in description text in `attribute_balance.yml`, unifying the default descriptive style.
### Upgrade Notes
- Requires `EmakiCoreLib 2.0.0` or higher.
- `/emakiattribute reload` has been changed to an asynchronous process. Operational scripts should no longer assume that command return implies all data has finished reloading.
- External plugins that only listen for `EmakiAttributeDamageEvent` typically require no changes; the event is still fired on the main thread.
### Known Issues
- None
release
EmakiAttribute 1.8.0
1.8.031 мар. 2026 г.13Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper, purpur
Что нового
# EmakiAttribute Changelog
## [1.8.0] - 2026-03-31
### New Features
#### Attribute Damage Action System
* Added the `AttributeActions` registry for managing the registration and unregistration of attribute-related actions.
* Added the `AttributeDamageAction` action, supporting the infliction of custom damage based on attributes within the action system.
* Action Parameters:
* `amount` (required): Base damage value.
* `type` (optional): Damage type ID, defaults to the type configured in settings.
* `cause` (optional): Damage cause, defaults to `CUSTOM`.
* Automatically integrated into the `EmakiCoreLib` action registration system, supporting templated configuration and conditional execution.
#### Combat Feedback Enhancement
* Added a synthetic impact feedback system to enhance visual and auditory feedback after EA (EmakiAttribute) damage settlement.
* Mob entities will automatically have their aggression target set (`applyAggroTarget`) after taking EA damage.
* Automatically activates the Mob's `aware` and `aggressive` states.
* Sets the attacker as the target, improving combat AI response.
* Improved impact animation handling (`playSyntheticImpact`).
* Unified the logic for playing impact animations.
* Supports playing custom hurt sounds.
* Ensures visual feedback is closer to vanilla Minecraft's performance.
### Configuration Changes
#### Configuration Version Upgrade
* Configuration version upgraded from `1.1` to `1.2`.
#### New Configuration Options
* `synthetic_hit_feedback.knockback`: Whether to enable synthetic knockback effect (default: true).
* `synthetic_hit_feedback.knockback_strength`: Knockback strength (default: 0.4).
* `synthetic_hit_feedback.hurt_sound`: Whether to play hurt sound (default: true).
### Code Improvements
#### EmakiAttributePlugin
* Added the `registerCoreLibActions()` method to register attribute actions when the plugin loads.
* Added the `unregisterCoreLibActions()` method to unregister attribute actions when the plugin unloads.
* Improved lifecycle management to ensure proper initialization and cleanup of the action system.
#### DamageCalculationService
* Added the `applyAggroTarget()` method to handle Mob aggression target setting.
* Refactored the `applyDirectDamage()` method, extracting impact animation logic.
* Added the `playSyntheticImpact()` method to uniformly handle impact animations and sounds.
* Improved the damage application process, enhancing combat feedback.
#### AttributeConfig
* Added the `syntheticHitKnockback` field.
* Added the `syntheticHitKnockbackStrength` field.
* Added the `syntheticHitHurtSound` field.
* Updated configuration parsing logic to support the new impact feedback settings.
### Usage Notes
#### Action System Integration
* Ensure `EmakiCoreLib` version ≥ 1.11.0.
* Attribute actions are automatically registered when the plugin loads; no manual configuration is needed.
* The action ID is `attributedamage` and can be used in action templates.
#### Combat Feedback Configuration
* New configuration items use default values; old configuration files do not require modification.
* If you need to customize impact feedback, add the `synthetic_hit_feedback` section in `config.yml`.
* Recommended range for knockback strength: 0.1 - 1.0.
#### Compatibility
* Deeply integrated with `EmakiCoreLib 1.11.0`.
* Maintains backward compatibility with older configuration file versions.
* New features are optional and do not affect the existing combat system.
### Known Issues
* None
release
EmakiAttribute 1.7.0
1.7.030 мар. 2026 г.15Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper, purpur
Что нового
[Changelog](https://github.com/jiuwu02/Emaki_Series/releases/tag/release-corelib-1.10.0__forge-1.9.0__attribute-1.7.0)
release
Emaki Attribute 1.6.0
1.6.029 мар. 2026 г.17Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper, purpur
Что нового
[Changelog](https://github.com/jiuwu02/Emaki_Series/releases/tag/release-corelib-1.9.0__forge-1.8.0__attribute-1.6.0)
release
Emaki Attribute 1.4.0
1.4.028 мар. 2026 г.17Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11paper, purpur