From 1939719694d4ec351e42a55048d4126a520c6bc7 Mon Sep 17 00:00:00 2001 From: Micle Date: Fri, 6 Jun 2025 20:26:44 +0100 Subject: [PATCH] Replaced particle fields with config options. --- .../firefly_bush_backport/config/Config.java | 24 ++++++++++++++++++- .../particle/FireflyParticle.java | 23 ++++++++++-------- 2 files changed, 36 insertions(+), 11 deletions(-) diff --git a/src/main/java/dev/micle/firefly_bush_backport/config/Config.java b/src/main/java/dev/micle/firefly_bush_backport/config/Config.java index 4fd14ef..6e809a8 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/config/Config.java +++ b/src/main/java/dev/micle/firefly_bush_backport/config/Config.java @@ -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() {} diff --git a/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java b/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java index 703326a..69be934 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java +++ b/src/main/java/dev/micle/firefly_bush_backport/particle/FireflyParticle.java @@ -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);