SquidInkParticle.java

net.minecraft.client.particle.SquidInkParticle

信息

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

    TODO

字段/常量

内部类/嵌套类型

  • net.minecraft.client.particle.SquidInkParticle.GlowInkProvider

    • 类型: class
    • 修饰符: public static
    • 源码定位: L43
    • 说明:

      TODO

  • net.minecraft.client.particle.SquidInkParticle.Provider

    • 类型: class
    • 修饰符: public static
    • 源码定位: L58
    • 说明:

      TODO

构造器

private SquidInkParticle(ClientLevel level, double x, double y, double z, double xa, double ya, double za, int color, SpriteSet sprites) @ L13

  • 构造器名:SquidInkParticle
  • 源码定位:L13
  • 修饰符:private

参数:

  • level: ClientLevel
  • x: double
  • y: double
  • z: double
  • xa: double
  • ya: double
  • za: double
  • color: int
  • sprites: SpriteSet

说明:

TODO

方法

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

public void tick() @ L27

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

参数:

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class SquidInkParticle extends SimpleAnimatedParticle {
    private SquidInkParticle(ClientLevel level, double x, double y, double z, double xa, double ya, double za, int color, SpriteSet sprites) {
        super(level, x, y, z, sprites, 0.0F);
        this.friction = 0.92F;
        this.quadSize = 0.5F;
        this.setAlpha(1.0F);
        this.setColor(ARGB.redFloat(color), ARGB.greenFloat(color), ARGB.blueFloat(color));
        this.lifetime = (int)(this.quadSize * 12.0F / (this.random.nextFloat() * 0.8F + 0.2F));
        this.setSpriteFromAge(sprites);
        this.hasPhysics = false;
        this.xd = xa;
        this.yd = ya;
        this.zd = za;
    }
 
    @Override
    public void tick() {
        super.tick();
        if (!this.removed) {
            this.setSpriteFromAge(this.sprites);
            if (this.age > this.lifetime / 2) {
                this.setAlpha(1.0F - ((float)this.age - this.lifetime / 2) / this.lifetime);
            }
 
            if (this.level.getBlockState(BlockPos.containing(this.x, this.y, this.z)).isAir()) {
                this.yd -= 0.0074F;
            }
        }
    }
 
    @OnlyIn(Dist.CLIENT)
    public static class GlowInkProvider implements ParticleProvider<SimpleParticleType> {
        private final SpriteSet sprites;
 
        public GlowInkProvider(SpriteSet sprites) {
            this.sprites = sprites;
        }
 
        public Particle createParticle(
            SimpleParticleType options, ClientLevel level, double x, double y, double z, double xAux, double yAux, double zAux, RandomSource random
        ) {
            return new SquidInkParticle(level, x, y, z, xAux, yAux, zAux, ARGB.colorFromFloat(1.0F, 0.2F, 0.8F, 0.6F), this.sprites);
        }
    }
 
    @OnlyIn(Dist.CLIENT)
    public static class Provider implements ParticleProvider<SimpleParticleType> {
        private final SpriteSet sprites;
 
        public Provider(SpriteSet sprites) {
            this.sprites = sprites;
        }
 
        public Particle createParticle(
            SimpleParticleType options, ClientLevel level, double x, double y, double z, double xAux, double yAux, double zAux, RandomSource random
        ) {
            return new SquidInkParticle(level, x, y, z, xAux, yAux, zAux, -16777216, this.sprites);
        }
    }
}

引用的其他类

  • ClientLevel

    • 引用位置: 参数
  • SimpleAnimatedParticle

    • 引用位置: 继承
  • SpriteSet

    • 引用位置: 参数
  • BlockPos

    • 引用位置: 方法调用
    • 关联成员: BlockPos.containing()
  • ARGB

    • 引用位置: 方法调用
    • 关联成员: ARGB.blueFloat(), ARGB.colorFromFloat(), ARGB.greenFloat(), ARGB.redFloat()