DustColorTransitionParticle.java

net.minecraft.client.particle.DustColorTransitionParticle

信息

  • 全限定名:net.minecraft.client.particle.DustColorTransitionParticle
  • 类型:public class
  • 包:net.minecraft.client.particle
  • 源码路径:src/main/java/net/minecraft/client/particle/DustColorTransitionParticle.java
  • 起始行号:L13
  • 继承:DustParticleBase
  • 职责:

    TODO

字段/常量

  • fromColor

    • 类型: Vector3f
    • 修饰符: private final
    • 源码定位: L14
    • 说明:

      TODO

  • toColor

    • 类型: Vector3f
    • 修饰符: private final
    • 源码定位: L15
    • 说明:

      TODO

内部类/嵌套类型

  • net.minecraft.client.particle.DustColorTransitionParticle.Provider
    • 类型: class
    • 修饰符: public static
    • 源码定位: L45
    • 说明:

      TODO

构造器

protected DustColorTransitionParticle(ClientLevel level, double x, double y, double z, double xAux, double yAux, double zAux, DustColorTransitionOptions options, SpriteSet sprites) @ L17

  • 构造器名:DustColorTransitionParticle
  • 源码定位:L17
  • 修饰符:protected

参数:

  • level: ClientLevel
  • x: double
  • y: double
  • z: double
  • xAux: double
  • yAux: double
  • zAux: double
  • options: DustColorTransitionOptions
  • sprites: SpriteSet

说明:

TODO

方法

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

private Vector3f randomizeColor(Vector3f color, float baseFactor) @ L26

  • 方法名:randomizeColor
  • 源码定位:L26
  • 返回类型:Vector3f
  • 修饰符:private

参数:

  • color: Vector3f
  • baseFactor: float

说明:

TODO

private void lerpColors(float partialTickTime) @ L30

  • 方法名:lerpColors
  • 源码定位:L30
  • 返回类型:void
  • 修饰符:private

参数:

  • partialTickTime: float

说明:

TODO

public void extract(QuadParticleRenderState particleTypeRenderState, Camera camera, float partialTickTime) @ L38

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

参数:

  • particleTypeRenderState: QuadParticleRenderState
  • camera: Camera
  • partialTickTime: float

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class DustColorTransitionParticle extends DustParticleBase<DustColorTransitionOptions> {
    private final Vector3f fromColor;
    private final Vector3f toColor;
 
    protected DustColorTransitionParticle(
        ClientLevel level, double x, double y, double z, double xAux, double yAux, double zAux, DustColorTransitionOptions options, SpriteSet sprites
    ) {
        super(level, x, y, z, xAux, yAux, zAux, options, sprites);
        float baseFactor = this.random.nextFloat() * 0.4F + 0.6F;
        this.fromColor = this.randomizeColor(options.getFromColor(), baseFactor);
        this.toColor = this.randomizeColor(options.getToColor(), baseFactor);
    }
 
    private Vector3f randomizeColor(Vector3f color, float baseFactor) {
        return new Vector3f(this.randomizeColor(color.x(), baseFactor), this.randomizeColor(color.y(), baseFactor), this.randomizeColor(color.z(), baseFactor));
    }
 
    private void lerpColors(float partialTickTime) {
        float a = (this.age + partialTickTime) / (this.lifetime + 1.0F);
        Vector3f lerpedColor = new Vector3f(this.fromColor).lerp(this.toColor, a);
        this.rCol = lerpedColor.x();
        this.gCol = lerpedColor.y();
        this.bCol = lerpedColor.z();
    }
 
    @Override
    public void extract(QuadParticleRenderState particleTypeRenderState, Camera camera, float partialTickTime) {
        this.lerpColors(partialTickTime);
        super.extract(particleTypeRenderState, camera, partialTickTime);
    }
 
    @OnlyIn(Dist.CLIENT)
    public static class Provider implements ParticleProvider<DustColorTransitionOptions> {
        private final SpriteSet sprites;
 
        public Provider(SpriteSet sprites) {
            this.sprites = sprites;
        }
 
        public Particle createParticle(
            DustColorTransitionOptions options, ClientLevel level, double x, double y, double z, double xAux, double yAux, double zAux, RandomSource random
        ) {
            return new DustColorTransitionParticle(level, x, y, z, xAux, yAux, zAux, options, this.sprites);
        }
    }
}

引用的其他类