package com.vinlanx.explosionoverhaul.client; import com.vinlanx.explosionoverhaul.SmokeParticleOptions; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.particle.Particle; import net.minecraft.client.particle.ParticleProvider; import net.minecraft.client.particle.ParticleRenderType; import net.minecraft.client.particle.SpriteSet; import net.minecraft.client.particle.TextureSheetParticle; public class SmokeParticle extends TextureSheetParticle { protected SmokeParticle(ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed, SmokeParticleOptions options, SpriteSet sprites) { super(level, x, y, z, xSpeed, ySpeed, zSpeed); this.lifetime = 1; this.pickSprite(sprites); } @Override public ParticleRenderType getRenderType() { return ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT; } public boolean shouldCull() { return false; } public static class Provider implements ParticleProvider { private final SpriteSet sprites; public Provider(SpriteSet sprites) { this.sprites = sprites; } @Override public Particle createParticle(SmokeParticleOptions options, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { return new SmokeParticle(level, x, y, z, xSpeed, ySpeed, zSpeed, options, this.sprites); } } }