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 44a0e4d..4fb5461 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 @@ -2,7 +2,6 @@ package dev.micle.firefly_bush_backport.config; import dev.micle.firefly_bush_backport.FireflyBushBackport; import net.minecraft.world.level.Level; -import net.minecraft.world.phys.Vec3; import net.minecraftforge.common.ForgeConfigSpec; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @@ -10,6 +9,10 @@ import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.fml.event.config.ModConfigEvent; import org.apache.commons.lang3.tuple.Pair; +import java.awt.*; +import java.util.Arrays; +import java.util.List; + @Mod.EventBusSubscriber(modid = FireflyBushBackport.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) public final class Config { public static final Client CLIENT; @@ -67,7 +70,7 @@ public final class Config { public static ForgeConfigSpec.DoubleValue particleExtraFriction; public static ForgeConfigSpec.DoubleValue particleExtraScale; public static ForgeConfigSpec.DoubleValue particleExtraBrightness; - public static ForgeConfigSpec.ConfigValue particleExtraColor; + public static ForgeConfigSpec.ConfigValue> particleExtraColors; Client(ForgeConfigSpec.Builder builder) { builder.comment("Settings for the firefly bush.").push("bush"); @@ -104,13 +107,17 @@ public final class Config { .defineInRange("particleExtraScale", 0.75, 0, Double.MAX_VALUE); particleExtraBrightness = builder .defineInRange("particleExtraBrightness", 255.0, 0, 255); - particleExtraColor = builder - .define("particleExtraColor", "#ffffff"); + particleExtraColors = builder + .defineList("particleExtraColors", List.of("#ffffff"), Client::isValidColorEntry); builder.pop(); builder.pop(); } private static void onConfigReload() {} + + private static boolean isValidColorEntry(Object entry) { + return entry instanceof String && ((String) entry).matches("#(\\w{6})$"); + } } public static class Common { 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 a0c9dd0..96a014c 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 @@ -12,6 +12,7 @@ import org.jetbrains.annotations.NotNull; import javax.annotation.ParametersAreNonnullByDefault; import java.awt.*; +import java.util.List; @OnlyIn(Dist.CLIENT) public class FireflyParticle extends TextureSheetParticle { @@ -102,7 +103,8 @@ public class FireflyParticle extends TextureSheetParticle { fireflyParticle.pickSprite(this.sprite); fireflyParticle.setAlpha(0.0F); - Color color = Color.decode(Config.Client.particleExtraColor.get()); + List possibleColors = Config.Client.particleExtraColors.get(); + Color color = Color.decode(possibleColors.get(clientLevel.random.nextIntBetweenInclusive(0, possibleColors.size() - 1))); fireflyParticle.setColor(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); return fireflyParticle;