minecraft-src/net/minecraft/client/renderer/fog/environment/BlindnessFogEnvironment.java
2025-09-18 12:27:44 +00:00

51 lines
1.8 KiB
Java

package net.minecraft.client.renderer.fog.environment;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.DeltaTracker;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.client.renderer.fog.FogData;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Holder;
import net.minecraft.util.Mth;
import net.minecraft.world.effect.MobEffect;
import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
@Environment(EnvType.CLIENT)
public class BlindnessFogEnvironment extends MobEffectFogEnvironment {
@Override
public Holder<MobEffect> getMobEffect() {
return MobEffects.BLINDNESS;
}
@Override
public void setupFog(FogData fogData, Entity entity, BlockPos pos, ClientLevel level, float renderDistance, DeltaTracker deltaTracker) {
if (entity instanceof LivingEntity livingEntity) {
MobEffectInstance mobEffectInstance = livingEntity.getEffect(this.getMobEffect());
if (mobEffectInstance != null) {
float f = mobEffectInstance.isInfiniteDuration() ? 5.0F : Mth.lerp(Math.min(1.0F, mobEffectInstance.getDuration() / 20.0F), renderDistance, 5.0F);
fogData.environmentalStart = f * 0.25F;
fogData.environmentalEnd = f;
fogData.skyEnd = f * 0.8F;
fogData.cloudEnd = f * 0.8F;
}
}
}
@Override
public float getModifiedDarkness(LivingEntity entity, float darkness, float partialTick) {
MobEffectInstance mobEffectInstance = entity.getEffect(this.getMobEffect());
if (mobEffectInstance != null) {
if (mobEffectInstance.endsWithin(19)) {
darkness = Math.max(mobEffectInstance.getDuration() / 20.0F, darkness);
} else {
darkness = 1.0F;
}
}
return darkness;
}
}