diff --git a/src/main/java/com/teamabnormals/environmental/common/levelgen/feature/ZebraDazzleFeature.java b/src/main/java/com/teamabnormals/environmental/common/levelgen/feature/ZebraDazzleFeature.java index 57df8d3aa..03e3b49ed 100644 --- a/src/main/java/com/teamabnormals/environmental/common/levelgen/feature/ZebraDazzleFeature.java +++ b/src/main/java/com/teamabnormals/environmental/common/levelgen/feature/ZebraDazzleFeature.java @@ -4,6 +4,7 @@ import com.mojang.datafixers.util.Pair; import com.mojang.serialization.Codec; import com.teamabnormals.environmental.common.entity.animal.zebroid.Zebra; +import com.teamabnormals.environmental.core.EnvironmentalConfig; import com.teamabnormals.environmental.core.registry.EnvironmentalEntityTypes; import net.minecraft.core.BlockPos; import net.minecraft.tags.BlockTags; @@ -26,13 +27,31 @@ public ZebraDazzleFeature(Codec config) { @Override public boolean place(FeaturePlaceContext context) { + + if(EnvironmentalConfig.COMMON.enableZebraDazzles.get() == false + || (EnvironmentalConfig.COMMON.zebraGroupSize.get() == 0 + && EnvironmentalConfig.COMMON.zebraExtraSpawns.get() == 0)) + { + return false; + } + BlockPos pos = context.origin(); WorldGenLevel level = context.level(); RandomSource random = context.random(); List> zebras = Lists.newArrayList(); int spawnedZebras = 0; - int zebraCount = 18 + random.nextInt(3) + random.nextInt(3) + random.nextInt(3); + + int extraZebras = EnvironmentalConfig.COMMON.zebraExtraSpawns.get(); + int zebraCount = EnvironmentalConfig.COMMON.zebraGroupSize.get(); + + if(extraZebras > 0) + { + zebraCount += random.nextInt(extraZebras + 1); + zebraCount += random.nextInt(extraZebras + 1); + zebraCount += random.nextInt(extraZebras + 1); + } + for (int i = 0; i < 64; ++i) { int spawnRange = 8; double d0 = (double) pos.getX() + (random.nextDouble() - random.nextDouble()) * (double) spawnRange + 0.5D; @@ -51,7 +70,9 @@ public boolean place(FeaturePlaceContext context) { } } - if (zebras.size() > 16) { + /* Check if zebra group size is equal to or greater than size set in config. + previously checked for greater than 16? magic numbers bad!*/ + if (zebras.size() >= EnvironmentalConfig.COMMON.zebraGroupSize.get()) { for (Pair pair : zebras) { Zebra zebra = pair.getFirst(); Vec3 zebraPos = pair.getSecond(); diff --git a/src/main/java/com/teamabnormals/environmental/core/EnvironmentalConfig.java b/src/main/java/com/teamabnormals/environmental/core/EnvironmentalConfig.java index d12b98f32..6b6ff5434 100644 --- a/src/main/java/com/teamabnormals/environmental/core/EnvironmentalConfig.java +++ b/src/main/java/com/teamabnormals/environmental/core/EnvironmentalConfig.java @@ -6,6 +6,7 @@ import net.minecraftforge.common.ForgeConfigSpec.IntValue; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import org.apache.commons.lang3.tuple.Pair; +import org.checkerframework.common.value.qual.IntVal; @EventBusSubscriber(modid = Environmental.MOD_ID) public class EnvironmentalConfig { @@ -27,6 +28,10 @@ public static class Common { public final IntValue minimumAdditionalHoglets; public final IntValue maximumAdditionalHoglets; + public final BooleanValue enableZebraDazzles; + public final IntValue zebraGroupSize; + public final IntValue zebraExtraSpawns; + public final BooleanValue muddyPigs; public final BooleanValue naturalMuddyPigs; public final DoubleValue muddyPigDecorationChance; @@ -42,6 +47,11 @@ public static class Common { Common(ForgeConfigSpec.Builder builder) { builder.push("mobs"); + builder.push("zebra"); + enableZebraDazzles = builder.comment("Whether or not to spawn Zebra Dazzles").define("Spawn Zebra Dazzles", true); + zebraGroupSize = builder.comment("Define group size for zebras dazzles").defineInRange("Zebra Group Size", 18, 0, 100); + zebraExtraSpawns = builder.comment("Random range which spawns extra zebras. default is 3. set to 0 to spawn exactly the amount of zebras specified in group size with no variation").defineInRange("Extra Zebra Ranges", 3, 0, 100); + builder.pop(); builder.push("deer"); deerFlowerReproducing = builder.comment("If Deer can reproduce and spread flowers by feeding them an Apple followed by a flower").define("Deer flower reproducing", true); deerAntlerChance = builder.comment("The chance Deer have to spawn with Antlers; 0.0 for never, 1.0 for always").defineInRange("Deer Antler chance", 0.5D, 0.0D, 1.0D);