Ported config.

This commit is contained in:
2026-05-01 17:47:26 +01:00
parent 89ef123213
commit 95b22ce721

View File

@ -1,45 +1,43 @@
package dev.micle.firefly_bush_backport.config; package dev.micle.firefly_bush_backport.config;
import dev.micle.firefly_bush_backport.FireflyBushBackport;
import net.minecraft.util.random.SimpleWeightedRandomList; import net.minecraft.util.random.SimpleWeightedRandomList;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraftforge.common.ForgeConfigSpec; import net.neoforged.bus.api.SubscribeEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent; import net.neoforged.fml.ModContainer;
import net.minecraftforge.fml.common.Mod; import net.neoforged.fml.config.ModConfig;
import net.minecraftforge.fml.config.ModConfig; import net.neoforged.fml.event.config.ModConfigEvent;
import net.minecraftforge.fml.event.config.ModConfigEvent; import net.neoforged.neoforge.common.ModConfigSpec;
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;
@Mod.EventBusSubscriber(modid = FireflyBushBackport.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
public final class Config { public final class Config {
public static final Client CLIENT; public static final Client CLIENT;
public static final ForgeConfigSpec CLIENT_SPEC; public static final ModConfigSpec CLIENT_SPEC;
public static final Common COMMON; public static final Common COMMON;
public static final ForgeConfigSpec COMMON_SPEC; public static final ModConfigSpec COMMON_SPEC;
public static final Server SERVER; public static final Server SERVER;
public static final ForgeConfigSpec SERVER_SPEC; public static final ModConfigSpec SERVER_SPEC;
static { static {
Pair<Client, ForgeConfigSpec> clientSpecPair = new ForgeConfigSpec.Builder().configure(Client::new); Pair<Client, ModConfigSpec> clientSpecPair = new ModConfigSpec.Builder().configure(Client::new);
CLIENT = clientSpecPair.getLeft(); CLIENT = clientSpecPair.getLeft();
CLIENT_SPEC = clientSpecPair.getRight(); CLIENT_SPEC = clientSpecPair.getRight();
Pair<Common, ForgeConfigSpec> commonSpecPair = new ForgeConfigSpec.Builder().configure(Common::new); Pair<Common, ModConfigSpec> commonSpecPair = new ModConfigSpec.Builder().configure(Common::new);
COMMON = commonSpecPair.getLeft(); COMMON = commonSpecPair.getLeft();
COMMON_SPEC = commonSpecPair.getRight(); COMMON_SPEC = commonSpecPair.getRight();
Pair<Server, ForgeConfigSpec> serverSpecPair = new ForgeConfigSpec.Builder().configure(Server::new); Pair<Server, ModConfigSpec> serverSpecPair = new ModConfigSpec.Builder().configure(Server::new);
SERVER = serverSpecPair.getLeft(); SERVER = serverSpecPair.getLeft();
SERVER_SPEC = serverSpecPair.getRight(); SERVER_SPEC = serverSpecPair.getRight();
} }
public static void register() { public static void register(ModContainer modContainer) {
FireflyBushBackport.getFMLJavaModLoadingContext().registerConfig(ModConfig.Type.CLIENT, CLIENT_SPEC); modContainer.registerConfig(ModConfig.Type.CLIENT, CLIENT_SPEC);
FireflyBushBackport.getFMLJavaModLoadingContext().registerConfig(ModConfig.Type.COMMON, COMMON_SPEC); modContainer.registerConfig(ModConfig.Type.COMMON, COMMON_SPEC);
FireflyBushBackport.getFMLJavaModLoadingContext().registerConfig(ModConfig.Type.SERVER, SERVER_SPEC); modContainer.registerConfig(ModConfig.Type.SERVER, SERVER_SPEC);
} }
@SubscribeEvent @SubscribeEvent
@ -54,29 +52,29 @@ public final class Config {
} }
public static class Client { public static class Client {
public static ForgeConfigSpec.DoubleValue bushFireflyChancePerTick; public static ModConfigSpec.DoubleValue bushFireflyChancePerTick;
public static ForgeConfigSpec.DoubleValue bushFireflyHorizontalRange; public static ModConfigSpec.DoubleValue bushFireflyHorizontalRange;
public static ForgeConfigSpec.DoubleValue bushFireflyVerticalRange; public static ModConfigSpec.DoubleValue bushFireflyVerticalRange;
public static ForgeConfigSpec.IntValue bushFireflySpawnMaxBrightnessLevel; public static ModConfigSpec.IntValue bushFireflySpawnMaxBrightnessLevel;
public static ForgeConfigSpec.IntValue bushFireflyAmbientSoundChanceOneIn; public static ModConfigSpec.IntValue bushFireflyAmbientSoundChanceOneIn;
public static ForgeConfigSpec.BooleanValue bushExtraAlwaysPlayAmbientSound; public static ModConfigSpec.BooleanValue bushExtraAlwaysPlayAmbientSound;
public static ForgeConfigSpec.BooleanValue bushExtraAlwaysSpawnParticles; public static ModConfigSpec.BooleanValue bushExtraAlwaysSpawnParticles;
public static ForgeConfigSpec.DoubleValue particleFadeOutLightTime; public static ModConfigSpec.DoubleValue particleFadeOutLightTime;
public static ForgeConfigSpec.DoubleValue particleFadeInLightTime; public static ModConfigSpec.DoubleValue particleFadeInLightTime;
public static ForgeConfigSpec.DoubleValue particleFadeOutAlphaTime; public static ModConfigSpec.DoubleValue particleFadeOutAlphaTime;
public static ForgeConfigSpec.DoubleValue particleFadeInAlphaTime; public static ModConfigSpec.DoubleValue particleFadeInAlphaTime;
public static ForgeConfigSpec.IntValue particleMinLifetime; public static ModConfigSpec.IntValue particleMinLifetime;
public static ForgeConfigSpec.IntValue particleMaxLifetime; public static ModConfigSpec.IntValue particleMaxLifetime;
public static ForgeConfigSpec.DoubleValue particleExtraFriction; public static ModConfigSpec.DoubleValue particleExtraFriction;
public static ForgeConfigSpec.DoubleValue particleExtraScale; public static ModConfigSpec.DoubleValue particleExtraScale;
public static ForgeConfigSpec.DoubleValue particleExtraBrightness; public static ModConfigSpec.DoubleValue particleExtraBrightness;
private static ForgeConfigSpec.ConfigValue<List<? extends String>> particleExtraColors; private static ModConfigSpec.ConfigValue<List<? extends String>> particleExtraColors;
public static SimpleWeightedRandomList<Color> particleExtraColorsWeightedList; public static SimpleWeightedRandomList<Color> particleExtraColorsWeightedList;
Client(ForgeConfigSpec.Builder builder) { Client(ModConfigSpec.Builder builder) {
builder.comment("Settings for the firefly bush.").push("bush"); builder.comment("Settings for the firefly bush.").push("bush");
bushFireflyChancePerTick = builder bushFireflyChancePerTick = builder
.defineInRange("bushFireflyChancePerTick", 0.7, 0, 1); .defineInRange("bushFireflyChancePerTick", 0.7, 0, 1);
@ -120,7 +118,7 @@ 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", List.of(getDefaultColorEntry()), Client::getDefaultColorEntry, Client::isValidColorEntry);
builder.pop(); builder.pop();
builder.pop(); builder.pop();
} }
@ -137,16 +135,20 @@ public final class Config {
private static boolean isValidColorEntry(Object entry) { private static boolean isValidColorEntry(Object entry) {
return entry instanceof String && ((String) entry).matches("#\\w{6},\\d+$"); return entry instanceof String && ((String) entry).matches("#\\w{6},\\d+$");
} }
private static String getDefaultColorEntry() {
return "#ffffff,1";
}
} }
public static class Common { public static class Common {
Common(ForgeConfigSpec.Builder builder) {} Common(ModConfigSpec.Builder builder) {}
private static void onConfigReload() {} private static void onConfigReload() {}
} }
public static class Server { public static class Server {
Server(ForgeConfigSpec.Builder builder) {} Server(ModConfigSpec.Builder builder) {}
private static void onConfigReload() {} private static void onConfigReload() {}
} }