ParticleGroup.java

net.minecraft.client.particle.ParticleGroup

信息

  • 全限定名:net.minecraft.client.particle.ParticleGroup
  • 类型:public abstract class
  • 包:net.minecraft.client.particle
  • 源码路径:src/main/java/net/minecraft/client/particle/ParticleGroup.java
  • 起始行号:L16
  • 职责:

    TODO

字段/常量

  • MAX_PARTICLES

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

      TODO

  • engine

    • 类型: ParticleEngine
    • 修饰符: protected final
    • 源码定位: L18
    • 说明:

      TODO

  • particles

    • 类型: Queue<P>
    • 修饰符: protected final
    • 源码定位: L19
    • 说明:

      TODO

内部类/嵌套类型

构造器

public ParticleGroup(ParticleEngine engine) @ L21

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

参数:

  • engine: ParticleEngine

说明:

TODO

方法

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

public boolean isEmpty() @ L25

  • 方法名:isEmpty
  • 源码定位:L25
  • 返回类型:boolean
  • 修饰符:public

参数:

说明:

TODO

public void tickParticles() @ L29

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

参数:

说明:

TODO

private void tickParticle(Particle particle) @ L44

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

参数:

  • particle: Particle

说明:

TODO

public void add(Particle particle) @ L56

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

参数:

  • particle: Particle

说明:

TODO

public int size() @ L60

  • 方法名:size
  • 源码定位:L60
  • 返回类型:int
  • 修饰符:public

参数:

说明:

TODO

public abstract ParticleGroupRenderState extractRenderState(Frustum frustum, Camera camera, float partialTickTime) @ L64

  • 方法名:extractRenderState
  • 源码定位:L64
  • 返回类型:ParticleGroupRenderState
  • 修饰符:public abstract

参数:

  • frustum: Frustum
  • camera: Camera
  • partialTickTime: float

说明:

TODO

public Queue<P> getAll() @ L66

  • 方法名:getAll
  • 源码定位:L66
  • 返回类型:Queue

  • 修饰符:public

参数:

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public abstract class ParticleGroup<P extends Particle> {
    private static final int MAX_PARTICLES = 16384;
    protected final ParticleEngine engine;
    protected final Queue<P> particles = EvictingQueue.create(16384);
 
    public ParticleGroup(ParticleEngine engine) {
        this.engine = engine;
    }
 
    public boolean isEmpty() {
        return this.particles.isEmpty();
    }
 
    public void tickParticles() {
        if (!this.particles.isEmpty()) {
            Iterator<P> iterator = this.particles.iterator();
 
            while (iterator.hasNext()) {
                P particle = iterator.next();
                this.tickParticle(particle);
                if (!particle.isAlive()) {
                    particle.getParticleLimit().ifPresent(options -> this.engine.updateCount(options, -1));
                    iterator.remove();
                }
            }
        }
    }
 
    private void tickParticle(Particle particle) {
        try {
            particle.tick();
        } catch (Throwable var5) {
            CrashReport report = CrashReport.forThrowable(var5, "Ticking Particle");
            CrashReportCategory category = report.addCategory("Particle being ticked");
            category.setDetail("Particle", particle::toString);
            category.setDetail("Particle Type", particle.getGroup()::toString);
            throw new ReportedException(report);
        }
    }
 
    public void add(Particle particle) {
        this.particles.add((P)particle);
    }
 
    public int size() {
        return this.particles.size();
    }
 
    public abstract ParticleGroupRenderState extractRenderState(Frustum frustum, Camera camera, float partialTickTime);
 
    public Queue<P> getAll() {
        return this.particles;
    }
}

引用的其他类