From c41652540f4fc82cd8ca192cb38116f356168e93 Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 16 Jul 2025 21:03:21 +0300 Subject: [PATCH] Add freezing entities and removing hellfire for Fire extinguisher --- .../tfmg/base/spark/DryIceFlake.java | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/drmangotea/tfmg/base/spark/DryIceFlake.java b/src/main/java/com/drmangotea/tfmg/base/spark/DryIceFlake.java index e941d949..569948dd 100644 --- a/src/main/java/com/drmangotea/tfmg/base/spark/DryIceFlake.java +++ b/src/main/java/com/drmangotea/tfmg/base/spark/DryIceFlake.java @@ -1,10 +1,12 @@ package com.drmangotea.tfmg.base.spark; -import com.drmangotea.tfmg.registry.TFMGBlocks; import com.drmangotea.tfmg.registry.TFMGEntityTypes; +import com.drmangotea.tfmg.registry.TFMGMobEffects; import net.minecraft.core.BlockPos; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; @@ -78,6 +80,31 @@ public class DryIceFlake extends ThrowableProjectile { if (!this.level().isClientSide) { Entity hitEntity = entityHit.getEntity(); hitEntity.extinguishFire(); + + if (hitEntity.canFreeze()) { + // Apply freezing + int currentFreeze = hitEntity.getTicksFrozen(); + int freezeIncrement = 10; + int newFreeze = Math.min(currentFreeze + freezeIncrement, hitEntity.getTicksRequiredToFreeze() + 20); // Slightly overfreeze + hitEntity.setTicksFrozen(newFreeze); + + // Damage if fully frozen + if (newFreeze >= hitEntity.getTicksRequiredToFreeze()) { + hitEntity.hurt(this.damageSources().freeze(), 2.0F); + } + + // Slow movement and remove hellfire + if (hitEntity instanceof LivingEntity livingEntity) { + livingEntity.addEffect(new MobEffectInstance( + MobEffects.MOVEMENT_SLOWDOWN, + 20, + 2, + false, false, true + )); + + livingEntity.removeEffect(TFMGMobEffects.HELLFIRE.get()); + } + } } }