这是一个库模组,旨在让我的模组和其他模组能够对伤害以及一些战斗机制进行更好的控制。
默认情况下,这个模组会执行以下功能:
修改造成暴击时的伤害类型,使模组能够轻松追踪一次攻击是否为暴击。伤害类型为 "pml:player_critical"
修改造成横扫攻击时的伤害类型。伤害类型为 "pml:sweeping_damage"。
对于 Mod 开发者
它新增了一种注册并添加伤害加成与减免的方式,同时还能与 First Aid Mod 协同工作,以实现对受伤身体部位的控制。
DamageControl 类是核心组件。它提供了一种结构化的方式,用于在伤害应用到游戏中之前修改、控制并计算伤害数值。
该系统允许使用多种修饰器,包括固定加成、基于百分比的加成,以及来自护甲、附魔和特殊机制的减伤。
🔧 工作原理:
系统从原始基础伤害开始。
它会应用武器特定缩放(在进一步计算前降低伤害)。
首先应用基础加成(固定值和百分比)。
然后应用额外加成(固定值和百分比)。
系统会计算减伤(护甲、附魔、特殊减伤)。
最终伤害会被存储,并且可以在 LivingDamageEvent 中获取或修改。
📊 变量说明:
🛠️ 用于提高伤害的修饰器
Variable Description
baseFlatBonus 在百分比乘算前添加的固定加成(例如:+10 伤害)。
basePercentBonus 在其他计算前应用的百分比增幅(例如:1.2 倍)。
flatBonus 在基础加成之后添加的固定加成(例如:+5 伤害)。
percentBonus 在基础计算后应用的百分比增幅。
🛡️ 用于降低伤害的修饰器
Variable Description
weapondamagecontrol 控制所有计算前基于武器的缩放。
armorReduction 由于护甲而减少的伤害(单独处理)。
enchReduction 由于附魔而减少的伤害(单独处理)。
specialReduction 直接减少最终伤害,因此必须谨慎使用。
📌 用于参考的原始值
Variable Description
originalDamage 存储所有计算完成后的最终伤害,供 LivingDamageEvent 使用。
originalAbsorption 存储修改前的吸收值。
🛠️ 关键方法
✔️ 添加加成
🛡️ getArmorReduction()
✅ 返回:由于护甲造成的减伤数值。
💡 用法:该值由 setArmorReduction(float value) 设置,表示被基于护甲的机制所抵挡的伤害量(例如原版护甲计算或其他模组的自定义护甲效果)。
🔮 getEnchantmentReduction()
✅ 返回:由附魔导致的减伤数值。
💡 用法:该值用于追踪防御类附魔(如 Protection 或自定义附魔)对最终伤害的削减量。模组可以使用它来平衡附魔效果,或在工具提示中显示它们。
⚠️ getSpecialReduction()
✅ 返回:通过特殊机制应用的直接减伤数值。
💡 用法:这是最强力的减伤形式,因为它会在伤害计算的最后一步被减去。模组应谨慎使用它,因为如果数值过高,它可能会完全抵消伤害。
📌 First Aid Mod 兼容系统
该系统与 First Aid mod 集成。First Aid mod 通过引入按身体部位区分的受伤机制来修改伤害处理方式。以下代码有助于在使用 First Aid mod 时追踪受伤的身体部位,并确保与 DamageControl 系统兼容。
🛠️ 关键方法
🔍 getDamagedBodyPart(Player player)
✅ 用途:获取受伤的身体部位。返回一个与受伤部位对应的 EquipmentSlot 变量。
💡 用法:
该方法只应在 LivingDamageEvent 期间并且已安装 First Aid 时使用。
如果该玩家未被映射,则返回 null。
一个使用示例可以在模组 Just a lot more Enchantments 中找到。
友情链接: 网易我的世界 | 泰拉瑞亚 | ocent云计算 | 米饭Minecraft插件文档 | 友链合作
历史访问人数:172,124 | 历史访问人次:272,316
今日访问人数:9,102 | 今日访问人次:10,209
昨日访问人数:23,567 | 昨日访问人次:27,193
Copyright © 2019-2026 我的世界服务器列表站. All rights reserved.
❤ Powered by GermMC 京ICP备17023959号-6