TheWildBackport/common/src/main/java/com/cursedcauldron/wildbackport/common/registry/WBBiomes.java
ItsBlackGear 9557d06203 deep dark
2022-07-17 05:03:50 -04:00

78 lines
4.9 KiB
Java

package com.cursedcauldron.wildbackport.common.registry;
import com.cursedcauldron.wildbackport.WildBackport;
import com.cursedcauldron.wildbackport.core.api.CoreRegistry;
import com.cursedcauldron.wildbackport.core.mixin.access.OverworldBiomesAccessor;
import net.minecraft.core.Registry;
import net.minecraft.data.BuiltinRegistries;
import net.minecraft.data.worldgen.BiomeDefaultFeatures;
import net.minecraft.data.worldgen.Carvers;
import net.minecraft.data.worldgen.placement.AquaticPlacements;
import net.minecraft.data.worldgen.placement.VegetationPlacements;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Mth;
import net.minecraft.world.level.biome.AmbientMoodSettings;
import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.biome.BiomeGenerationSettings;
import net.minecraft.world.level.biome.BiomeSpecialEffects;
import net.minecraft.world.level.biome.MobSpawnSettings;
import net.minecraft.world.level.levelgen.GenerationStep;
import java.util.function.Supplier;
public class WBBiomes {
public static final CoreRegistry<Biome> BIOMES = CoreRegistry.create(BuiltinRegistries.BIOME, WildBackport.MOD_ID);
public static final ResourceKey<Biome> MANGROVE_SWAMP = create("mangrove_swamp", WBBiomes::mangroveSwamp);
public static final ResourceKey<Biome> DEEP_DARK = create("deep_dark", WBBiomes::deepDark);
// Mangrove Swamp
public static Biome mangroveSwamp() {
MobSpawnSettings.Builder spawn = new MobSpawnSettings.Builder();
BiomeDefaultFeatures.commonSpawns(spawn);
BiomeGenerationSettings.Builder generation = new BiomeGenerationSettings.Builder();
BiomeDefaultFeatures.addFossilDecoration(generation);
OverworldBiomesAccessor.callGlobalOverworldGeneration(generation);
BiomeDefaultFeatures.addDefaultOres(generation);
BiomeDefaultFeatures.addSwampClayDisk(generation);
generation.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, VegetationPlacements.PATCH_GRASS_NORMAL);
generation.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, VegetationPlacements.PATCH_DEAD_BUSH);
generation.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, VegetationPlacements.PATCH_WATERLILY);
generation.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, AquaticPlacements.SEAGRASS_SWAMP);
return new Biome.BiomeBuilder().biomeCategory(Biome.BiomeCategory.SWAMP).precipitation(Biome.Precipitation.RAIN).temperature(0.8F).downfall(0.9F).specialEffects(new BiomeSpecialEffects.Builder().waterColor(3832426).waterFogColor(5077600).fogColor(12638463).skyColor(calculateSkyColor(0.8f)).foliageColorOverride(9285927).grassColorModifier(BiomeSpecialEffects.GrassColorModifier.SWAMP).ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).build()).mobSpawnSettings(spawn.build()).generationSettings(generation.build()).build();
}
// Deep Dark
public static Biome deepDark() {
MobSpawnSettings.Builder spawn = new MobSpawnSettings.Builder();
BiomeGenerationSettings.Builder generation = new BiomeGenerationSettings.Builder();
generation.addCarver(GenerationStep.Carving.AIR, Carvers.CAVE);
generation.addCarver(GenerationStep.Carving.AIR, Carvers.CAVE_EXTRA_UNDERGROUND);
generation.addCarver(GenerationStep.Carving.AIR, Carvers.CANYON);
BiomeDefaultFeatures.addDefaultCrystalFormations(generation);
BiomeDefaultFeatures.addDefaultMonsterRoom(generation);
BiomeDefaultFeatures.addDefaultUndergroundVariety(generation);
BiomeDefaultFeatures.addSurfaceFreezing(generation);
BiomeDefaultFeatures.addPlainGrass(generation);
BiomeDefaultFeatures.addDefaultOres(generation, true);
BiomeDefaultFeatures.addDefaultSoftDisks(generation);
BiomeDefaultFeatures.addPlainVegetation(generation);
BiomeDefaultFeatures.addDefaultMushrooms(generation);
BiomeDefaultFeatures.addDefaultExtraVegetation(generation);
return new Biome.BiomeBuilder().biomeCategory(Biome.BiomeCategory.UNDERGROUND).precipitation(Biome.Precipitation.RAIN).temperature(0.8F).downfall(0.4F).specialEffects(new BiomeSpecialEffects.Builder().waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).build()).mobSpawnSettings(spawn.build()).generationSettings(generation.build()).build();
}
// Registry
private static ResourceKey<Biome> create(String key, Supplier<Biome> biome) {
BIOMES.register(key, biome);
return ResourceKey.create(Registry.BIOME_REGISTRY, new ResourceLocation(WildBackport.MOD_ID, key));
}
protected static int calculateSkyColor(float temperature) {
float modifier = temperature / 3.0F;
modifier = Mth.clamp(modifier, -1.0F, 1.0F);
return Mth.hsvToRgb(0.62222224F - modifier * 0.05F, 0.5F + modifier * 0.1F, 1.0F);
}
}