ITM的护甲重量

ITM的护甲重量

根据物品属性添加可配置的护甲重量和容量,将重型装备转化为防护与移动速度之间的权衡。

护甲重量

将护甲进阶变成在防护与机动性之间的抉择。

ITM 的护甲重量会根据每件已装备物品的护甲值、护甲韧性和击退抗性属性来计算其重量。

每位玩家都有一个可配置的护甲重量容量。在此容量范围内的装备不会造成减速;超出的重量会逐渐降低移动速度。

由于该系统使用标准的物品属性而不是硬编码的材料列表,因此原版和模组护甲都会自动参与计算。

特性

  • 基于属性计算原版和模组护甲的重量。
  • 可配置的护甲重量容量。
  • 总重量在容量范围内时无移动惩罚。
  • 平滑的过载减速曲线,而非固定的护甲等级。
  • 可选的基于最大生命值的容量缩放。
  • 物品提示框预览重量、容量和预计减速效果。
  • 服务器控制的游戏设置与客户端同步。
  • 支持 Forge、NeoForge 和 Fabric。

玩家会注意到的变化

护甲重量将装备进阶转变为一种实用的权衡:

  • 穿戴轻型装备以获得机动性和更容易脱离战斗。
  • 接受中等重量以换取可靠的全方位防护。
  • 围绕重型护甲和降低的移动速度来构建玩法。
  • 混搭护甲部件,而不是自动选择最高可用属性。

前期和中期的护甲通常保持在默认容量之内。钻石和下界合金会带来适度的机动性代价,而异常沉重的模组装备则可能产生更强烈的惩罚。

默认平衡

默认的护甲重量容量为 20。完整的皮革、金、锁链和铁套装都在该容量范围内,因此不会造成减速。

下表假设使用默认容量,并且禁用了最大生命值缩放。

示例套装 总重量 过载 移动减速
全套皮革护甲 7 0 0%
全套金护甲 11 0 0%
全套锁链护甲 12 0 0%
全套铁护甲 15 0 0%
全套钻石护甲 24 4 约 2.9%
全套下界合金护甲 28.6 8.6 约 8.5%
植物魔法 - 泰拉钢 33.67 13.67 约 15.7%
冰与火传说 - 龙钢 54.4 34.4 约 42.6%
通用机械工具 - 强化黑曜石 55.8 35.8 约 44.0%

这些数值是示例,并非硬编码的特殊情况。模组行使用护甲在 Minecraft 1.20.1 中的默认物品属性,并逐件计算,而不是根据玩家聚合的护甲条计算:

  • 泰拉钢:总共 20 点护甲值、12 点韧性、1.0 点击退抗性
  • 龙钢:总共 34 点护甲值和 24 点韧性
  • 强化黑曜石:总共 31 点护甲值、20 点韧性和 0.8 点击退抗性

其他模组版本或整合包配置可能会更改这些属性,从而产生不同的重量。

物品重量的计算方式

对于单件物品的正向加法护甲值 (A)、护甲韧性 (T) 和击退抗性 (K) 属性:

单件重量 =
    A * 护甲影响
      * (1 + T * 韧性影响)
      * (1 + K * 击退抗性影响)

默认影响值:

  • 护甲影响 = 1.0
  • 韧性影响 = 0.1
  • 击退抗性影响 = 1.0

护甲值提供物品的基础重量。韧性和击退抗性会乘算该基础值,因为这些次要防御属性在与护甲值结合时变得更有价值。所有已装备部件的重量随后加在一起。

如果两件物品具有相同的次要属性,且其中一件提供的护甲值是另一件的两倍,那么它的重量也是另一件的两倍。一件没有护甲值的物品,即使提供了次要属性之一,其重量也为零。

重量如何转化为减速

设 W 为总装备重量,C 为玩家的有效护甲重量容量:

过载 = max(0, W - C)

只有过载部分会受到惩罚。对于半速过载 H 和曲线指数 E:

剩余速度 = 1 / (1 + (过载 / H) ^ E)

默认值:

  • 基础护甲重量容量 = 20
  • 半速过载 = 42
  • 过载曲线指数 = 1.5

H 是一个直接的平衡锚点:当过载达到 42 时,玩家保留正好 50% 的移动速度。在默认容量下,这发生在总重量 62 时。

E 控制曲线形状:

  • E = 1.0 产生基本的双曲线。
  • 高于 1.0 的值使轻度过载更平缓,重度过载更陡峭。
  • 介于 0 和 1.0 之间的值使轻度过载的惩罚更重。

可选的最高减速限制默认禁用,允许极重的护甲接近完全无法移动。服务器可以启用该限制并选择其值。默认配置值为 0.8,它将惩罚上限设为 80%,至少保留 20% 的移动速度。

可选的最大生命值缩放

服务器可以选择性地使用玩家的有效最大生命值来缩放基础护甲重量容量。此功能默认禁用,因此安装该模组不会自动将生命值成长与护甲平衡联系起来。

设 M 为有效最大生命值,R 为参考最大生命值,I 为缩放影响:

容量缩放 = max(0, 1 + (M / R - 1) * I)

默认值:

  • 启用最大生命值容量缩放 = false
  • 参考最大生命值 = 20
  • 最大生命值缩放影响 = 1.0

影响值控制最大生命值百分比变化对基础容量的影响程度:

  • I = 0 禁用最大生命值变化的影响。
  • I = 0.5 应用最大生命值百分比变化的一半。
  • I = 1.0 使容量与最大生命值成直接比例缩放。
  • I = 2.0 应用两倍的百分比变化。

例如,基础容量为 20,参考最大生命值为 20,有效最大生命值为 40 时,影响值为 0.5 产生基础容量 30,影响值为 1.0 产生 40,影响值为 2.0 产生 60。

计算使用有效最大生命值,因此原版的生命提升和兼容的模组生命值属性会自动生效。缩放以瞬态乘算基础修饰符的形式应用于 armor_weight:armor_weight_capacity,允许其他模组添加自己的容量修饰符而不会被覆盖。

提示框

具有正重量的护甲物品会获得一行原版风格的提示框文本:

+3 护甲重量

普通提示框还会提示玩家按住 Alt 键以获取更多信息。按住 Alt 键会保留物品重量行并添加预计摘要:

16/20 护甲重量
-0% 速度

预览会考虑当前装备在同一槽位中的物品,显示替换该物品的结果,而不是将两件重量相加。

重量和容量在容量范围内显示为蓝色,过载时显示为红色。速度行在 0% 时显示为蓝色,当有减速时显示为红色。

提示框的可见性可以在客户端配置中禁用。

移动整合

减速以瞬态移动速度属性修饰符的形式应用,而不是缓慢状态效果。

该模组还会缩放原版疾跑跳跃产生的额外水平冲量。这可以防止疾跑跳跃绕过护甲重量,同时不会两次缩放玩家现有的动量。

重量会在装备、卸下或替换护甲时重新计算,并在登录、重生和应用服务器配置时重新计算。缓存的装备重量不会每个游戏刻都重新计算。

护甲重量容量是一个同步的玩家属性,名为 armor_weight:armor_weight_capacity。其有效值每个服务器刻都会被检查,因此其他模组可以通过普通的属性修饰符来提高或降低容量,而无需强制玩家重新装备护甲。

临时技能、状态效果和直接应用于其他玩家属性的修饰符不会改变物品重量。只有已装备护甲物品提供的属性会被评估。

配置

服务器控制的游戏设置:

  • 护甲影响
  • 韧性影响
  • 击退抗性影响
  • 基础护甲重量容量
  • 启用最大生命值容量缩放
  • 参考最大生命值
  • 最大生命值缩放影响
  • 半速过载
  • 过载曲线指数
  • 启用最高减速
  • 最高减速
  • 影响疾跑跳跃冲量

客户端设置:

  • 显示物品重量提示框

移动预测和物品重量预览所需的游戏设置会同步到已连接的客户端。有效的护甲重量容量通过 Minecraft 的属性系统同步,确保显示的容量和减速与服务器一致。

模组兼容性

使用标准加法护甲值、护甲韧性和击退抗性属性的护甲会自动获得支持,包括来自其他模组的装备。

ITM 的护甲重量对其他 ITM 移动模组没有必需的依赖关系:

  • 疾跑均衡器与护甲重量的移动速度修饰符和疾跑跳跃调整兼容。
  • 空中冲刺会读取最终的移动速度,因此在启用水平移动速度缩放时,较重的护甲会减少冲刺距离。

这些整合使用原版属性和移动行为,而不是直接的模组依赖。

安装与要求

支持的平台:

  • Minecraft 1.20.1 - Forge
  • Minecraft 1.21.1 - NeoForge
  • Minecraft 26.1.2 - NeoForge
  • Minecraft 26.1.2 - Fabric

安装与你的确切 Minecraft 版本和模组加载器匹配的文件。

该模组必须同时安装在客户端和服务器上。在单人游戏中,将其安装在正常的客户端模组文件夹中即可覆盖两端。

Fabric 安装还需要 Fabric API。

整合包

你可以在公共或私人整合包中包含未经修改的模组,无需征得许可。

护甲重量根据 Apache 许可证 2.0 分发。