78 lines
4.9 KiB
Java
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);
|
|
}
|
|
} |