跳到正文

内置属性、数值计算与 operation

两种 operation

ADD 是固定加法。TOTAL_PERCENT 是对最终基础量的总乘区。对 AMOUNT 属性:

text
聚合值 = (基础值 + Σ ADD) × (1 + Σ TOTAL_PERCENT)

例:基础生命 100,装备 ADD 50,Buff TOTAL_PERCENT 0.20:

text
(100 + 50) × (1 + 0.20) = 180

PERCENT 与 RATING 属性只接受 ADD;它们本身已分别表示小数比例和 rating 点。API 中 0.15 表示 15%,但物品 JSON/Lore 输入写人类百分数 15,解析器会除以 100。

22 项内置属性的消费位置

属性计算用途有效值处理
physical_attack物理初始伤害≥0
spell_attack法术初始伤害≥0
true_damage真实伤害分量≥0
attack_speed_bonus攻击间隔≥-0.9
physical_defense / spell_defense对应减伤≥0
两项 *_penetration_rate忽略对应防御的比例0~1
accuracy_rating / evasion_rating闪避概率≥0
critical_chance / critical_resistance暴击概率差在战斗点夹取
critical_damage暴击倍率≥1
lifesteal_rating实际非真实伤害损失后的吸血≥0
reflection_rating实际非真实伤害损失后的反伤≥0
healing_power / received_healing_bonus主动治疗乘区结算时保证非负倍率
max_healthRPG 最大生命≥1
flat_health_regeneration每秒固定恢复≥0
percent_health_regeneration每秒按最大生命恢复≥0
movement_speed_bonusPaper owned modifier投影层处理
block_strength正面主动格挡0~配置上限

“有效值夹取”不会改写原来源;查询原始聚合与战斗有效值时要理解两者语义不同。扩展属性不会自动获得以上夹取。

命中与闪避

text
闪避率 = maximumEvasionRate × evasion / (evasion + accuracy)

accuracy 与 evasion 同为 0 时实现会走安全边界。最终按 INDEPENDENT 或 PRD 模型抽样。maximum-evasion-percent 是硬上限。

暴击

text
有效暴击率 = clamp(critical_chance - critical_resistance, 0, 1)
暴击后分量 = 暴击前分量 × critical_damage

具体哪些分量可暴击由 Combat Plan capability 决定;不要假设真实伤害必然暴击。

伤害分量与防御

计划先产生三个分量:

text
physical = fixedPhysical + physical_attack × physicalMultiplier
spell    = fixedSpell    + spell_attack    × spellMultiplier
true     = fixedTrue     + true_damage     × trueMultiplier

物理/法术防御分别应用:

text
有效防御 = defense × (1 - penetration)
减伤后伤害 = damage × reference / (reference + 有效防御)

reference 取计划下限和攻击者相应参考属性中的安全值。真实伤害不走防御。主动格挡只在目标正面角内减少物理/法术分量,不减少真实伤害。

攻击速度

text
间隔 = ceil(max(minimumInterval, baseInterval / (1 + attackSpeedBonus)))

基础默认 10 tick,最小 2 tick。权威监听器在冷却内拒绝重复计划,不能用客户端高频包绕过。

吸血与反伤

rating 转换为份额:

text
share = rating / (rating + reference)

两者基于目标实际损失的物理+法术部分,不基于被上限截断前的理论伤害,也不含真实伤害。反伤受 minimum-remaining-health 保护,默认不会把攻击者反死。

治疗与恢复

主动治疗:

text
实际治疗 = base × max(0, 1 + healing_power + received_healing_bonus)

并夹取到缺失生命。周期恢复:

text
本周期恢复 = (flat_regen + max_health × percent_regen) × intervalTicks / 20

同样不会超过缺失生命。资源恢复使用资源定义对应的上限、固定/百分比恢复属性;玩家离线时不计算恢复。

默认战斗计划边界

  • 基础近战与投射物是内置权威入口;投射物默认真实伤害倍率为 0。
  • 只有实体对实体进入权威链;环境伤害继续原版。
  • 其他插件若同时取消/重放伤害、额外调用 Bukkit damage 或 Mythic 原生 mechanic,会造成重复或冲突。正确做法是由一个入口生成一个 Plan。

算例

攻击者物攻 200,计划倍率 1;目标物防 100;穿透 25%;reference 100:

text
有效防御 = 100 × (1 - 0.25) = 75
伤害 = 200 × 100 / (100 + 75) ≈ 114.286

若正面格挡 30%,物理伤害约为 80;若再触发 1.5 倍暴击,实际阶段顺序以 combat trace 为准。不要靠手算猜第三方扩展插入的阶段。

Minecraft 服务端插件使用与开发文档