Tacz 属性添加

Tacz 属性添加

一个为Tacz提供动态玩家属性的模组。

TAA Mod - Tacz 属性增强模组

属性系统

伤害属性

  • 通用枪械伤害:taa:bullet_gundamage - 所有枪械的基础伤害加成

特定枪械伤害属性

  • 手枪:taa:bullet_gundamage_pistol - 手枪专属伤害加成
  • 步枪:taa:bullet_gundamage_rifle - 步枪专属伤害加成
  • 霰弹枪:taa:bullet_gundamage_shotgun - 霰弹枪专属伤害加成
  • 狙击步枪:taa:bullet_gundamage_sniper - 狙击步枪专属伤害加成
  • 冲锋枪:taa:bullet_gundamage_smg - 冲锋枪专属伤害加成
  • 轻机枪:taa:bullet_gundamage_lmg - 轻机枪专属伤害加成
  • 发射器:taa:bullet_gundamage_launcher - 发射器专属伤害加成(如 RPG)

核心枪械属性(共 20 项)

  • 瞄准时间:taa:ads_time - 瞄准速度加成(数值越低越快)
  • 弹药速度:taa:ammo_speed - 子弹初速加成
  • 护甲穿透:taa:armor_ignore - 护甲穿透能力
  • 有效射程:taa:effective_range - 最大有效射击距离
  • 机动性惩罚:taa:move_speed - 枪械移动速度减益
  • 爆头倍率:taa:headshot_multiplier - 爆头伤害倍率
  • 击退效果:taa:knockback - 子弹击退力度
  • 穿透数量:taa:pierce - 子弹实体穿透次数
  • 射速:taa:rounds_per_minute - 每分钟发射数
  • 后坐力:taa:recoil - 枪械后坐力减免
  • 散布精度:taa:inaccuracy - 子弹散布降低(数值越低越好)
  • 重量:taa:weight - 枪械重量减免(数值越低越好)
  • 弹匣容量:taa:magazine_capacity - 弹匣容量加成
  • 换弹时间:taa:reload_time - 换弹速度加成
  • 近战伤害:taa:melee_damage - 近战攻击力加成
  • 近战范围:taa:melee_distance - 近战攻击距离加成
  • 子弹数量:taa:bullet_count - 每次射击弹丸数量加成

特殊效果

  • 消音效果:taa:silence - 消音效果(<1.0 激活被动消音)
  • 点燃效果:taa:ignitefire - 子弹点燃几率

爆炸系统

  • 爆炸半径:taa:explosion_radius - 爆炸范围加成
  • 爆炸伤害:taa:explosion_damage - 爆炸伤害加成
  • 爆炸击退:taa:explosion_knockbacknew - 爆炸击退力度
  • 方块破坏:taa:explosion_destroy_blocknew - 方块破坏能力
  • 爆炸延迟:taa:explosion_delay - 爆炸延迟时间

配件修饰符系统

  • 近战伤害:melee_damage - 近战攻击伤害
  • 近战范围:melee_distance - 近战有效范围
  • 弹匣容量:magazine_capacity - 弹匣容量
  • 换弹时间:reload_time - 换弹时间
  • 子弹数量:bullet_count - 每次射击弹丸数量

属性值规范

  • 基础值:1.0(100% 效果)
  • 加成值:
  • 示例:0.5 = 50% 提升(最终倍率 = 1.0 + 0.5 = 1.5倍)
  • 1.0 = 100% 提升(无额外效果)
  • 布尔属性:0.0 = 否,1.0 = 是
  • 被动激活:消音等属性自动触发条件(<1.0)

伤害计算模式

可配置模式(通过 taa-attributes.toml):

  1. 最大值模式(默认)

    • 公式:Math.max(基础伤害, 专属伤害)
    • 在基础伤害和特定枪械伤害之间取较高值
  2. 加法模式

    • 公式:基础伤害 + 专属伤害 - 1.0
    • 在保留基础伤害的同时合并数值
  3. 乘法模式

    • 公式:基础伤害 × 专属伤害
    • 将基础伤害与特定枪械伤害相乘

技术实现

核心组件

  • PropertyCalculator:处理所有属性计算
  • PlayerAttributeHelper:获取玩家属性
  • PropertyCacheUpdater:更新配件缓存中的计算值
  • GunPropertiesInitializer:动态初始化枪械属性
  • AttributeConfig:管理配置设置
  • GunTypeContext:追踪当前枪械类型上下文

客户端/服务器架构

  • 客户端安全:

    • UI 方法使用 @OnlyIn(Dist.CLIENT) 注解
    • 客户端侧混入配置于 taa.mixins.json
    • 不执行任何服务端客户端代码
  • 数据一致性:

    • 修饰符与 TACZ 配件系统完全兼容
    • 计算在服务端执行
    • 属性更新通过标准 AttachmentPropertyManager

计算流程

  1. 枪械属性处理期间触发事件
  2. 通过 Tacz API 识别枪械类型
  3. 在 GunTypeContext 中设置上下文
  4. 基于模式执行计算
  5. 使用新值更新缓存
  6. TACZ 系统应用最终属性

兼容性与配置

配件系统

  • 5 种与 TACZ 配件兼容的新修饰符类型:
  • 近战伤害
  • 近战范围
  • 弹匣容量
  • 换弹时间
  • 子弹数量
  • 标准化实现,确保跨模组兼容性。