Ported config. Adjusted particle color logic.
This commit is contained in:
@ -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) {
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user