Private
Public Access
1
0

Ported config. Adjusted particle color logic.

This commit is contained in:
2026-05-25 16:52:54 +01:00
parent d860061a56
commit 239a759e3c
2 changed files with 15 additions and 18 deletions

View File

@ -1,17 +1,18 @@
package dev.micle.firefly_bush_backport.config; package dev.micle.firefly_bush_backport.config;
import dev.micle.firefly_bush_backport.FireflyBushBackport; import dev.micle.firefly_bush_backport.FireflyBushBackport;
import net.minecraft.util.random.SimpleWeightedRandomList; import net.minecraft.util.WeightedList;
import net.minecraft.world.level.Level;
import net.minecraftforge.common.ForgeConfigSpec; import net.minecraftforge.common.ForgeConfigSpec;
import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.fml.config.ModConfig;
import net.minecraftforge.fml.event.config.ModConfigEvent;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
import java.awt.*; import java.awt.*;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Mod.EventBusSubscriber(modid = FireflyBushBackport.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) @Mod.EventBusSubscriber(modid = FireflyBushBackport.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
public final class Config { public final class Config {
@ -37,13 +38,13 @@ public final class Config {
} }
public static void register() { public static void register() {
FireflyBushBackport.getFMLJavaModLoadingContext().registerConfig(ModConfig.Type.CLIENT, CLIENT_SPEC); ModLoadingContext.get().registerConfig(ModConfig.Type.CLIENT, CLIENT_SPEC);
FireflyBushBackport.getFMLJavaModLoadingContext().registerConfig(ModConfig.Type.COMMON, COMMON_SPEC); ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, COMMON_SPEC);
FireflyBushBackport.getFMLJavaModLoadingContext().registerConfig(ModConfig.Type.SERVER, SERVER_SPEC); ModLoadingContext.get().registerConfig(ModConfig.Type.SERVER, SERVER_SPEC);
} }
@SubscribeEvent @SubscribeEvent
public static void onConfigReloadEvent(ModConfigEvent event) { public static void onConfigReloadEvent(ModConfig.ModConfigEvent event) {
if (event.getConfig().getSpec() == CLIENT_SPEC) { if (event.getConfig().getSpec() == CLIENT_SPEC) {
Client.onConfigReload(); Client.onConfigReload();
} else if (event.getConfig().getSpec() == COMMON_SPEC) { } else if (event.getConfig().getSpec() == COMMON_SPEC) {
@ -74,7 +75,7 @@ public final class Config {
public static ForgeConfigSpec.DoubleValue particleExtraScale; public static ForgeConfigSpec.DoubleValue particleExtraScale;
public static ForgeConfigSpec.DoubleValue particleExtraBrightness; public static ForgeConfigSpec.DoubleValue particleExtraBrightness;
private static ForgeConfigSpec.ConfigValue<List<? extends String>> particleExtraColors; private static ForgeConfigSpec.ConfigValue<List<? extends String>> particleExtraColors;
public static SimpleWeightedRandomList<Color> particleExtraColorsWeightedList; public static WeightedList<Color> particleExtraColorsWeightedList;
Client(ForgeConfigSpec.Builder builder) { Client(ForgeConfigSpec.Builder builder) {
builder.comment("Settings for the firefly bush.").push("bush"); builder.comment("Settings for the firefly bush.").push("bush");
@ -85,7 +86,7 @@ public final class Config {
bushFireflyVerticalRange = builder bushFireflyVerticalRange = builder
.defineInRange("bushFireflyVerticalRange", 5.0, 0, Double.MAX_VALUE); .defineInRange("bushFireflyVerticalRange", 5.0, 0, Double.MAX_VALUE);
bushFireflySpawnMaxBrightnessLevel = builder bushFireflySpawnMaxBrightnessLevel = builder
.defineInRange("bushFireflySpawnMaxBrightnessLevel", 13, 0, Level.MAX_BRIGHTNESS); .defineInRange("bushFireflySpawnMaxBrightnessLevel", 13, 0, 15);
bushFireflyAmbientSoundChanceOneIn = builder bushFireflyAmbientSoundChanceOneIn = builder
.defineInRange("bushFireflyAmbientSoundChanceOneIn", 30, 0, Integer.MAX_VALUE); .defineInRange("bushFireflyAmbientSoundChanceOneIn", 30, 0, Integer.MAX_VALUE);
@ -120,18 +121,17 @@ public final class Config {
.defineInRange("particleExtraBrightness", 255.0, 0, 255); .defineInRange("particleExtraBrightness", 255.0, 0, 255);
particleExtraColors = builder particleExtraColors = builder
.comment("List of color hex values and their weight. Format: '<color_hex>,<weight>'") .comment("List of color hex values and their weight. Format: '<color_hex>,<weight>'")
.defineList("particleExtraColors", List.of("#ffffff,1"), Client::isValidColorEntry); .defineList("particleExtraColors", Stream.of("#ffffff,1").collect(Collectors.toList()), Client::isValidColorEntry);
builder.pop(); builder.pop();
builder.pop(); builder.pop();
} }
private static void onConfigReload() { private static void onConfigReload() {
SimpleWeightedRandomList.Builder<Color> particleExtraColorsWeightedListBuilder = SimpleWeightedRandomList.builder(); particleExtraColorsWeightedList = new WeightedList<>();
for (String entry : particleExtraColors.get()) { for (String entry : particleExtraColors.get()) {
String[] splitEntry = entry.split(","); String[] splitEntry = entry.split(",");
particleExtraColorsWeightedListBuilder.add(Color.decode(splitEntry[0]), Integer.parseInt(splitEntry[1])); particleExtraColorsWeightedList.add(Color.decode(splitEntry[0]), Integer.parseInt(splitEntry[1]));
} }
particleExtraColorsWeightedList = particleExtraColorsWeightedListBuilder.build();
} }
private static boolean isValidColorEntry(Object entry) { private static boolean isValidColorEntry(Object entry) {

View File

@ -15,7 +15,6 @@ import net.minecraftforge.api.distmarker.OnlyIn;
import javax.annotation.ParametersAreNonnullByDefault; import javax.annotation.ParametersAreNonnullByDefault;
import java.awt.*; import java.awt.*;
import java.util.Optional;
import java.util.Random; import java.util.Random;
import java.util.stream.Stream; import java.util.stream.Stream;
@ -173,10 +172,8 @@ public class FireflyParticle extends SpriteTexturedParticle {
fireflyParticle.pickSprite(this.sprite); fireflyParticle.pickSprite(this.sprite);
fireflyParticle.setAlpha(0.0F); fireflyParticle.setAlpha(0.0F);
Optional<Color> optionalColor = Config.Client.particleExtraColorsWeightedList.getRandomValue(clientLevel.random); Color color = Config.Client.particleExtraColorsWeightedList.getOne(clientLevel.random);
optionalColor.ifPresent(color -> fireflyParticle.setColor(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F);
fireflyParticle.setColor(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F)
);
return fireflyParticle; return fireflyParticle;
} }