属性

发表时间: 2025-11-14 14:44:49

最后更新: 2025-11-14 14:44:49(4小时前)

本文标签: 生物机制

用户头像-Connie 等1名 热心馆友编辑完成

属性是我的世界的一种游戏内容

介绍

  1. 属性(Attributes)是生物在游戏中的增益或减益特性系统。

  2. 这些属性的效果可通过修饰符(Modifiers)进行调整,从而影响属性的强度。

  3. 每一个独立的属性都对应生物的特定能力,例如攻击力和移动速度等。

  4. 所有属性的数值都是以双精度浮点数形式表示。

  5. 修饰符可以改变属性的基础值,类似于属性本身,它们也拥有命名空间ID(id)。

  6. 修饰符的ID或名称并不直接反映其具体效果,而是受限于属性类型(type)、运算方式(operation)以及修饰值(amount)的影响。

  7. 修饰值的极限可达到双精度浮点数的最大限制。

  8. 然而,无论总的修饰值如何,经过修饰计算后的属性值始终会被限制在该属性的有效范围内。

属性

  1. 属性在游戏中具有若干基本特性。
  2. 值域定义了属性计算值的可接受范围,超出此范围的值会被调节至值域的最低或最高限度。
  3. 每种属性的类型决定了效果的优劣,并且会影响其修饰符在提示框中的颜色:增强正面属性的修饰符为蓝色,而减弱正面属性的修饰符则为红色。
  4. 负面属性的增强修饰符同样为红色,降低负面属性的修饰符则呈现为蓝色,而中性属性的修饰符颜色则为灰色。
  5. 每种属性适用于特定的生物,而在无法适用的生物身上则不会存在。
  6. 每个属性的初始值为该属性实例的默认基值。
  7. 在每一种生物身上,所有属性都包含以下数据:基值(Base)是指该属性在应用修饰符之前的数值。
  8. 修饰符(Modifiers)旨在影响属性,进而改变其计算值。
  9. 生物的属性最终以计算值的形式来发挥作用。

已知属性项

属性名称 属性ID 类型 描述
护甲值 armor 正面 护甲值与盔甲韧性共同作用,减少生物受到的伤害
盔甲韧性 armor_toughness 正面 护甲值与盔甲韧性共同作用,减少生物受到的伤害
攻击伤害 attack_damage 正面 生物的近战攻击伤害
击退 attack_knockback 正面 生物的攻击造成的击退强度的增量
攻击速度 attack_speed 正面 玩家的攻击速度
方块破坏速度 block_break_speed 正面 玩家破坏方块的速度乘数
方块交互距离 block_interaction_range 正面 玩家可以与方块交互的距离
着火时间 burning_time 负面 设置生物剩余着火时间效果的乘数
镜头距离 camera_distance 中性 设置第三人称视角摄像机与玩家或被旁观实体的距离
实体交互距离 entity_interaction_range 正面 玩家可以与实体交互的距离
爆炸击退抗性 explosion_knockback_resistance 正面 生物对爆炸击退的抵抗强度
摔落伤害倍数 fall_damage_multiplier 负面 生物受到的摔落伤害的乘数
飞行速度 flying_speed 正面 生物的飞行移动的速度
生物跟随距离 follow_range 正面 生物AI可追踪和寻路的最大范围
重力 gravity 中性 生物在垂直方向上持续受到的向下加速的加速度
跳跃力度 jump_strength 正面 生物进行跳跃时获得的垂直速度
击退抗性 knockback_resistance 正面 生物对击退的抵抗强度
幸运 luck 正面 幸运值使玩家获得更好的战利品
最大伤害吸收 max_absorption 正面 生物的最大伤害吸收
最大生命值 max_health 正面 生物的最大生命值
挖掘效率 mining_efficiency 正面 玩家的挖掘速度增量
移动效率 movement_efficiency 正面 生物对脚下方块影响移动效果的抵抗
速度 movement_speed 正面 生物的地面移动速度
额外氧气 oxygen_bonus 正面 生物抵抗氧气下降的能力
安全摔落高度 safe_fall_distance 正面 生物不受摔落伤害的高度
尺寸 scale 中性 生物的尺寸乘数
僵尸增援 spawn_reinforcements 正面 僵尸生成僵尸增援的能力
潜行速度 sneaking_speed 正面 玩家的潜行时的速度乘数
最大行走高度 step_height 正面 生物不需要跳跃就可以走上的最大高度
下挖掘速度 submerged_mining_speed 正面 玩家浸没在水中时的挖掘速度乘数
横扫伤害比率 sweeping_damage_ratio 正面 玩家的横扫伤害与近战伤害的比例
生物引诱范围 tempt_range 正面 生物能被玩家引诱的最大距离
水中移动效率 water_movement_efficiency 正面 生物对影响移动效果的抵抗
路径点传输距离 waypoint_transmit_range 中性 设置玩家路径点传输距离,用于定位栏
路径点接收距离 waypoint_receive_range 中性 设置玩家路径点接收距离,用于定位栏

修饰符

一、 来源

  1. 除命令外,生物会受物品(包括其上的魔咒)、状态效果、所处位置和实体数据的影响添加或移除属性修饰符。
  2. 属性修饰符的来源为物品时,此物品必须置于指定生物槽位中。
  3. 如果物品有耐久度,则剩余耐久度为0时,修饰符也不会生效。
  4. 如果两个修饰符具有相同的ID且作用于同一个属性,那么后加入的修饰符会替代先加入的修饰符生效,而不会将它们相叠加。

二、 持久化

  1. 在《我的世界》中,并非所有的修饰符都会在生物的数据存档中长久保留。

  2. 可持久化的修饰符能够通过命令例如/data进行查询,而那些不可持久化的修饰符则不可以通过除了/attribute之外的其他命令获得。

  3. 尽管修饰符的持久化状态不同,它们对计算属性值的影响是相同的。

  4. 当生物的数据被持久化保存到文件时,内存中存在的不可持久化修饰符将不会被记录。

  5. 所有与魔法咒语相关的属性效果修饰符以及物品的修饰符都被归类为不可持久化修饰符,而所有的状态效果修饰符则被视为可持久化修饰符。

三、 行为

  1. 在应用某种属性时,系统会基于该属性的基值与所有相关的修饰符进行运算,最终得出计算结果。

  2. 通常情况下,提示框会展示物品所能够赋予的各种修饰符信息。

  3. 这些修饰符包含了物品堆叠组件中attribute_modifiers所指定的ID修饰符、魔咒属性效果所带来的修饰符,以及状态效果所给予的修饰符。

  4. 修饰值在提示框中通常会保留两位小数。

  5. 如果修饰符的值为零,提示框将不会显示该修饰值。

  6. 针对attribute_modifiers组件中ID为base_attack_damage或base_attack_speed的修饰符,尽管其数值为零,这些修饰符依然会在提示框中显示为深绿色并忽略类型的影响。

  7. 与非基础修饰符相比,这类基础修饰符向右偏移一个空白,并且不会出现“+”号,负号则会正常显示。

  8. 对于base_attack_damage,其显示值是物品的修饰值与attack_damage属性的基值之和。

  9. 同理,base_attack_speed的显示值则是物品的修饰值与attack_speed属性的基值之和。

  10. 如果修饰值被解析为Infinity或-Infinity,这些值在提示框中将分别显示为“∞”或“-∞”。

四、 运算模式

  1. 属性修饰符的运算模式(Operation)决定了它修改基值的方式。
  2. 游戏按照固定顺序执行以下三种操作:
增量操作(add_value,Op0)
  1. 属性基值加上指定增量值。
  2. 设该操作运算后的值为Result0,则Result0=base+∑Op0i,其中base代表被该操作修饰前的属性基值,Op0i代表第i个参与运算的Op0修饰符的值。
  3. 例:给定增量操作{amount:2,operation:'add_value'}和{amount:4,operation:'add_value'},它们一同修饰基值为3的某个属性,则修饰过程为3+(2+4)=9。
倍率操作(add_multiplied_base,Op1)
  1. 对增量操作完成后的值进行加倍。
  2. 设该操作运算后的值为Result1,则Result1=Result0×(1+∑Op1i),其中Op1i代表第i个参与运算的Op1修饰符的值。
  3. 例:在上一例的基础上又给定倍率操作{amount:3,operation:'add_multiplied_base'}和{amount:6,operation:'add_multiplied_base'},则修饰过程为9×(1+3+6)=90。
最终倍乘操作(add_multiplied_total,Op2)
  1. 对倍率操作完成后的值进行连续加倍。
  2. 设该操作运算后的值为Result2,则Result2=Result1×∏(1+Op2i),其中Op2i代表第i个参与运算的Op2修饰符的值。
  3. 例:在上一例的基础上又给定最终倍乘操作{amount:2,operation:'add_multiplied_total'}和{amount:4,operation:'add_multiplied_total'},则修饰过程为90×(1+2)×(1+4)=1350。
  1. 总公式:(base+∑Op0i)×(1+∑Op1j)×∏(1+Op2k),其中base代表属性基值,Op0i,Op1j,Op2k分别代表参与运算的第i个Op0修饰符的值、第j个参与运算的Op1修饰符的值、第k个参与运算的Op2修饰符的值。

应用

  1. 当属性修饰符应用到一个物品生物时,它可以将拥有者的某项属性进行修正。[2][3]
  2. 下面的命令会给予命令执行者一个属性修饰符,以使其变大:/attribute @s minecraft:scale modifier add scale_bonus 0.25 add_value
  3. 下面的命令将给予命令执行者一把在主手中增加20(我的世界百科属性应用配图 × 10)点额外伤害钻石
  4. /give @s diamond_sword[attribute_modifiers=[{type:"attack_damage", id:"minecraft:base_attack_damage", slot:"mainhand", amount:20, operation:"add_value"}]]
  5. 下面的命令将召唤一个僵尸,当玩家接近它100格时就会被它发现,而不是通常的35格:
  6. /summon zombie ~ ~ ~ {attributes:[{id:"follow_range",base:100.0d}]}
📑
🤔
⬆️