Private
Public Access
1
0

Replaced particle fields with config options.

This commit is contained in:
2025-06-06 20:26:44 +01:00
parent 544d096e8d
commit 1939719694
2 changed files with 36 additions and 11 deletions

View File

@ -58,8 +58,15 @@ public final class Config {
public static ForgeConfigSpec.DoubleValue bushFireflyAmbientSoundVolume;
public static ForgeConfigSpec.DoubleValue bushFireflyAmbientSoundPitch;
public static ForgeConfigSpec.DoubleValue particleFadeOutLightTime;
public static ForgeConfigSpec.DoubleValue particleFadeInLightTime;
public static ForgeConfigSpec.DoubleValue particleFadeOutAlphaTime;
public static ForgeConfigSpec.DoubleValue particleFadeInAlphaTime;
public static ForgeConfigSpec.IntValue particleMinLifetime;
public static ForgeConfigSpec.IntValue particleMaxLifetime;
Client(ForgeConfigSpec.Builder builder) {
builder.comment("Official settings for the firefly bush.").push("bush");
builder.comment("Settings for the firefly bush.").push("bush");
bushFireflyChancePerTick = builder
.defineInRange("bushFireflyChancePerTick", 0.7, 0, 1);
bushFireflyHorizontalRange = builder
@ -75,6 +82,21 @@ public final class Config {
bushFireflyAmbientSoundPitch = builder
.defineInRange("bushFireflyAmbientSoundPitch", 1.0, 0, Double.MAX_VALUE);
builder.pop();
builder.comment("Settings for the firefly particle.").push("particle");
particleFadeOutLightTime = builder
.defineInRange("particleFadeOutLightTime", 0.3, 0, 1.0);
particleFadeInLightTime = builder
.defineInRange("particleFadeInLightTime", 0.1, 0, 1.0);
particleFadeOutAlphaTime = builder
.defineInRange("particleFadeOutAlphaTime", 0.5, 0, 1.0);
particleFadeInAlphaTime = builder
.defineInRange("particleFadeInAlphaTime", 0.3, 0, 1.0);
particleMinLifetime = builder
.defineInRange("particleMinLifetime", 36, 0, Integer.MAX_VALUE);
particleMaxLifetime = builder
.defineInRange("particleMaxLifetime", 180, 0, Integer.MAX_VALUE);
builder.pop();
}
private static void onConfigReload() {}

View File

@ -1,5 +1,6 @@
package dev.micle.firefly_bush_backport.particle;
import dev.micle.firefly_bush_backport.config.Config;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.client.particle.*;
import net.minecraft.core.BlockPos;
@ -13,13 +14,6 @@ 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;
private static final float PARTICLE_FADE_OUT_ALPHA_TIME = 0.5F;
private static final float PARTICLE_FADE_IN_ALPHA_TIME = 0.3F;
private static final int PARTICLE_MIN_LIFETIME = 36;
private static final int PARTICLE_MAX_LIFETIME = 180;
protected FireflyParticle(ClientLevel clientLevel, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) {
super(clientLevel, x, y, z, xSpeed, ySpeed, zSpeed);
this.speedUpWhenYMotionIsBlocked = true;
@ -37,7 +31,11 @@ public class FireflyParticle extends TextureSheetParticle {
@Override
public int getLightColor(float partialTick) {
return (int) (255.0F * getFadeAmount(this.getLifetimeProgress(this.age + partialTick), PARTICLE_FADE_IN_LIGHT_TIME, PARTICLE_FADE_OUT_LIGHT_TIME));
return (int) (255.0F * getFadeAmount(
this.getLifetimeProgress(this.age + partialTick),
Config.Client.particleFadeInLightTime.get().floatValue(),
Config.Client.particleFadeOutLightTime.get().floatValue())
);
}
private static float getFadeAmount(float lifetimeProgress, float fadeIn, float fadeOut) {
@ -58,7 +56,10 @@ public class FireflyParticle extends TextureSheetParticle {
if (!this.level.getBlockState(BlockPos.containing(this.x, this.y, this.z)).isAir()) {
this.remove();
} else {
this.setAlpha(getFadeAmount(this.getLifetimeProgress(this.age), PARTICLE_FADE_IN_ALPHA_TIME, PARTICLE_FADE_OUT_ALPHA_TIME));
this.setAlpha(getFadeAmount(this.getLifetimeProgress(this.age),
Config.Client.particleFadeInAlphaTime.get().floatValue(),
Config.Client.particleFadeOutAlphaTime.get().floatValue())
);
if (Math.random() > 0.95 || this.age == 1) {
this.setParticleSpeed(-0.05F + 0.1F * Math.random(), -0.05F + 0.1F * Math.random(), -0.05F + 0.1F * Math.random());
}
@ -93,7 +94,9 @@ public class FireflyParticle extends TextureSheetParticle {
clientLevel.random.nextBoolean() ? ySpeed : -ySpeed,
0.5 - clientLevel.random.nextDouble()
);
fireflyParticle.setLifetime(clientLevel.random.nextIntBetweenInclusive(PARTICLE_MIN_LIFETIME, PARTICLE_MAX_LIFETIME));
fireflyParticle.setLifetime(clientLevel.random.nextIntBetweenInclusive(
Config.Client.particleMinLifetime.get(), Config.Client.particleMaxLifetime.get()
));
fireflyParticle.scale(1.5F);
fireflyParticle.pickSprite(this.sprite);
fireflyParticle.setAlpha(0.0F);