『模组开发日记』之霜冻

本文最后更新于 2025年9月14日 下午

霜冻


霜冻作为寒冰剑的特殊攻击效果

在玩家使用寒冰剑攻击生物时会对其施加霜冻效果

霜冻效果

霜冻

霜冻效果持续10秒

玩家或生物被施加上霜冻之后会减少当前20%的移动速度

在霜冻效果持续期间玩家或生物每三秒会扣除1点生命值

霜冻效果无法叠加


代码演示

下面是关于霜冻效果的实现代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
//霜冻效果
public class FrostEffect extends StatusEffect
{
private static final int DAMAGE_INTERVAL_TICKS = 60; // 每3秒扣一次血

protected FrostEffect(StatusEffectCategory category, int color)
{
super(category, color);
}

@Override
public boolean canApplyUpdateEffect(int duration, int amplifier)
{
// 每 tick 都会调用 applyUpdateEffect
return true;
}

@Override
public void applyUpdateEffect(LivingEntity entity, int amplifier)
{
World world = entity.getWorld();
// 每3秒扣一次血
StatusEffectInstance effect = entity.getStatusEffect(this);
if (effect != null && effect.getDuration() % DAMAGE_INTERVAL_TICKS == 0)
{
entity.damage(entity.getDamageSources().magic(), 2.0f + amplifier);
}

// 减速效果
//让实体在移动时受到阻力:
//X/Z 方向速度乘以 1.5f。
//Y 方向乘以 5(跳跃或下落时更慢/更快,取决于数值)。
//entity.slowMovement(state, new Vec3d(1.5f, 5.0f, 1.5f));//这里是仿照掉入细雪中的效果,因为其会限制玩家的跳跃所以弃用
//减20%移动速度
this.addAttributeModifier(
EntityAttributes.GENERIC_MOVEMENT_SPEED,
"662A6B8D-DA3E-4C1C-8813-96EA6097278D",//唯一标识码uuid
-0.20f * (amplifier + 1),
EntityAttributeModifier.Operation.MULTIPLY_TOTAL
);


// 粒子效果(客户端)
if (world.isClient)
{
Random random = world.getRandom();
// 提高出现概率
if (random.nextFloat() < 0.3f)
{
double px = entity.getX();
double py = entity.getY() + entity.getHeight() * 0.5; //实体中部
double pz = entity.getZ();
double vx = MathHelper.nextBetween(random, -0.05f, 0.05f);
double vy = 0.05f;
double vz = MathHelper.nextBetween(random, -0.05f, 0.05f);

world.addParticle(ParticleTypes.SNOWFLAKE, px, py, pz, vx, vy, vz);
}
}

entity.setInPowderSnow(true);

//遇到火焰去除效果
if (!world.isClient && entity.isOnFire()) {
entity.setOnFire(false);
}
}
}

以上代码用于 Fabric-1.20 版本模组开发

仅供参考,若想摘抄请在下方留言



后记

青金铜套装的效果

“一花一世界,一叶一菩提”


版权所有 © 2025 云梦泽
欢迎访问我的个人网站:https://hgt12.github.io/


『模组开发日记』之霜冻
http://example.com/2025/09/14/『模组开发日记』之霜冻/
作者
云梦泽
发布于
2025年9月14日
更新于
2025年9月14日
许可协议