TrackingEmitter.java

net.minecraft.client.particle.TrackingEmitter

信息

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

    TODO

字段/常量

  • entity

    • 类型: Entity
    • 修饰符: private final
    • 源码定位: L12
    • 说明:

      TODO

  • life

    • 类型: int
    • 修饰符: private
    • 源码定位: L13
    • 说明:

      TODO

  • lifeTime

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

      TODO

  • particleType

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

      TODO

内部类/嵌套类型

构造器

public TrackingEmitter(ClientLevel level, Entity entity, ParticleOptions particleType) @ L17

  • 构造器名:TrackingEmitter
  • 源码定位:L17
  • 修饰符:public

参数:

  • level: ClientLevel
  • entity: Entity
  • particleType: ParticleOptions

说明:

TODO

public TrackingEmitter(ClientLevel level, Entity entity, ParticleOptions particleType, int lifeTime) @ L21

  • 构造器名:TrackingEmitter
  • 源码定位:L21
  • 修饰符:public

参数:

  • level: ClientLevel
  • entity: Entity
  • particleType: ParticleOptions
  • lifeTime: int

说明:

TODO

private TrackingEmitter(ClientLevel level, Entity entity, ParticleOptions particleType, int lifeTime, Vec3 movement) @ L25

  • 构造器名:TrackingEmitter
  • 源码定位:L25
  • 修饰符:private

参数:

  • level: ClientLevel
  • entity: Entity
  • particleType: ParticleOptions
  • lifeTime: int
  • movement: Vec3

说明:

TODO

方法

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

public void tick() @ L33

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

参数:

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class TrackingEmitter extends NoRenderParticle {
    private final Entity entity;
    private int life;
    private final int lifeTime;
    private final ParticleOptions particleType;
 
    public TrackingEmitter(ClientLevel level, Entity entity, ParticleOptions particleType) {
        this(level, entity, particleType, 3);
    }
 
    public TrackingEmitter(ClientLevel level, Entity entity, ParticleOptions particleType, int lifeTime) {
        this(level, entity, particleType, lifeTime, entity.getDeltaMovement());
    }
 
    private TrackingEmitter(ClientLevel level, Entity entity, ParticleOptions particleType, int lifeTime, Vec3 movement) {
        super(level, entity.getX(), entity.getY(0.5), entity.getZ(), movement.x, movement.y, movement.z);
        this.entity = entity;
        this.lifeTime = lifeTime;
        this.particleType = particleType;
        this.tick();
    }
 
    @Override
    public void tick() {
        for (int i = 0; i < 16; i++) {
            double xa = this.random.nextFloat() * 2.0F - 1.0F;
            double ya = this.random.nextFloat() * 2.0F - 1.0F;
            double za = this.random.nextFloat() * 2.0F - 1.0F;
            if (!(xa * xa + ya * ya + za * za > 1.0)) {
                double x = this.entity.getX(xa / 4.0);
                double y = this.entity.getY(0.5 + ya / 4.0);
                double z = this.entity.getZ(za / 4.0);
                this.level.addParticle(this.particleType, x, y, z, xa, ya + 0.2, za);
            }
        }
 
        this.life++;
        if (this.life >= this.lifeTime) {
            this.remove();
        }
    }
}

引用的其他类