NaturesAura/src/main/java/de/ellpeck/naturesaura/potion/PotionBreathless.java
2024-03-12 19:04:56 +01:00

43 lines
1.2 KiB
Java

package de.ellpeck.naturesaura.potion;
import net.minecraft.world.effect.MobEffectCategory;
import net.minecraft.world.entity.LivingEntity;
import net.neoforged.neoforge.common.NeoForge;
import net.neoforged.neoforge.event.entity.living.LivingHealEvent;
import net.neoforged.bus.api.SubscribeEvent;
import java.util.Random;
public class PotionBreathless extends PotionImpl {
private final Random random = new Random();
public PotionBreathless() {
super("breathless", MobEffectCategory.HARMFUL, 0);
NeoForge.EVENT_BUS.register(this);
}
@SubscribeEvent
public void onHeal(LivingHealEvent event) {
var effect = event.getEntity().getEffect(this);
if (effect == null)
return;
var chance = (effect.getAmplifier() + 1) / 15F;
if (this.random.nextFloat() <= chance) {
event.setAmount(event.getAmount() / 4F);
}
}
@Override
public boolean shouldApplyEffectTickThisTick(int duration, int amplifier) {
var mod = 200 >> amplifier;
return mod > 0 && duration % mod == 0 && this.random.nextBoolean();
}
@Override
public void applyEffectTick(LivingEntity entity, int amplifier) {
entity.hurt(entity.damageSources().magic(), 1F);
}
}