• HatManParticle.java
  • package pigcart.cosycritters.particle;
    
    import net.fabricmc.api.EnvType;
    import net.fabricmc.api.Environment;
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.multiplayer.ClientLevel;
    import net.minecraft.client.particle.*;
    import net.minecraft.core.particles.SimpleParticleType;
    
    public class HatManParticle extends TextureSheetParticle {
    
        private HatManParticle(ClientLevel level, double x, double y, double z, SpriteSet spriteSet) {
            super(level, x, y, z);
            this.sprite = spriteSet.get(this.random);
            this.quadSize = 1F;
            this.lifetime = 6000;
        }
    
        @Override
        public void tick() {
            super.tick();
            if (!Minecraft.getInstance().player.isSleeping()) this.remove();
        }
    
        @Override
        public ParticleRenderType getRenderType() {
            return ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT;
        }
    
        @Environment(EnvType.CLIENT)
        public static class Provider implements ParticleProvider<SimpleParticleType> {
    
            private final SpriteSet spriteSet;
    
            public Provider(SpriteSet spriteSet) {
                this.spriteSet = spriteSet;
            }
    
            @Override
            public Particle createParticle(SimpleParticleType parameters, ClientLevel level, double x, double y, double z, double velocityX, double velocityY, double velocityZ) {
                return new HatManParticle(level, x, y, z, this.spriteSet);
            }
        }
    }