Private
Public Access
1
0

Implemented firefly provider.

This commit is contained in:
2025-06-05 23:59:28 +01:00
parent 9d7394d8cb
commit 46b0797527

View File

@ -1,12 +1,17 @@
package dev.micle.firefly_bush_backport.particle;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.client.particle.ParticleRenderType;
import net.minecraft.client.particle.TextureSheetParticle;
import net.minecraft.client.particle.*;
import net.minecraft.core.BlockPos;
import net.minecraft.core.particles.SimpleParticleType;
import net.minecraft.util.Mth;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import org.jetbrains.annotations.NotNull;
import javax.annotation.ParametersAreNonnullByDefault;
@OnlyIn(Dist.CLIENT)
public class FireflyParticle extends TextureSheetParticle {
private static final float PARTICLE_FADE_OUT_LIGHT_TIME = 0.3F;
private static final float PARTICLE_FADE_IN_LIGHT_TIME = 0.1F;
@ -59,4 +64,41 @@ public class FireflyParticle extends TextureSheetParticle {
}
}
}
@OnlyIn(Dist.CLIENT)
public static class FireflyProvider implements ParticleProvider<SimpleParticleType> {
private final SpriteSet sprite;
public FireflyProvider(SpriteSet spriteSet) {
this.sprite = spriteSet;
}
@ParametersAreNonnullByDefault
public Particle createParticle(
SimpleParticleType simpleParticleType,
ClientLevel clientLevel,
double x,
double y,
double z,
double xSpeed,
double ySpeed,
double zSpeed
) {
FireflyParticle fireflyParticle = new FireflyParticle(
clientLevel,
x,
y,
z,
0.5 - clientLevel.random.nextDouble(),
clientLevel.random.nextBoolean() ? ySpeed : -ySpeed,
0.5 - clientLevel.random.nextDouble()
);
fireflyParticle.setLifetime(clientLevel.random.nextIntBetweenInclusive(PARTICLE_MIN_LIFETIME, PARTICLE_MAX_LIFETIME));
fireflyParticle.scale(1.5F);
fireflyParticle.pickSprite(this.sprite);
fireflyParticle.setAlpha(0.0F);
return fireflyParticle;
}
}
}