You need to enable JavaScript to run this app. Forge 1.16.5 如何获取玩家副手所持物品的攻击伤害属性
优惠活动
大模型
产品
解决方案
定价
更多

Forge 1.16.5 如何获取玩家副手所持物品的攻击伤害属性

获取副手物品攻击伤害的正确实现

你之前调用mc.player.inventory.offhand.get(0)拿到的是ItemStack实例,攻击伤害不属于ItemStack的直接公开字段,需要从物品的属性修饰符列表中读取:

  • 第一步:判空处理,避免空物品栈报错
ItemStack offhandStack = mc.player.inventory.offhand.get(0);
// 副手为空时直接返回0伤害
if (offhandStack.isEmpty()) {
    return 0.0F;
}
  • 第二步:读取物品绑定的攻击伤害修饰符,统计总数值
Multimap<Attribute, AttributeModifier> attrModifiers = offhandStack.getAttributeModifiers(EquipmentSlot.OFFHAND);
double baseAttackDamage = 0.0D;
// 遍历累加所有攻击伤害修饰符数值
if (attrModifiers.containsKey(Attributes.ATTACK_DAMAGE)) {
    for (AttributeModifier modifier : attrModifiers.get(Attributes.ATTACK_DAMAGE)) {
        baseAttackDamage += modifier.getAmount();
    }
}
  • (可选)叠加玩家自身的攻击属性,得到实际生效的总伤害
double finalAttackDamage = baseAttackDamage + mc.player.getAttributeBaseValue(Attributes.ATTACK_DAMAGE);

版本适配提示:
1.16.5及以下版本属性类路径为net.minecraft.entity.ai.attributes.Attributes
1.17及以上版本属性类路径调整为net.minecraft.world.entity.ai.attributes.Attributes

内容的提问来源于stack exchange,提问作者gearDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 03:48:00