EmakiAttribute | RPG Attributes and Damage
4.8.0Takes over vanilla combat maths with configurable attributes, staged damage types and traceable results.
4.8.0latestEmaki Attribute 4.8.0Aug 31, 2026 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 foremaki_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.4.7.0Emaki Attribute 4.7.0Aug 11, 2026 Added
- Damage indicators: floating numbers above the target, on by default. Four triggers underdamage_indicator.triggerscovernormalhits,criticalhits,healanddodge. Vanilla combat does not roll for dodges on its own, so a dodge indicator only appears once the target carries a dodge attribute such asdodge_chanceand actually evades a hit; the bundledattributes/dodge_chance.ymldefaults to0. Text templates live in the language file underdamage.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.motionsetsspeed,gravity, keyframe spacing viastep_ticks, and throw direction viadirection.mode(random,fixed,away_from_attacker). - Per-trigger overrides: the top level ofdamage_indicatorholds 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 keysmerge_window_ms(default500), which merges repeated damage on one target into a single number, andmax_per_target_per_second(default4). Matchingmerge_window_mstosame_signature_ignores_invulnerability.window_msmakes a multishot volley show one total instead of three numbers.0disables either limit. -damage_indicator.ignored_causes, which defaults to blockingFIRE_TICK,POISON,WITHER,DROWNING,FREEZE,SUFFOCATIONandSTARVATION, 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 viashield.mode(vanilladefault,attribute).vanillakeeps vanilla behaviour: a raised shield removes the hit entirely and calculated attack, critical and penetration values do not apply.attributezeroes the vanilla reduction and resolves blocking through ablockstage in the damage type. - Attributesblock_rate(chance a raised shield blocks) andblock_reduction(percentage of damage a successful block removes), with baselines underdefault_profile.attributesdefaulting to100each, i.e. a guaranteed full block that matches vanilla feel. Shield item attributes stack on top of the baseline.block_rate: 0means blocking never triggers at all. -shield.require_facing(defaulttrue) andshield.facing_angle_degrees(default180, 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. - Bundledattributes/block_rate.ymlandattributes/block_reduction.yml, plus ablockstage in the bundleddamage_types/physical.ymlanddamage_types/projectile.yml. - Avariables:block on damage stages: define your own variables in a stage and reference them fromexpression. Values can be numbers, expressions or random ranges, for examplesoft_cap: 120withoverflow: "max(0, %input% - %soft_cap%)", thenexpression: "%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 bycatalog().resources().Changed
- `scaling_curves` now takes effect, so review your values before upgrading a live server. The section has been inconfig.ymlfor 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. - Twoscaling_curvesdescriptions corrected against real behaviour.sqrtis weaker thanlogarithmicat the samefactor, and amplifies rather than decays when the excess is belowfactor.factordiffers per curve:logarithmicandsqrtdivide by it, so0or a negative value is lifted to1, while forpiecewise_linearit is the retained share of the excess, where0legitimately drops the whole excess and is not lifted. - An unrecognisedcurve_typefalls back tologarithmicand the config precheck warns which attribute and which value, instead of quietly using the wrong curve.piecewise_linearis the single discount "excess timesfactor" 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 underplugins/, once only. Each edited file keeps the original beside it with a.legacy-backupsuffix; a line that cannot be converted leaves your config untouched and goes into a.v2-failedfile, with the file and line listed in the console. -attributedamageis renamed toattribute_damageand 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 dumpprints 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: theEmakiAttributeApifacade is reworked.available(),readResourceCurrent,readResourceMax,consumeResource,readAttributeValue,scheduleEquipmentSync,applyDamage,registerItemContributionGateandisItemContributionActiveare replaced by three accessors:catalog()(reads),operations()(state changes) andextensions()(extension points and PDC).status()replacesavailable()and returnsApiStatus. The accessors return no-op implementations when the plugin is absent instead of throwing, and business methods returnEmakiResult<T>.catalog()also offersattributeIds(),damageTypeIds(),itemSnapshotandcombatSnapshot;operations()addscalculateDamageandresyncPlayer. - For developers: events moved toapi.event, extension points (AttributeContribution,AttributeContributionProvider,ItemContributionGateand their registration handles) toapi.extension, and models (AttributeSnapshot,DamageContext,DamageContextVariables,DamageResult,PdcAttributePayload,AttributeApiValues) toapi.model.Fixed
- Maximum health pinned to the plugin's own figure, ignoring health-cap bonuses from every other source. It affe4.6.0Emaki Attribute 4.6.0Jul 27, 2026 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 gainparent_attribute: trueandchild_bonuses: {child: factor}. - Attribute point system with an allocation GUI:/emakiattribute points <view|open|add|reset>for players, plusgrant|set|setresetfor admins. New permissionsemakiattribute.points(default true) andemakiattribute.points.admin(default op). - Configurable allocation interfacegui/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) andtemporary_stack_mode: REPLACE|STACK. - MythicMobs mechanicsemaki_attribute_add,emaki_attribute_remove,emaki_attribute_add_tag,emaki_attribute_clear_tagfor add/remove by effect id and bulk clear by tag. Previously onlyemaki_attributeandemaki_damageexisted. - Item attribute source policyattribute_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(defaultprojectile), switchable tophysicalto 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_onlyonly intercepts items carrying an EmakiAttribute attack-speed attribute. - Client health display scalinghealth_display_scaling(enabled: false,target: 20.0), affecting only the client-side health bar. -release_default_data(defaulttrue);falsestops generating the bundled attribute, damage type, read rule, lore format, balance coefficient, and script samples. - Public API facadeEmakiAttributeApiwith 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_bonuseson 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-versionraised1.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 descriptorcommands:section, following theplugin.yml->paper-plugin.ymlmigration; commands register at runtime. - Support for plain Spigot. Only Paper-family servers can load the plugin.Notes
- Requires EmakiCoreLib4.6.0. Update CoreLib first. - Servers below 1.21.8 are unsupported.folia-supported: truewas 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.4.5.0Emaki Attribute 4.5.0Jul 14, 2026 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.yml1.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.4.4.0Emaki Attribute 4.4.0Jun 29, 2026 Added
- Public Bukkit eventPlayerResourceConsumeEvent, fired before resource consumption; cancellable, with overridable amount. - JavaScript damage extensions: custom damage types and damage pipeline hooks. - Script access throughemaki.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.4.3.0Emaki Attribute 4.3.0Jun 16, 2026 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 throughemaki.module("attribute").Fixed
- Fixed/ea debugplayer 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.4.2.0Emaki Attribute 4.2.0Jun 5, 2026 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 throughemaki.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 preferemaki.module("attribute").4.1.0Emaki Attribute 4.1.0Jun 2, 2026 EmakiAttribute v4.1.0
Vanilla damage takeover, combat debug system, scaling curves, and attribute contribution API.
---
#### 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.New Features
- 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.Improvements
4.0.0Emaki Attribute 4.0.0May 11, 2026 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 useattribute_damageto 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 viaEmakiAttributeBridge.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 to4.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)3.5.0Emaki Attribute 3.5.0May 4, 2026 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 defaultconditions/emakiitem.ymlfor item-based attribute conditions. - Improved cache hygiene for cooldowns, synthetic damage markers, and damage type overrides. - Synchronized plugin, config, and language versions to3.5.0.Upgrade Notes
- Reviewconditions/emakiitem.ymlif 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)3.4.0Emaki Attribute 3.4.0Apr 28, 2026 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:AttributeBalanceRegistryfields renamed fromweightstoscores;weightOf→scoreOf. - PDC attribute API as service: EmakiAttribute now registersPdcAttributeApivia BukkitServicesManager, removing reflection. - Centralized permissions: addedAttributePermissionsfor 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 fromweightOf/weightstoscoreOf/scores. -attribute_balance.ymlstructure 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)3.3.0EmakiAttribute 3.3.0Apr 25, 2026 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, andattribute_removecan 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.ymlcan 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 currentversionkey style.Upgrade Notes
- Use Java 25. - Migrate custom version fields toversion. - 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)3.2.0EmakiAttribute 3.2.0Apr 24, 2026 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 readconditionsand rejectchecksas an unsupported field, while the loader now reports invalid entries more explicitly. - Vanilla attribute sync is safer across runtimes. The synchronizer no longer depends ongetKeyOrThrow()and resolves vanilla attributes through a safer key-aware path. - Spell critical naming is now consistent. Default balance resources renamedmagic_crit_rateandmagic_crit_damagetospell_crit_rateandspell_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 fromcheckstoconditions. - Rename oldmagic_crit_*entries tospell_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)3.1.0EmakiAttribute 3.1.0Apr 16, 2026 EmakiAttribute Changelog
[3.1.0] - 2026-04-16
Added
- Added adefault_profileblock inconfig.ymlso base resources and base attributes now live in the main configuration instead of the oldprofiles/global.ymlfile. - Added a flexiblechecksmodel for condition files withpdc_meta,pdc_attribute, andlore_regexsupport; 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. - IntroducedAttributeFusionMathand 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 directAttributetracking 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 forphysical_crit_damageand 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.3.0.0EmakiAttribute 3.0.0Apr 12, 2026 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
- Lore Format Enhancements: Added detailed comments and metadata to all Lore format files -Features
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: Adjustedread_priorityvalues 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
- 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.0Bug Fixes
- 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 orderImprovements & Optimizations
- Configuration Version Upgrade: -Chores & Refactoring
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 style2.2.0EmakiAttribute 2.2.0Apr 9, 2026 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 - Thepreviewsubcommand 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 asattack_speed_vanilla,physical_damage_bonus,projectile_damage_bonus,spell_crit_rate, andspell_damage_bonus, making lore display order more stable.Fixed
- Thepreviewcommand now distinguishes "no permission", "player not found", "invalid slot", and "no item in slot", which reduces ambiguity during investigation. -lintnow validates whetherdefault_damage_typeandallowed_damage_causesactually point to loaded damage types, preventing dangling config references.Upgrade Notes
- If you plan to run/emakiattribute previewfrom 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 lintafter every reload of custom attributes, damage types, presets, or PDC condition rules.Known Issues
- None2.1.0EmakiAttribute 2.1.0Apr 7, 2026 [2.1.0] - 2026-04-08
Added
#### PDC Attribute Writing and Conditional Reading Interface - AddedPdcAttributeApiand registered it via Bukkit Services. External plugins can now write, read, and clear structured attribute payloads on items, grouped bysource_id. - AddedPdcAttributeService,PdcAttributePayload, andPdcReadRule. This supports writing attribute values and meta data to an item's Persistent Data Container (PDC) and managing them grouped by source. - Added aconditions/directory andPdcReadRuleLoader. 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.ymlanddefault_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 -MmoItemsBridgenow listens for MMOItems main-hand/off-hand melee hits, projectile hits, and theSpecialWeaponAttackEvent. - 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 -AttributeSnapshotCollectornow 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.powernow automatically maps toattribute_power. - Resource placeholders now only retain explicit fields:current,max,default,bonus,percent. - Added a PDC rule loading phase to the plugin's lifecycle. Theconditions/directory is refreshed during reloads. - Command aliases have been adjusted fromeattr/attrtoeattribute/eato reduce conflicts with other plugin commands. #### Consolidation of Default Attribute Sets - Removed default attribute definitions forskill_damage_bonus,skill_crit_rate,skill_crit_damage, andskill_cdr. - Removeddamage_types/skill.ymland the example debug attributetest_attribute. - Corresponding default entries have been removed fromattribute_balance.ymlandprofiles/global.ymlto prevent new servers from inheriting the old skill attribute groupings.Upgrade Notes
- If your equipment, loot, strengthening, or other modules still referenceskill_damage_bonus,skill_crit_rate,skill_crit_damage, orskill_crit_damage, please migrate to your new attribute design before upgrading. - External plugins that wish to write structured attributes to items should first obtain thePdcAttributeApi, register their ownsource_id, and then proceed with writing. - Update old scripts calling/emakiattribute attror/emakiattribute eattrto useeattributeoreainstead. - 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
- None2.0.0EmakiAttribute 2.0.0Apr 3, 2026 EmakiAttribute Changelog
[2.0.0] - 2026-04-04
Added
#### Asynchronous Reload Process - AddedreloadPluginStateAsync(...), 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 reloadrepeatedly 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 - AddedAsyncDamageEngine, 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 eventEmakiAttributeDamageEventis still triggered on the main thread, ensuring safe compatibility for existing listeners.Changed
#### Lifecycle & Thread Safety - AddedAttributeLifecycleCoordinatorfor orchestrating the staged logic of the reload process. -DirectoryLoadernow supports asynchronous loading with progress callbacks. -AttributeRegistry,DamageTypeRegistry,DefaultProfileRegistry,AttributeBalanceRegistry, andLanguageLoaderhave been enhanced with synchronization protection to accommodate asynchronous read/write scenarios. #### Damage Calculation Structure Refactoring -DamageCalculationServicehas 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 forallowed_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 fileattributes/test_attribute.yml. - Optimized the format of the built-in description text inattribute_balance.yml, unifying the default descriptive style.Upgrade Notes
- RequiresEmakiCoreLib 2.0.0or higher. -/emakiattribute reloadhas 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 forEmakiAttributeDamageEventtypically require no changes; the event is still fired on the main thread.Known Issues
- None1.8.0EmakiAttribute 1.8.0Mar 31, 2026 EmakiAttribute Changelog
[1.8.0] - 2026-03-31
New Features
#### Attribute Damage Action System * Added theAttributeActionsregistry for managing the registration and unregistration of attribute-related actions. * Added theAttributeDamageActionaction, 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 toCUSTOM. * Automatically integrated into theEmakiCoreLibaction 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'sawareandaggressivestates. * 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 from1.1to1.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 theregisterCoreLibActions()method to register attribute actions when the plugin loads. * Added theunregisterCoreLibActions()method to unregister attribute actions when the plugin unloads. * Improved lifecycle management to ensure proper initialization and cleanup of the action system. #### DamageCalculationService * Added theapplyAggroTarget()method to handle Mob aggression target setting. * Refactored theapplyDirectDamage()method, extracting impact animation logic. * Added theplaySyntheticImpact()method to uniformly handle impact animations and sounds. * Improved the damage application process, enhancing combat feedback. #### AttributeConfig * Added thesyntheticHitKnockbackfield. * Added thesyntheticHitKnockbackStrengthfield. * Added thesyntheticHitHurtSoundfield. * Updated configuration parsing logic to support the new impact feedback settings.Usage Notes
#### Action System Integration * EnsureEmakiCoreLibversion ≥ 1.11.0. * Attribute actions are automatically registered when the plugin loads; no manual configuration is needed. * The action ID isattributedamageand 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 thesynthetic_hit_feedbacksection inconfig.yml. * Recommended range for knockback strength: 0.1 - 1.0. #### Compatibility * Deeply integrated withEmakiCoreLib 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
* None1.7.0EmakiAttribute 1.7.0Mar 30, 2026 1.6.0Emaki Attribute 1.6.0Mar 29, 2026 1.4.0Emaki Attribute 1.4.0Mar 28, 2026
Similar projects
Config →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta
Plasmo Voice
A proximity voice chat mod with audio positioning and lots of features
4.1MSueta