File size: 1,326 Bytes
d46f4a3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
package net.minecraft.world.effect;

import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.Difficulty;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.raid.Raid;

class BadOmenMobEffect extends MobEffect {
    protected BadOmenMobEffect(MobEffectCategory p_298574_, int p_301000_) {
        super(p_298574_, p_301000_);
    }

    @Override
    public boolean shouldApplyEffectTickThisTick(int p_297444_, int p_300866_) {
        return true;
    }

    @Override
    public boolean applyEffectTick(ServerLevel p_368915_, LivingEntity p_299568_, int p_299125_) {
        if (p_299568_ instanceof ServerPlayer serverplayer
            && !serverplayer.isSpectator()
            && p_368915_.getDifficulty() != Difficulty.PEACEFUL
            && p_368915_.isVillage(serverplayer.blockPosition())) {
            Raid raid = p_368915_.getRaidAt(serverplayer.blockPosition());
            if (raid == null || raid.getRaidOmenLevel() < raid.getMaxRaidOmenLevel()) {
                serverplayer.addEffect(new MobEffectInstance(MobEffects.RAID_OMEN, 600, p_299125_));
                serverplayer.setRaidOmenPosition(serverplayer.blockPosition());
                return false;
            }
        }

        return true;
    }
}