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

43 lines
1.7 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 DarknessFogEnvironment extends MobEffectFogEnvironment {
@Override
public Holder<MobEffect> getMobEffect() {
return MobEffects.DARKNESS;
}
@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 = Mth.lerp(mobEffectInstance.getBlendFactor(livingEntity, deltaTracker.getGameTimeDeltaPartialTick(false)), renderDistance, 15.0F);
fogData.environmentalStart = f * 0.75F;
fogData.environmentalEnd = f;
fogData.skyEnd = f;
fogData.cloudEnd = f;
}
}
}
@Override
public float getModifiedDarkness(LivingEntity entity, float darkness, float partialTick) {
MobEffectInstance mobEffectInstance = entity.getEffect(this.getMobEffect());
return mobEffectInstance != null ? Math.max(mobEffectInstance.getBlendFactor(entity, partialTick), darkness) : darkness;
}
}