You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java代码中用实体属性修改Minecraft玩家最大生命值(Forge 1.18.2)

Forge 1.18.2 实现可叠加的最大生命值提升装备

核心思路

利用原版EntityAttributes.MAX_HEALTH属性,通过**属性修改器(AttributeModifier)**实现固定数值叠加效果。关键是给每件装备分配唯一UUID,确保多件装备的修改器不会互相覆盖,同时选择ADDITION运算逻辑实现数值累加。


步骤1:创建带属性修改器的装备类

以护甲类装备为例(普通物品/自定义槽位逻辑类似),编写继承ArmorItem的类,在构造器中添加属性修改器:

import net.minecraft.world.entity.ai.attributes.AttributeModifier;
import net.minecraft.world.entity.ai.attributes.Attributes;
import net.minecraft.world.item.ArmorItem;
import net.minecraft.world.item.ArmorMaterials;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item;
import java.util.UUID;

public class HealthBoostChestplate extends ArmorItem {
    // 生成唯一UUID(可通过在线UUID工具生成)
    private static final UUID HEALTH_BOOST_UUID = UUID.fromString("f4c2d1a0-7e89-4b3c-8d2e-1f7a6b5c4d3e");

    public HealthBoostChestplate() {
        // 基础护甲配置:钻石材质、胸甲槽位、放入战斗物品栏
        super(ArmorMaterials.DIAMOND, Type.CHESTPLATE,
                new Item.Properties().stacksTo(1).tab(CreativeModeTab.TAB_COMBAT));
        
        // 添加最大生命值提升的属性修改器
        this.addAttributeModifier(Attributes.MAX_HEALTH,
                HEALTH_BOOST_UUID,
                6.0D, // 每件装备提升6点生命值(3颗心)
                AttributeModifier.Operation.ADDITION, // 运算类型:直接累加数值
                Type.CHESTPLATE.getSlot()); // 指定仅在胸甲槽位装备时生效
    }
}

关键参数说明:

  • UUID:每个属性修改器必须唯一,否则多件装备的效果会互相覆盖。
  • Operation.ADDITION:直接叠加固定数值,是实现多件装备效果累加的核心。另外两种运算类型:
    • MULTIPLY_BASE:基于基础生命值的百分比提升(如0.1=10%),多件会叠加计算
    • MULTIPLY_TOTAL:基于当前总生命值的百分比提升,不推荐用于可叠加装备(会指数增长)
  • 装备槽位:通过最后一个参数指定修改器生效的槽位,确保只有装备时才触发效果。

步骤2:注册装备

在你的Mod注册类中完成物品注册:

import net.minecraft.world.item.Item;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;

public class ModItems {
    // 注册器,替换为你的ModID
    public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, "your_mod_id");

    // 注册生命值提升胸甲
    public static final RegistryObject<Item> HEALTH_BOOST_CHESTPLATE = ITEMS.register(
            "health_boost_chestplate",
            HealthBoostChestplate::new
    );
}

步骤3:验证效果

启动游戏后,装备一件该胸甲,玩家最大生命值会增加对应数值;装备多件同类型/不同类型的生命值提升装备(只要每个修改器UUID唯一),效果会直接累加,完全符合需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:55:31