35 lines
1.3 KiB
Java
35 lines
1.3 KiB
Java
|
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;
|
||
|
}
|
||
|
}
|