diff --git a/src/main/java/dev/micle/firefly_bush_backport/block/FireflyBushBlock.java b/src/main/java/dev/micle/firefly_bush_backport/block/FireflyBushBlock.java index 8a2cab3..cac2736 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/block/FireflyBushBlock.java +++ b/src/main/java/dev/micle/firefly_bush_backport/block/FireflyBushBlock.java @@ -1,5 +1,6 @@ package dev.micle.firefly_bush_backport.block; +import dev.micle.firefly_bush_backport.config.Config; import dev.micle.firefly_bush_backport.particle.ModParticles; import dev.micle.firefly_bush_backport.sound.ModSounds; import net.minecraft.core.BlockPos; @@ -19,12 +20,6 @@ import java.util.List; import java.util.Optional; public class FireflyBushBlock extends BushBlock implements BonemealableBlock { - private static final double FIREFLY_CHANCE_PER_TICK = 0.7; - private static final double FIREFLY_HORIZONTAL_RANGE = 10.0; - private static final double FIREFLY_VERTICAL_RANGE = 5.0; - private static final int FIREFLY_SPAWN_MAX_BRIGHTNESS_LEVEL = 13; - private static final int FIREFLY_AMBIENT_SOUND_CHANCE_ONE_IN = 30; - public FireflyBushBlock(Properties properties) { super(properties); } @@ -32,17 +27,17 @@ public class FireflyBushBlock extends BushBlock implements BonemealableBlock { @Override @ParametersAreNonnullByDefault public void animateTick(BlockState blockState, Level level, BlockPos blockPos, RandomSource randomSource) { - if (randomSource.nextInt(FIREFLY_AMBIENT_SOUND_CHANCE_ONE_IN) == 0 + if (randomSource.nextInt(Config.Client.bushFireflyAmbientSoundChanceOneIn.get()) == 0 && isMoonVisible(level) && level.getHeight(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, blockPos.getX(), blockPos.getZ()) <= blockPos.getY()) { level.playLocalSound(blockPos, ModSounds.FIREFLY_BUSH_IDLE.get(), SoundSource.AMBIENT, 1.0F, 1.0F, false); } - if ((isMoonVisible(level) || level.getMaxLocalRawBrightness(blockPos) <= FIREFLY_SPAWN_MAX_BRIGHTNESS_LEVEL) && - randomSource.nextDouble() <= FIREFLY_CHANCE_PER_TICK) { - double d0 = blockPos.getX() + randomSource.nextDouble() * FIREFLY_HORIZONTAL_RANGE - FIREFLY_VERTICAL_RANGE; - double d1 = blockPos.getY() + randomSource.nextDouble() * FIREFLY_VERTICAL_RANGE; - double d2 = blockPos.getZ() + randomSource.nextDouble() * FIREFLY_HORIZONTAL_RANGE - FIREFLY_VERTICAL_RANGE; + if ((isMoonVisible(level) || level.getMaxLocalRawBrightness(blockPos) <= Config.Client.bushFireflySpawnMaxBrightnessLevel.get()) && + randomSource.nextDouble() <= Config.Client.bushFireflyChancePerTick.get()) { + double d0 = blockPos.getX() + randomSource.nextDouble() * Config.Client.bushFireflyHorizontalRange.get() - Config.Client.bushFireflyVerticalRange.get(); + double d1 = blockPos.getY() + randomSource.nextDouble() * Config.Client.bushFireflyVerticalRange.get(); + double d2 = blockPos.getZ() + randomSource.nextDouble() * Config.Client.bushFireflyHorizontalRange.get() - Config.Client.bushFireflyVerticalRange.get(); level.addParticle(ModParticles.FIREFLY.get(), d0, d1, d2, 0.0, 0.0, 0.0); } } 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 025604a..13ace2c 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 @@ -1,6 +1,7 @@ package dev.micle.firefly_bush_backport.config; import dev.micle.firefly_bush_backport.FireflyBushBackport; +import net.minecraft.world.level.Level; import net.minecraftforge.common.ForgeConfigSpec; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @@ -49,7 +50,26 @@ public final class Config { } public static class Client { - Client(ForgeConfigSpec.Builder builder) {} + public static ForgeConfigSpec.DoubleValue bushFireflyChancePerTick; + public static ForgeConfigSpec.DoubleValue bushFireflyHorizontalRange; + public static ForgeConfigSpec.DoubleValue bushFireflyVerticalRange; + public static ForgeConfigSpec.IntValue bushFireflySpawnMaxBrightnessLevel; + public static ForgeConfigSpec.IntValue bushFireflyAmbientSoundChanceOneIn; + + Client(ForgeConfigSpec.Builder builder) { + builder.comment("Official settings for the firefly bush.").push("bush"); + bushFireflyChancePerTick = builder + .defineInRange("bushFireflyChancePerTick", 0.7, 0, 1); + bushFireflyHorizontalRange = builder + .defineInRange("bushFireflyHorizontalRange", 10.0, 0, Double.MAX_VALUE); + bushFireflyVerticalRange = builder + .defineInRange("bushFireflyVerticalRange", 5.0, 0, Double.MAX_VALUE); + bushFireflySpawnMaxBrightnessLevel = builder + .defineInRange("bushFireflySpawnMaxBrightnessLevel", 13, 0, Level.MAX_BRIGHTNESS); + bushFireflyAmbientSoundChanceOneIn = builder + .defineInRange("bushFireflyAmbientSoundChanceOneIn", 30, 0, Integer.MAX_VALUE); + builder.pop(); + } private static void onConfigReload() {} }