BlindnessFogEnvironment.java

net.minecraft.client.renderer.fog.environment.BlindnessFogEnvironment

信息

  • 全限定名:net.minecraft.client.renderer.fog.environment.BlindnessFogEnvironment
  • 类型:public class
  • 包:net.minecraft.client.renderer.fog.environment
  • 源码路径:src/main/java/net/minecraft/client/renderer/fog/environment/BlindnessFogEnvironment.java
  • 起始行号:L17
  • 继承:MobEffectFogEnvironment
  • 职责:

    TODO

字段/常量

内部类/嵌套类型

构造器

方法

下面的方法块按源码顺序生成。

public Holder<MobEffect> getMobEffect() @ L18

  • 方法名:getMobEffect
  • 源码定位:L18
  • 返回类型:Holder
  • 修饰符:public

参数:

说明:

TODO

public void setupFog(FogData fog, Camera camera, ClientLevel level, float renderDistance, DeltaTracker deltaTracker) @ L23

  • 方法名:setupFog
  • 源码定位:L23
  • 返回类型:void
  • 修饰符:public

参数:

  • fog: FogData
  • camera: Camera
  • level: ClientLevel
  • renderDistance: float
  • deltaTracker: DeltaTracker

说明:

TODO

public float getModifiedDarkness(LivingEntity entity, float darkness, float partialTickTime) @ L37

  • 方法名:getModifiedDarkness
  • 源码定位:L37
  • 返回类型:float
  • 修饰符:public

参数:

  • entity: LivingEntity
  • darkness: float
  • partialTickTime: float

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class BlindnessFogEnvironment extends MobEffectFogEnvironment {
    @Override
    public Holder<MobEffect> getMobEffect() {
        return MobEffects.BLINDNESS;
    }
 
    @Override
    public void setupFog(FogData fog, Camera camera, ClientLevel level, float renderDistance, DeltaTracker deltaTracker) {
        if (camera.entity() instanceof LivingEntity livingEntity) {
            MobEffectInstance effect = livingEntity.getEffect(this.getMobEffect());
            if (effect != null) {
                float distance = effect.isInfiniteDuration() ? 5.0F : Mth.lerp(Math.min(1.0F, effect.getDuration() / 20.0F), renderDistance, 5.0F);
                fog.environmentalStart = distance * 0.25F;
                fog.environmentalEnd = distance;
                fog.skyEnd = distance * 0.8F;
                fog.cloudEnd = distance * 0.8F;
            }
        }
    }
 
    @Override
    public float getModifiedDarkness(LivingEntity entity, float darkness, float partialTickTime) {
        MobEffectInstance instance = entity.getEffect(this.getMobEffect());
        if (instance != null) {
            if (instance.endsWithin(19)) {
                darkness = Math.max(instance.getDuration() / 20.0F, darkness);
            } else {
                darkness = 1.0F;
            }
        }
 
        return darkness;
    }
}

引用的其他类