WIP rework stuff

This commit is contained in:
Forstride 2020-10-06 21:37:30 -04:00
parent 9279cc7547
commit 692a20d335
114 changed files with 1642 additions and 1681 deletions

View file

@ -20,19 +20,17 @@ public class BOPBiomes
public static RegistryKey<Biome> alps = register("alps");
public static RegistryKey<Biome> alps_foothills = register("alps_foothills");
public static RegistryKey<Biome> bayou = register("bayou");
public static RegistryKey<Biome> bog = register("bog");
public static RegistryKey<Biome> boreal_forest = register("boreal_forest");
public static RegistryKey<Biome> chaparral = register("chaparral");
public static RegistryKey<Biome> bayou_mangrove = register("bayou_mangrove");
public static RegistryKey<Biome> cherry_blossom_grove = register("cherry_blossom_grove");
public static RegistryKey<Biome> cold_desert = register("cold_desert");
public static RegistryKey<Biome> coniferous_forest = register("coniferous_forest");
public static RegistryKey<Biome> coniferous_lakes = register("coniferous_lakes");
public static RegistryKey<Biome> dead_forest = register("dead_forest");
public static RegistryKey<Biome> dense_bayou = register("dense_bayou");
public static RegistryKey<Biome> dryland = register("dryland");
public static RegistryKey<Biome> dry_steppe = register("dry_steppe");
public static RegistryKey<Biome> fir_clearing = register("fir_clearing");
public static RegistryKey<Biome> floodplain = register("floodplain");
public static RegistryKey<Biome> flower_meadow = register("flower_meadow");
public static RegistryKey<Biome> fungal_jungle = register("fungal_jungle");
public static RegistryKey<Biome> grassland = register("grassland");
public static RegistryKey<Biome> gravel_beach = register("gravel_beach");
public static RegistryKey<Biome> grove = register("grove");
public static RegistryKey<Biome> highland = register("highland");
@ -40,48 +38,41 @@ public class BOPBiomes
public static RegistryKey<Biome> jade_cliffs = register("jade_cliffs");
public static RegistryKey<Biome> lavender_field = register("lavender_field");
public static RegistryKey<Biome> lush_desert = register("lush_desert");
public static RegistryKey<Biome> lush_grassland = register("lush_grassland");
public static RegistryKey<Biome> lush_swamp = register("lush_swamp");
public static RegistryKey<Biome> mangrove = register("mangrove");
public static RegistryKey<Biome> maple_woods = register("maple_woods");
public static RegistryKey<Biome> marsh = register("marsh");
public static RegistryKey<Biome> meadow = register("meadow");
public static RegistryKey<Biome> mire = register("mire");
public static RegistryKey<Biome> muskeg = register("muskeg");
public static RegistryKey<Biome> mystic_grove = register("mystic_grove");
public static RegistryKey<Biome> mystic_plains = register("mystic_plains");
public static RegistryKey<Biome> ominous_woods = register("ominous_woods");
public static RegistryKey<Biome> orchard = register("orchard");
public static RegistryKey<Biome> origin_valley = register("origin_valley");
public static RegistryKey<Biome> outback = register("outback");
public static RegistryKey<Biome> overgrown_cliffs = register("overgrown_cliffs");
public static RegistryKey<Biome> pasture = register("pasture");
public static RegistryKey<Biome> poppy_field = register("poppy_field");
public static RegistryKey<Biome> prairie = register("prairie");
public static RegistryKey<Biome> pumpkin_patch = register("pumpkin_patch");
public static RegistryKey<Biome> rainbow_hills = register("rainbow_hills");
public static RegistryKey<Biome> rainforest = register("rainforest");
public static RegistryKey<Biome> rainforest_clearing = register("rainforest_clearing");
public static RegistryKey<Biome> rainforest_cliffs = register("rainforest_cliffs");
public static RegistryKey<Biome> redwood_forest = register("redwood_forest");
public static RegistryKey<Biome> redwood_forest_edge = register("redwood_forest_edge");
public static RegistryKey<Biome> scrubland = register("scrubland");
public static RegistryKey<Biome> seasonal_forest = register("seasonal_forest");
public static RegistryKey<Biome> shield = register("shield");
public static RegistryKey<Biome> shroomy_wetland = register("shroomy_wetland");
public static RegistryKey<Biome> shrubland = register("shrubland");
public static RegistryKey<Biome> shrubland_hills = register("shrubland_hills");
public static RegistryKey<Biome> silkglade = register("silkglade");
public static RegistryKey<Biome> snowy_coniferous_forest = register("snowy_coniferous_forest");
public static RegistryKey<Biome> snowy_fir_clearing = register("snowy_fir_clearing");
public static RegistryKey<Biome> snowy_forest = register("snowy_forest");
public static RegistryKey<Biome> steppe = register("steppe");
public static RegistryKey<Biome> temperate_rainforest = register("temperate_rainforest");
public static RegistryKey<Biome> temperate_rainforest_hills = register("temperate_rainforest_hills");
public static RegistryKey<Biome> tropical_rainforest = register("tropical_rainforest");
public static RegistryKey<Biome> tropic_beach = register("tropic_beach");
public static RegistryKey<Biome> tropics = register("tropics");
public static RegistryKey<Biome> tundra = register("tundra");
public static RegistryKey<Biome> tundra_basin = register("tundra_basin");
public static RegistryKey<Biome> tundra_bog = register("tundra_bog");
public static RegistryKey<Biome> volcanic_plains = register("volcanic_plains");
public static RegistryKey<Biome> volcano = register("volcano");
public static RegistryKey<Biome> wasteland = register("wasteland");
public static RegistryKey<Biome> wetland = register("wetland");
public static RegistryKey<Biome> woodland = register("woodland");
public static RegistryKey<Biome> wetland_marsh = register("wetland_marsh");
public static RegistryKey<Biome> crystalline_chasm = register("crystalline_chasm");
public static RegistryKey<Biome> undergrowth = register("undergrowth");

View file

@ -39,7 +39,6 @@ public enum BOPClimates
MEDITERRANEAN,
SAVANNA,
HOT_DESERT,
WASTELAND,
NETHER;
private int totalBiomesWeight;
@ -135,15 +134,15 @@ public enum BOPClimates
// we will contrive to make any combination equally likely, so the overall rarity of each climate is in proportion to the number of times it appears in the array
private static final BOPClimates[] climateMapping = new BOPClimates[]
{
WET_BOREAL, TUNDRA, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, TUNDRA, DRY_BOREAL,
TUNDRA, TUNDRA, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, TUNDRA, TUNDRA,
WET_BOREAL, WET_BOREAL, TUNDRA, TUNDRA, TUNDRA, TUNDRA, TUNDRA, TUNDRA, TUNDRA, TUNDRA, DRY_BOREAL, DRY_BOREAL,
WET_TEMPERATE, WET_BOREAL, WET_BOREAL, WET_BOREAL, WET_BOREAL, WET_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_TEMPERATE,
WET_BOREAL, WET_BOREAL, WET_BOREAL, WET_BOREAL, WET_BOREAL, WET_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_BOREAL,
WET_TEMPERATE, WET_TEMPERATE, WET_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, DRY_TEMPERATE, DRY_TEMPERATE, DRY_TEMPERATE,
WET_TEMPERATE, WET_TEMPERATE, WET_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, DRY_TEMPERATE, DRY_TEMPERATE, DRY_TEMPERATE,
SUBTROPICAL, SUBTROPICAL, SUBTROPICAL, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, SAVANNA, SAVANNA, SAVANNA,
TROPICAL, TROPICAL, SUBTROPICAL, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, SAVANNA, HOT_DESERT, HOT_DESERT,
SUBTROPICAL, SUBTROPICAL, WET_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, DRY_TEMPERATE, SAVANNA, SAVANNA,
SUBTROPICAL, SUBTROPICAL, SUBTROPICAL, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, SAVANNA, SAVANNA, SAVANNA,
TROPICAL, TROPICAL, SUBTROPICAL, SUBTROPICAL, MEDITERRANEAN, MEDITERRANEAN, MEDITERRANEAN, MEDITERRANEAN, SAVANNA, SAVANNA, HOT_DESERT, HOT_DESERT,
TROPICAL, TROPICAL, TROPICAL, SUBTROPICAL, MEDITERRANEAN, MEDITERRANEAN, MEDITERRANEAN, MEDITERRANEAN, SAVANNA, HOT_DESERT, HOT_DESERT, WASTELAND
TROPICAL, TROPICAL, SUBTROPICAL, SUBTROPICAL, MEDITERRANEAN, MEDITERRANEAN, MEDITERRANEAN, MEDITERRANEAN, SAVANNA, SAVANNA, HOT_DESERT, HOT_DESERT
};
public static int[] getClimateMappingInts()

View file

@ -28,5 +28,10 @@ public class BOPItems
public static Item umbran_boat;
public static Item hellbark_boat;
public static Item venison;
public static Item cooked_venison;
public static Item turkey_leg;
public static Item cooked_turkey_leg;
public static Item music_disc_wanderer;
}

View file

@ -12,4 +12,11 @@ import net.minecraft.util.SoundEvent;
public class BOPSounds
{
public static SoundEvent music_disc_wanderer;
public static SoundEvent deer_hurt;
public static SoundEvent deer_dead;
public static SoundEvent deer_step;
public static SoundEvent turkey_ambient;
public static SoundEvent turkey_hurt;
public static SoundEvent turkey_dead;
public static SoundEvent turkey_step;
}

View file

@ -24,14 +24,14 @@ public class BayouBiome extends BiomeTemplate
{
public BayouBiome()
{
this.addWeight(BOPClimates.SUBTROPICAL, 7);
this.setBeachBiome(BOPBiomes.mangrove);
this.addWeight(BOPClimates.SUBTROPICAL, 10);
this.setBeachBiome(BOPBiomes.bayou_mangrove);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.315F).scale(-0.05F).temperature(0.95F).downfall(0.9F);
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.3F).scale(0.0F).temperature(0.95F).downfall(0.9F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x62AF84).waterFogColor(0x0C211C).fogColor(12638463).skyColor(calculateSkyColor(0.95F)).grassColorOverride(0x6FAA50).foliageColorOverride(0x8BDB67).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@ -60,7 +60,7 @@ public class BayouBiome extends BiomeTemplate
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CATTAIL_12);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_8);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_14);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_7);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_10);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_5);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_6);

View file

@ -7,6 +7,7 @@
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
@ -20,20 +21,19 @@ import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class MangroveBiome extends BiomeTemplate
public class BayouMangrove extends BiomeTemplate
{
public MangroveBiome()
public BayouMangrove()
{
this.addWeight(BOPClimates.SUBTROPICAL, 10);
this.setBeachBiome(null);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.25F).scale(-0.025F).temperature(0.81F).downfall(0.7F);
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.275F).scale(-0.025F).temperature(0.95F).downfall(0.9F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x448FBD).waterFogColor(0x061326).fogColor(12638463).skyColor(calculateSkyColor(0.81F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x62AF84).waterFogColor(0x0C211C).fogColor(12638463).skyColor(calculateSkyColor(0.95F)).grassColorOverride(0x6FAA50).foliageColorOverride(0x8BDB67).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
@ -59,7 +59,7 @@ public class MangroveBiome extends BiomeTemplate
////////////////////////////////////////////////////////////
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MANGROVE_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BAYOU_MANGROVE_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MANGROVE_ROOTS);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12);
@ -79,8 +79,6 @@ public class MangroveBiome extends BiomeTemplate
{
// Entities
builder.addSpawn(EntityClassification.WATER_AMBIENT, new MobSpawnInfo.Spawners(EntityType.COD, 15, 3, 6));
builder.addSpawn(EntityClassification.WATER_AMBIENT, new MobSpawnInfo.Spawners(EntityType.PUFFERFISH, 15, 1, 3));
builder.addSpawn(EntityClassification.WATER_AMBIENT, new MobSpawnInfo.Spawners(EntityType.TROPICAL_FISH, 25, 8, 8));
builder.addSpawn(EntityClassification.WATER_CREATURE, new MobSpawnInfo.Spawners(EntityType.SQUID, 10, 4, 4));
builder.addSpawn(EntityClassification.WATER_CREATURE, new MobSpawnInfo.Spawners(EntityType.DOLPHIN, 2, 1, 2));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));

View file

@ -1,96 +0,0 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.*;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.feature.*;
import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class BorealForestBiome extends BiomeTemplate
{
public BorealForestBiome()
{
this.addWeight(BOPClimates.DRY_BOREAL, 7);
this.setBeachBiome(BOPBiomes.gravel_beach);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
// Base properties
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.3F).scale(0.3F).temperature(0.3F).downfall(0.6F);
// Special effects
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.3F)).grassColorOverride(0x9FB771).foliageColorOverride(0xC9CE65).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
{
// Surface builder
builder.surfaceBuilder(new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_GRASS));
// Structures
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD);
// Underground
DefaultBiomeFeatures.addDefaultCarvers(builder);
DefaultBiomeFeatures.addDefaultLakes(builder);
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
DefaultBiomeFeatures.addDefaultOres(builder);
DefaultBiomeFeatures.addDefaultSoftDisks(builder);
////////////////////////////////////////////////////////////
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BOREAL_FOREST_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.FLOWER_DEFAULT);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_5);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_8);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN);
////////////////////////////////////////////////////////////
// Other Features
DefaultBiomeFeatures.addDefaultSprings(builder);
DefaultBiomeFeatures.addSurfaceFreezing(builder);
}
@Override
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1));
}
}

View file

@ -11,6 +11,7 @@ import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import biomesoplenty.init.ModEntities;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.*;
@ -83,11 +84,9 @@ public class ConiferousForestBiome extends BiomeTemplate
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
// Entities
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(ModEntities.turkey, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(ModEntities.deer, 8, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));

View file

@ -12,35 +12,35 @@ import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders;
import biomesoplenty.init.ModEntities;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.*;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.feature.*;
import net.minecraft.world.gen.feature.Features;
import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class ShieldBiome extends BiomeTemplate
public class ConiferousLakesBiome extends BiomeTemplate
{
public ShieldBiome()
public ConiferousLakesBiome()
{
this.addWeight(BOPClimates.WET_BOREAL, 5);
this.setBeachBiome(BOPBiomes.gravel_beach);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(-0.2F).scale(0.15F).temperature(0.4F).downfall(0.8F);
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(-0.3F).scale(0.2F).temperature(0.45F).downfall(0.5F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0x7C9B45).foliageColorOverride(0x8EAF4F).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.45F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
{
builder.surfaceBuilder(new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.CHAPARRAL, SurfaceBuilder.CONFIG_GRASS));
builder.surfaceBuilder(new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.EXPOSED_STONE, SurfaceBuilder.CONFIG_GRASS));
// Structures
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
@ -48,7 +48,9 @@ public class ShieldBiome extends BiomeTemplate
// Underground
DefaultBiomeFeatures.addDefaultCarvers(builder);
DefaultBiomeFeatures.addDefaultLakes(builder);
builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER);
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
DefaultBiomeFeatures.addDefaultOres(builder);
@ -58,15 +60,16 @@ public class ShieldBiome extends BiomeTemplate
////////////////////////////////////////////////////////////
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SHIELD_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.FLOWER_DEFAULT);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CONIFEROUS_LAKES_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CONIFEROUS_FOREST_FLOWERS);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CATTAIL_6);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_4);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_5);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_5);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_BERRY_SPARSE);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_RIVER);
@ -81,10 +84,10 @@ public class ShieldBiome extends BiomeTemplate
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
// Entities
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(ModEntities.deer, 8, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4));
builder.addSpawn(EntityClassification.WATER_AMBIENT, new MobSpawnInfo.Spawners(EntityType.SALMON, 5, 1, 5));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4));

View file

@ -24,7 +24,7 @@ public class DeadForestBiome extends BiomeTemplate
{
public DeadForestBiome()
{
this.addWeight(BOPClimates.DRY_BOREAL, 2);
this.addWeight(BOPClimates.DRY_BOREAL, 1);
this.setBeachBiome(BOPBiomes.gravel_beach);
}

View file

@ -7,6 +7,7 @@
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
@ -14,25 +15,24 @@ import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.*;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.feature.*;
import net.minecraft.world.gen.feature.Features;
import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class LushSwampBiome extends BiomeTemplate
public class DenseBayouBiome extends BiomeTemplate
{
public LushSwampBiome()
public DenseBayouBiome()
{
this.addWeight(BOPClimates.SUBTROPICAL, 3);
this.setBeachBiome(null);
this.setBeachBiome(BOPBiomes.bayou_mangrove);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.05F).scale(0.1F).temperature(0.81F).downfall(1.0F);
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.315F).scale(-0.05F).temperature(0.95F).downfall(0.9F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.81F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x62AF84).waterFogColor(0x0C211C).fogColor(12638463).skyColor(calculateSkyColor(0.95F)).grassColorOverride(0x6FAA50).foliageColorOverride(0x8BDB67).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
@ -41,7 +41,6 @@ public class LushSwampBiome extends BiomeTemplate
builder.surfaceBuilder(new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_GRASS));
// Structures
builder.addStructureStart(StructureFeatures.SWAMP_HUT);
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP);
@ -56,19 +55,19 @@ public class LushSwampBiome extends BiomeTemplate
////////////////////////////////////////////////////////////
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LUSH_SWAMP_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LUSH_SWAMP_FLOWERS);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DENSE_BAYOU_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BLUE_HYDRANGEA_1);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CATTAIL_6);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_10);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_5);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_6);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CATTAIL_24);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DENSE_BAYOU_VINES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_14);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_15);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_10);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_12);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_RIVER);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP);
////////////////////////////////////////////////////////////
@ -81,10 +80,6 @@ public class LushSwampBiome extends BiomeTemplate
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
// Entities
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4));

View file

@ -10,7 +10,6 @@ package biomesoplenty.common.biome.overworld;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.*;
@ -20,31 +19,30 @@ import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class OutbackBiome extends BiomeTemplate
public class DrySteppeBiome extends BiomeTemplate
{
public OutbackBiome()
public DrySteppeBiome()
{
this.addWeight(BOPClimates.HOT_DESERT, 7);
this.setRiverBiome(null);
this.setBeachBiome(null);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.DESERT).depth(0.05F).scale(0.0F).temperature(2.0F).downfall(0.05F);
builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.SAVANNA).depth(1.4F).scale(0.3F).temperature(1.5F).downfall(0.1F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(2.0F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(0x9E9DFF).grassColorOverride(0xDBBA9F).foliageColorOverride(0xD6C7A8).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
{
builder.surfaceBuilder(new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, BOPSurfaceBuilders.RED_SAND_SURFACE));
builder.surfaceBuilder(new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_GRASS));
// Structures
builder.addStructureStart(StructureFeatures.VILLAGE_SAVANNA);
builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST);
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_DESERT);
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD);
// Underground
DefaultBiomeFeatures.addDefaultCarvers(builder);
@ -59,16 +57,17 @@ public class OutbackBiome extends BiomeTemplate
////////////////////////////////////////////////////////////
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.OUTBACK_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DESERT_GRASS_20);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_CACTUS_DESERT);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_DEAD_BUSH_2);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DEAD_GRASS_5);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_DEAD_BUSH);
////////////////////////////////////////////////////////////
// Other Features
DefaultBiomeFeatures.addDefaultSprings(builder);
DefaultBiomeFeatures.addExtraEmeralds(builder);
DefaultBiomeFeatures.addInfestedStone(builder);
DefaultBiomeFeatures.addSurfaceFreezing(builder);
}
@ -77,6 +76,7 @@ public class OutbackBiome extends BiomeTemplate
{
// Entities
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.LLAMA, 5, 4, 6));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4));
@ -86,6 +86,5 @@ public class OutbackBiome extends BiomeTemplate
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.HUSK, 80, 4, 4));
}
}

View file

@ -24,7 +24,7 @@ public class DrylandBiome extends BiomeTemplate
{
public DrylandBiome()
{
this.addWeight(BOPClimates.SAVANNA, 1);
this.addWeight(BOPClimates.SAVANNA, 5);
this.setRiverBiome(null);
this.setBeachBiome(null);
}
@ -43,8 +43,6 @@ public class DrylandBiome extends BiomeTemplate
builder.surfaceBuilder(new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_GRASS));
// Structures
builder.addStructureStart(StructureFeatures.VILLAGE_DESERT);
builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST);
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD);
builder.addStructureStart(StructureFeatures.NETHER_FOSSIL);
@ -65,7 +63,8 @@ public class DrylandBiome extends BiomeTemplate
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DRYLAND_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_10);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DEAD_GRASS_5);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DEAD_GRASS_2);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DESERT_GRASS_10);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_DEAD_BUSH);

View file

@ -10,6 +10,7 @@ package biomesoplenty.common.biome.overworld;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import biomesoplenty.init.ModEntities;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.*;
@ -77,11 +78,9 @@ public class FirClearingBiome extends BiomeTemplate
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
// Entities
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(ModEntities.turkey, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(ModEntities.deer, 8, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));

View file

@ -1,90 +0,0 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.*;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.feature.Features;
import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class GrasslandBiome extends BiomeTemplate
{
public GrasslandBiome()
{
this.addWeight(BOPClimates.COOL_TEMPERATE, 5);
this.setBeachBiome(BOPBiomes.gravel_beach);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(0.1F).scale(0.2F).temperature(0.6F).downfall(0.7F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).grassColorOverride(0x88C57F).foliageColorOverride(0x6AB66F).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
{
builder.surfaceBuilder(new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_GRASS));
// Structures
builder.addStructureStart(StructureFeatures.VILLAGE_PLAINS);
builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST);
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD);
// Underground
DefaultBiomeFeatures.addDefaultCarvers(builder);
DefaultBiomeFeatures.addDefaultLakes(builder);
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
DefaultBiomeFeatures.addDefaultOres(builder);
////////////////////////////////////////////////////////////
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE);
////////////////////////////////////////////////////////////
// Other Features
DefaultBiomeFeatures.addDefaultSprings(builder);
DefaultBiomeFeatures.addSurfaceFreezing(builder);
}
@Override
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
// Entities
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.HORSE, 5, 2, 6));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.DONKEY, 1, 1, 3));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1));
}
}

View file

@ -24,7 +24,7 @@ public class GroveBiome extends BiomeTemplate
{
public GroveBiome()
{
this.addWeight(BOPClimates.MEDITERRANEAN, 7);
this.addWeight(BOPClimates.MEDITERRANEAN, 10);
this.setBeachBiome(null);
}

View file

@ -24,7 +24,7 @@ public class JadeCliffsBiome extends BiomeTemplate
{
public JadeCliffsBiome()
{
this.addWeight(BOPClimates.WET_TEMPERATE, 1);
this.addWeight(BOPClimates.WARM_TEMPERATE, 1);
this.setBeachBiome(null);
}

View file

@ -23,7 +23,7 @@ public class LavenderFieldBiome extends BiomeTemplate
{
public LavenderFieldBiome()
{
this.addWeight(BOPClimates.MEDITERRANEAN, 5);
this.addWeight(BOPClimates.MEDITERRANEAN, 3);
}
@Override
@ -54,7 +54,7 @@ public class LavenderFieldBiome extends BiomeTemplate
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LAVENDER_FIELD_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LAVENDER_FIELD_FLOWERS);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LAVENDER_FLOWERS);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE);

View file

@ -25,7 +25,7 @@ public class LushDesertBiome extends BiomeTemplate
{
public LushDesertBiome()
{
this.addWeight(BOPClimates.HOT_DESERT, 1);
this.addWeight(BOPClimates.SAVANNA, 1);
this.setBeachBiome(null);
}
@ -71,7 +71,7 @@ public class LushDesertBiome extends BiomeTemplate
// Other Features
DefaultBiomeFeatures.addDefaultSprings(builder);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.OVERGROWN_CLIFFS_SPRING);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATER_SPRING_EXTRA);
DefaultBiomeFeatures.addSurfaceFreezing(builder);
}

View file

@ -1,94 +0,0 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.*;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.feature.*;
import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class LushGrasslandBiome extends BiomeTemplate
{
public LushGrasslandBiome()
{
this.setBeachBiome(BOPBiomes.mangrove);
this.addWeight(BOPClimates.TROPICAL, 7);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(0.2F).scale(0.2F).temperature(0.95F).downfall(0.9F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.95F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
{
builder.surfaceBuilder(new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_GRASS));
// Structures
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_JUNGLE);
// Underground
DefaultBiomeFeatures.addDefaultCarvers(builder);
DefaultBiomeFeatures.addDefaultLakes(builder);
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
DefaultBiomeFeatures.addDefaultOres(builder);
////////////////////////////////////////////////////////////
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LUSH_GRASSLAND_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LUSH_GRASSLAND_FLOWERS);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_5);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_5);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_125);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_5);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_RIVER);
////////////////////////////////////////////////////////////
// Other Features
DefaultBiomeFeatures.addDefaultSprings(builder);
DefaultBiomeFeatures.addSurfaceFreezing(builder);
}
@Override
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
// Entities
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1));
}
}

View file

@ -24,7 +24,6 @@ public class MapleWoodsBiome extends BiomeTemplate
{
public MapleWoodsBiome()
{
this.addWeight(BOPClimates.DRY_BOREAL, 3);
this.setBeachBiome(BOPBiomes.gravel_beach);
}

View file

@ -24,7 +24,7 @@ public class MuskegBiome extends BiomeTemplate
{
public MuskegBiome()
{
this.addWeight(BOPClimates.TUNDRA, 2);
this.addWeight(BOPClimates.TUNDRA, 3);
this.setBeachBiome(null);
}

View file

@ -63,7 +63,7 @@ public class MysticGroveBiome extends BiomeTemplate
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MYSTIC_GROVE_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MYSTIC_GROVE_FLOWERS);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BLUE_HYDRANGEA_4);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BLUE_HYDRANGEA_1);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.HUGE_RED_MUSHROOM_EXTRA);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_1);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SMALL_RED_MUSHROOM);

View file

@ -7,31 +7,32 @@
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.*;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.feature.*;
import net.minecraft.world.gen.feature.Features;
import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class TemperateRainforestHillsBiome extends BiomeTemplate
public class MysticPlainsBiome extends BiomeTemplate
{
public TemperateRainforestHillsBiome()
public MysticPlainsBiome()
{
this.setBeachBiome(BOPBiomes.gravel_beach);
this.setBeachBiome(null);
this.setRiverBiome(null);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.75F).scale(0.25F).temperature(0.65F).downfall(1.2F);
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.0F).scale(-0.05F).temperature(0.7F).downfall(0.8F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.65F)).grassColorOverride(0xB6D367).foliageColorOverride(0x95D660).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x9C3FE4).waterFogColor(0x2E0533).fogColor(0xFFC9DA).skyColor(0x66DBFF).grassColorOverride(0x69CFDB).foliageColorOverride(0x70E0B5).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
@ -51,17 +52,21 @@ public class TemperateRainforestHillsBiome extends BiomeTemplate
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
DefaultBiomeFeatures.addDefaultOres(builder);
DefaultBiomeFeatures.addDefaultSoftDisks(builder);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.DISK_CLAY);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.WHITE_SAND_DISK);
////////////////////////////////////////////////////////////
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TEMPERATE_RAINFOREST_HILLS_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.FLOWER_DEFAULT);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MYSTIC_PLAINS_FLOWERS);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_8);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_14);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_5);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BLUE_HYDRANGEA_4);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_4);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_25);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_24);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_6);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_10);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL);
@ -76,18 +81,10 @@ public class TemperateRainforestHillsBiome extends BiomeTemplate
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
// Entities
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 20, 1, 1));
}
}

View file

@ -22,7 +22,7 @@ public class PrairieBiome extends BiomeTemplate
{
public PrairieBiome()
{
this.addWeight(BOPClimates.MEDITERRANEAN, 10);
this.addWeight(BOPClimates.MEDITERRANEAN, 7);
}
@Override

View file

@ -31,7 +31,7 @@ public class PumpkinPatchBiome extends BiomeTemplate
{
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.0F).scale(-0.025F).temperature(0.4F).downfall(0.8F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0xA6B952).foliageColorOverride(0x91A627).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0xB5B952).foliageColorOverride(0xA3A627).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override

View file

@ -24,16 +24,16 @@ public class RainforestBiome extends BiomeTemplate
{
public RainforestBiome()
{
this.setBeachBiome(BOPBiomes.mangrove);
this.addWeight(BOPClimates.SUBTROPICAL, 1);
this.addWeight(BOPClimates.TROPICAL, 7);
this.setBeachBiome(null);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(1.2F).scale(0.5F).temperature(0.9F).downfall(1.5F);
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.JUNGLE).depth(0.15F).scale(0.35F).temperature(1.0F).downfall(1.0F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.9F)).grassColorOverride(0x47B063).foliageColorOverride(0x47BA6D).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x3FDF99).waterFogColor(0x042F26).fogColor(12638463).skyColor(calculateSkyColor(1.0F)).grassColorOverride(0xA7E140).foliageColorOverride(0x88E140).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
@ -42,8 +42,9 @@ public class RainforestBiome extends BiomeTemplate
builder.surfaceBuilder(new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_GRASS));
// Structures
builder.addStructureStart(StructureFeatures.JUNGLE_TEMPLE);
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN);
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_JUNGLE);
// Underground
DefaultBiomeFeatures.addDefaultCarvers(builder);
@ -51,7 +52,8 @@ public class RainforestBiome extends BiomeTemplate
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
DefaultBiomeFeatures.addDefaultOres(builder);
DefaultBiomeFeatures.addDefaultSoftDisks(builder);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.ORANGE_SAND_DISK);
////////////////////////////////////////////////////////////
@ -60,18 +62,21 @@ public class RainforestBiome extends BiomeTemplate
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINFOREST_FLOWERS);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PEONY_1);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_6);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_14);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_10);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_5);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_12);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_10);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_MELON);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP);
////////////////////////////////////////////////////////////
// Other Features
DefaultBiomeFeatures.addDefaultSprings(builder);
DefaultBiomeFeatures.addExtraEmeralds(builder);
DefaultBiomeFeatures.addInfestedStone(builder);
DefaultBiomeFeatures.addSurfaceFreezing(builder);
}
@ -79,10 +84,8 @@ public class RainforestBiome extends BiomeTemplate
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
// Entities
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PARROT, 40, 1, 2));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4));
@ -92,5 +95,6 @@ public class RainforestBiome extends BiomeTemplate
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.OCELOT, 2, 1, 1));
}
}

View file

@ -19,20 +19,19 @@ import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class FloodplainBiome extends BiomeTemplate
public class RainforestClearingBiome extends BiomeTemplate
{
public FloodplainBiome()
public RainforestClearingBiome()
{
this.addWeight(BOPClimates.TROPICAL, 5);
this.setBeachBiome(null);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.275F).scale(0.0F).temperature(0.9F).downfall(1.2F);
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.JUNGLE).depth(-0.125F).scale(-0.05F).temperature(1.0F).downfall(1.0F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(12638463).skyColor(calculateSkyColor(0.9F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x3FDF99).waterFogColor(0x042F26).fogColor(12638463).skyColor(calculateSkyColor(1.0F)).grassColorOverride(0xA7E140).foliageColorOverride(0x88E140).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
@ -57,11 +56,13 @@ public class FloodplainBiome extends BiomeTemplate
////////////////////////////////////////////////////////////
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FLOODPLAIN_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINFOREST_CLEARING_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINFOREST_FLOWERS);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_7);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_15);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_12);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_24);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_250);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP);

View file

@ -20,20 +20,19 @@ import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class OvergrownCliffsBiome extends BiomeTemplate
public class RainforestCliffsBiome extends BiomeTemplate
{
public OvergrownCliffsBiome()
public RainforestCliffsBiome()
{
this.addWeight(BOPClimates.TROPICAL, 3);
this.setBeachBiome(null);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.JUNGLE).depth(2.9F).scale(0.6F).temperature(0.95F).downfall(0.8F);
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.JUNGLE).depth(2.9F).scale(0.6F).temperature(1.0F).downfall(1.0F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(12638463).skyColor(calculateSkyColor(0.95F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x3FDF99).waterFogColor(0x042F26).fogColor(12638463).skyColor(calculateSkyColor(1.0F)).grassColorOverride(0xA7E140).foliageColorOverride(0x88E140).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
@ -52,27 +51,31 @@ public class OvergrownCliffsBiome extends BiomeTemplate
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
DefaultBiomeFeatures.addDefaultOres(builder);
DefaultBiomeFeatures.addDefaultSoftDisks(builder);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.ORANGE_SAND_DISK);
////////////////////////////////////////////////////////////
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.OVERGROWN_CLIFFS_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.JUNGLE_FLOWERS);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINFOREST_CLIFFS_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINFOREST_FLOWERS);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.OVERGROWN_CLIFFS_VINES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_7);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINFOREST_CLIFFS_VINES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_25);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_24);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_50);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_10);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL);
////////////////////////////////////////////////////////////
// Other Features
DefaultBiomeFeatures.addDefaultSprings(builder);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.OVERGROWN_CLIFFS_SPRING);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATER_SPRING_EXTRA);
DefaultBiomeFeatures.addExtraEmeralds(builder);
DefaultBiomeFeatures.addInfestedStone(builder);

View file

@ -1,95 +0,0 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.*;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.feature.Features;
import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
import sun.java2d.Surface;
public class ScrublandBiome extends BiomeTemplate
{
public ScrublandBiome()
{
this.addWeight(BOPClimates.SAVANNA, 5);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.SAVANNA).depth(0.1F).scale(0.2F).temperature(1.1F).downfall(0.1F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(1.1F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
{
builder.surfaceBuilder(new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_GRASS));
// Structures
builder.addStructureStart(StructureFeatures.VILLAGE_SAVANNA);
builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST);
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD);
// Underground
DefaultBiomeFeatures.addDefaultCarvers(builder);
DefaultBiomeFeatures.addDefaultLakes(builder);
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
DefaultBiomeFeatures.addDefaultOres(builder);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.ORANGE_SAND_DISK);
////////////////////////////////////////////////////////////
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SCRUBLAND_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SCRUB_EXTRA);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_6);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_DEAD_BUSH);
////////////////////////////////////////////////////////////
// Other Features
DefaultBiomeFeatures.addDefaultSprings(builder);
DefaultBiomeFeatures.addSurfaceFreezing(builder);
}
@Override
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
// Entity spawning
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1));
}
}

View file

@ -11,6 +11,7 @@ import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import biomesoplenty.init.ModEntities;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.*;
@ -24,7 +25,7 @@ public class SeasonalForestBiome extends BiomeTemplate
{
public SeasonalForestBiome()
{
this.addWeight(BOPClimates.DRY_BOREAL, 5);
this.addWeight(BOPClimates.DRY_BOREAL, 7);
this.setBeachBiome(BOPBiomes.gravel_beach);
}
@ -60,8 +61,10 @@ public class SeasonalForestBiome extends BiomeTemplate
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SEASONAL_FOREST_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.FLOWER_DEFAULT);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.HUGE_TOADSTOOL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_5);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SMALL_TOADSTOOL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_EXTRA);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN);
@ -78,10 +81,8 @@ public class SeasonalForestBiome extends BiomeTemplate
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
// Entities
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(ModEntities.turkey, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(ModEntities.deer, 8, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));

View file

@ -20,20 +20,19 @@ import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class MireBiome extends BiomeTemplate
public class ShroomyWetlandBiome extends BiomeTemplate
{
public MireBiome()
public ShroomyWetlandBiome()
{
this.addWeight(BOPClimates.WET_TEMPERATE, 3);
this.setBeachBiome(null);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.125F).scale(-0.05F).temperature(0.55F).downfall(0.9F);
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.125F).scale(-0.05F).temperature(0.6F).downfall(0.7F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x354762).waterFogColor(0x040511).fogColor(12638463).skyColor(calculateSkyColor(0.55F)).grassColorOverride(0x66704C).foliageColorOverride(0x878E61).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x272179).waterFogColor(0x0C031B).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).grassColorOverride(0x5A935F).foliageColorOverride(0x4F9657).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
@ -61,15 +60,21 @@ public class MireBiome extends BiomeTemplate
////////////////////////////////////////////////////////////
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MIRE_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SHROOMY_WETLAND_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CATTAIL_6);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_8);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.HUGE_BROWN_MUSHROOM_EXTRA);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_5);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PODZOL_SPLATTER);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_5);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SMALL_BROWN_MUSHROOM);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP);
////////////////////////////////////////////////////////////

View file

@ -23,7 +23,7 @@ public class ShrublandBiome extends BiomeTemplate
{
public ShrublandBiome()
{
this.addWeight(BOPClimates.DRY_TEMPERATE, 5);
this.addWeight(BOPClimates.DRY_TEMPERATE, 7);
this.setBeachBiome(BOPBiomes.gravel_beach);
}

View file

@ -7,6 +7,7 @@
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
@ -19,25 +20,25 @@ import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class ChaparralBiome extends BiomeTemplate
public class ShrublandHillsBiome extends BiomeTemplate
{
public ChaparralBiome()
public ShrublandHillsBiome()
{
this.addWeight(BOPClimates.WARM_TEMPERATE, 5);
this.setBeachBiome(BOPBiomes.gravel_beach);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(1.1F).scale(0.3F).temperature(0.8F).downfall(0.45F);
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(1.0F).scale(0.2F).temperature(0.6F).downfall(0.05F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
{
builder.surfaceBuilder(new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.CHAPARRAL, SurfaceBuilder.CONFIG_GRASS));
builder.surfaceBuilder(new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.EXPOSED_STONE, SurfaceBuilder.CONFIG_GRASS));
// Structures
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
@ -54,11 +55,11 @@ public class ChaparralBiome extends BiomeTemplate
////////////////////////////////////////////////////////////
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CHAPARRAL_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CHAPARRAL_FLOWERS);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SHRUBLAND_HILLS_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SHRUBLAND_FLOWERS);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_5);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_10);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6);
////////////////////////////////////////////////////////////

View file

@ -10,6 +10,7 @@ package biomesoplenty.common.biome.overworld;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import biomesoplenty.init.ModEntities;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.*;
@ -77,11 +78,8 @@ public class SnowyConiferousForestBiome extends BiomeTemplate
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
// Entities
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(ModEntities.deer, 8, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));

View file

@ -9,6 +9,7 @@ package biomesoplenty.common.biome.overworld;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import biomesoplenty.init.ModEntities;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.*;
@ -71,11 +72,8 @@ public class SnowyFirClearingBiome extends BiomeTemplate
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
// Entities
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(ModEntities.deer, 8, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));

View file

@ -1,94 +0,0 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.*;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.feature.*;
import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class SnowyForestBiome extends BiomeTemplate
{
public SnowyForestBiome()
{
this.addWeight(BOPClimates.TUNDRA, 3);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.SNOW).biomeCategory(Biome.Category.ICY).depth(0.2F).scale(0.2F).temperature(-0.25F).downfall(0.5F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(-0.25F)).grassColorOverride(0xAD9364).foliageColorOverride(0xB7B763).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
{
builder.surfaceBuilder(new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_GRASS));
// Structures
builder.addStructureStart(StructureFeatures.VILLAGE_SNOWY);
builder.addStructureStart(StructureFeatures.IGLOO);
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST);
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD);
// Underground
DefaultBiomeFeatures.addDefaultCarvers(builder);
DefaultBiomeFeatures.addDefaultLakes(builder);
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
DefaultBiomeFeatures.addDefaultOres(builder);
DefaultBiomeFeatures.addDefaultSoftDisks(builder);
////////////////////////////////////////////////////////////
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SNOWY_FOREST_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SNOWY_FLOWERS);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN);
////////////////////////////////////////////////////////////
// Other Features
DefaultBiomeFeatures.addDefaultSprings(builder);
DefaultBiomeFeatures.addSurfaceFreezing(builder);
}
@Override
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
// Entities
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1));
}
}

View file

@ -1,92 +0,0 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.*;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class SteppeBiome extends BiomeTemplate
{
public SteppeBiome()
{
this.addWeight(BOPClimates.DRY_TEMPERATE, 3);
this.setBeachBiome(null);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(1.6F).scale(0.3F).temperature(0.775F).downfall(0.05F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.775F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
{
builder.surfaceBuilder(new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_GRASS));
// Structures
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN);
// Underground
DefaultBiomeFeatures.addDefaultCarvers(builder);
DefaultBiomeFeatures.addDefaultLakes(builder);
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
DefaultBiomeFeatures.addDefaultOres(builder);
DefaultBiomeFeatures.addDefaultSoftDisks(builder);
////////////////////////////////////////////////////////////
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DESERT_GRASS_20);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_5);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_6);
////////////////////////////////////////////////////////////
// Other Features
DefaultBiomeFeatures.addDefaultSprings(builder);
DefaultBiomeFeatures.addExtraEmeralds(builder);
DefaultBiomeFeatures.addInfestedStone(builder);
DefaultBiomeFeatures.addSurfaceFreezing(builder);
}
@Override
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
// Entities
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.LLAMA, 5, 4, 6));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.HORSE, 5, 2, 6));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.DONKEY, 1, 1, 3));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1));
}
}

View file

@ -1,99 +0,0 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.*;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.feature.*;
import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class TemperateRainforestBiome extends BiomeTemplate
{
public TemperateRainforestBiome()
{
this.addWeight(BOPClimates.WET_TEMPERATE, 3);
this.setBeachBiome(BOPBiomes.gravel_beach);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(-0.25F).scale(0.1F).temperature(0.65F).downfall(1.2F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.65F)).grassColorOverride(0xB6D367).foliageColorOverride(0x95D660).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
{
builder.surfaceBuilder(new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_GRASS));
// Structures
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD);
// Underground
DefaultBiomeFeatures.addDefaultCarvers(builder);
builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER);
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
DefaultBiomeFeatures.addDefaultOres(builder);
DefaultBiomeFeatures.addDefaultSoftDisks(builder);
////////////////////////////////////////////////////////////
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TEMPERATE_RAINFOREST_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.FLOWER_DEFAULT);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CATTAIL_12);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_4);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_14);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_5);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_5);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_5);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP);
////////////////////////////////////////////////////////////
// Other Features
DefaultBiomeFeatures.addDefaultSprings(builder);
DefaultBiomeFeatures.addSurfaceFreezing(builder);
}
@Override
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
// Entities
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1));
}
}

View file

@ -1,101 +0,0 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.*;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.feature.*;
import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class TropicalRainforestBiome extends BiomeTemplate
{
public TropicalRainforestBiome()
{
this.setBeachBiome(BOPBiomes.mangrove);
this.addWeight(BOPClimates.TROPICAL, 10);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.JUNGLE).depth(0.1F).scale(0.3F).temperature(1.0F).downfall(1.0F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x1FA14A).waterFogColor(0x02271A).fogColor(12638463).skyColor(calculateSkyColor(1.0F)).grassColorOverride(0xA7E140).foliageColorOverride(0x88E140).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
{
builder.surfaceBuilder(new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_GRASS));
// Structures
builder.addStructureStart(StructureFeatures.JUNGLE_TEMPLE);
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_JUNGLE);
// Underground
DefaultBiomeFeatures.addDefaultCarvers(builder);
DefaultBiomeFeatures.addDefaultLakes(builder);
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
DefaultBiomeFeatures.addDefaultOres(builder);
DefaultBiomeFeatures.addDefaultSoftDisks(builder);
////////////////////////////////////////////////////////////
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TROPICAL_RAINFOREST_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.JUNGLE_FLOWERS);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_7);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_10);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_12);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_10);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_MELON);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP);
////////////////////////////////////////////////////////////
// Other Features
DefaultBiomeFeatures.addDefaultSprings(builder);
DefaultBiomeFeatures.addSurfaceFreezing(builder);
}
@Override
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
// Entities
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PARROT, 40, 1, 2));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.OCELOT, 2, 1, 1));
}
}

View file

@ -52,7 +52,7 @@ public class TropicsBiome extends BiomeTemplate
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
DefaultBiomeFeatures.addDefaultOres(builder);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.WHITE_SAND_DISK);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.WHITE_SAND_DISK_EXTRA);
////////////////////////////////////////////////////////////

View file

@ -7,6 +7,7 @@
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
@ -20,40 +21,32 @@ import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class ColdDesertBiome extends BiomeTemplate
public class TundraBasinBiome extends BiomeTemplate
{
public ColdDesertBiome()
public TundraBasinBiome()
{
this.addWeight(BOPClimates.ICE_CAP, 7);
this.setBeachBiome(null);
this.setRiverBiome(null);
this.setBeachBiome(BOPBiomes.gravel_beach);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.ICY).depth(0.0F).scale(0.0F).temperature(0.25F).downfall(0.0F);
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.0F).scale(-0.1F).temperature(0.2F).downfall(0.5F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.25F)).grassColorOverride(0xAD9364).foliageColorOverride(0xB5A76C).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.2F)).grassColorOverride(0xAD9364).foliageColorOverride(0xB5A76C).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
{
builder.surfaceBuilder(new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.COLD_DESERT, SurfaceBuilder.CONFIG_GRAVEL));
builder.surfaceBuilder(new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_GRAVEL));
// Structures
builder.addStructureStart(StructureFeatures.VILLAGE_SNOWY);
builder.addStructureStart(StructureFeatures.IGLOO);
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST);
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD);
// Underground
DefaultBiomeFeatures.addDefaultCarvers(builder);
builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_LAVA);
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
DefaultBiomeFeatures.addDefaultOres(builder);
@ -75,7 +68,6 @@ public class ColdDesertBiome extends BiomeTemplate
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
// Entities
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.POLAR_BEAR, 1, 1, 2));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4));

View file

@ -19,20 +19,19 @@ import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class BogBiome extends BiomeTemplate
public class TundraBogBiome extends BiomeTemplate
{
public BogBiome()
public TundraBogBiome()
{
this.addWeight(BOPClimates.WET_BOREAL, 3);
this.setBeachBiome(null);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.15F).scale(-0.025F).temperature(0.45F).downfall(0.9F);
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(-0.15F).scale(-0.025F).temperature(0.2F).downfall(0.5F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.45F)).grassColorOverride(0xA89557).foliageColorOverride(0xC67F5B).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.2F)).grassColorOverride(0xAD9364).foliageColorOverride(0xB5A76C).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
@ -57,13 +56,11 @@ public class BogBiome extends BiomeTemplate
////////////////////////////////////////////////////////////
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BOG_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TUNDRA_BOG_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_50);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_8);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_10);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_5);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_BERRY_DECORATED);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL);

View file

@ -23,7 +23,7 @@ public class WastelandBiome extends BiomeTemplate
{
public WastelandBiome()
{
this.addWeight(BOPClimates.WASTELAND, 10);
this.addWeight(BOPClimates.HOT_DESERT, 1);
this.setBeachBiome(null);
this.setRiverBiome(null);
}

View file

@ -23,7 +23,7 @@ public class WetlandBiome extends BiomeTemplate
{
public WetlandBiome()
{
this.addWeight(BOPClimates.WET_TEMPERATE, 7);
this.addWeight(BOPClimates.WET_TEMPERATE, 10);
this.setBeachBiome(null);
}

View file

@ -20,20 +20,19 @@ import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class MarshBiome extends BiomeTemplate
public class WetlandMarshBiome extends BiomeTemplate
{
public MarshBiome()
public WetlandMarshBiome()
{
this.addWeight(BOPClimates.WET_TEMPERATE, 5);
this.setBeachBiome(null);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.15F).scale(-0.05F).temperature(0.65F).downfall(0.7F);
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.15F).scale(-0.05F).temperature(0.6F).downfall(0.7F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.65F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x272179).waterFogColor(0x0C031B).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).grassColorOverride(0x5A935F).foliageColorOverride(0x4F9657).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
@ -42,6 +41,7 @@ public class MarshBiome extends BiomeTemplate
builder.surfaceBuilder(new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.MARSH, SurfaceBuilder.CONFIG_GRASS));
// Structures
builder.addStructureStart(StructureFeatures.SWAMP_HUT);
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP);

View file

@ -1,99 +0,0 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.*;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.feature.Features;
import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class WoodlandBiome extends BiomeTemplate
{
public WoodlandBiome()
{
this.addWeight(BOPClimates.WARM_TEMPERATE, 3);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.1F).scale(0.1F).temperature(0.8F).downfall(0.5F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0x85C047).foliageColorOverride(0x68AF1A).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
{
builder.surfaceBuilder(new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_GRASS));
// Structures
builder.addStructureStart(StructureFeatures.VILLAGE_PLAINS);
builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST);
builder.addStructureStart(StructureFeatures.WOODLAND_MANSION);
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD);
// Underground
DefaultBiomeFeatures.addDefaultCarvers(builder);
DefaultBiomeFeatures.addDefaultLakes(builder);
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
DefaultBiomeFeatures.addDefaultOres(builder);
DefaultBiomeFeatures.addDefaultSoftDisks(builder);
////////////////////////////////////////////////////////////
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WOODLAND_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GROVE_FLOWERS);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GOLDENROD_1);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.HUGE_TOADSTOOL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ROSE_BUSH_4);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SMALL_TOADSTOOL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_EXTRA);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL);
////////////////////////////////////////////////////////////
// Other Features
DefaultBiomeFeatures.addDefaultSprings(builder);
DefaultBiomeFeatures.addSurfaceFreezing(builder);
}
@Override
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
// Entities
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1));
}
}

View file

@ -0,0 +1,91 @@
package biomesoplenty.common.entity;
import biomesoplenty.api.sound.BOPSounds;
import biomesoplenty.init.ModEntities;
import net.minecraft.block.BlockState;
import net.minecraft.entity.*;
import net.minecraft.entity.ai.attributes.AttributeModifierMap;
import net.minecraft.entity.ai.attributes.Attributes;
import net.minecraft.entity.ai.goal.*;
import net.minecraft.entity.passive.AnimalEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.util.DamageSource;
import net.minecraft.util.SoundEvent;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.server.ServerWorld;
public class DeerEntity extends AnimalEntity {
public DeerEntity(EntityType<? extends DeerEntity> type, World worldIn)
{
super(type, worldIn);
}
private static final Ingredient FOOD_ITEMS = Ingredient.of(Items.WHEAT_SEEDS, Items.MELON_SEEDS, Items.PUMPKIN_SEEDS, Items.BEETROOT_SEEDS);
@Override
protected void registerGoals() {
this.goalSelector.addGoal(0, new SwimGoal(this));
this.goalSelector.addGoal(1, new PanicGoal(this, 2.0D));
this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D));
this.goalSelector.addGoal(3, new TemptGoal(this, 0.8D, false, FOOD_ITEMS));
this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25D));
this.goalSelector.addGoal(5, new WaterAvoidingRandomWalkingGoal(this, 1.0D));
this.goalSelector.addGoal(6, new LookAtGoal(this, PlayerEntity.class, 6.0F));
this.goalSelector.addGoal(7, new LookRandomlyGoal(this));
}
public static AttributeModifierMap.MutableAttribute createAttributes() {
return MobEntity.createMobAttributes().add(Attributes.MAX_HEALTH, 9.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F);
}
@Override
protected SoundEvent getAmbientSound() {
return null;
}
@Override
protected SoundEvent getHurtSound(DamageSource damageSourceIn) {
return BOPSounds.deer_hurt;
}
@Override
protected SoundEvent getDeathSound() {
return BOPSounds.deer_dead;
}
@Override
protected void playStepSound(BlockPos pos, BlockState blockIn) {
this.playSound(BOPSounds.deer_step, 0.15F, 1.0F);
}
/**
* Returns the volume for the sounds this mob makes.
*/
@Override
protected float getSoundVolume() {
return 0.4F;
}
@Override
public DeerEntity getBreedOffspring(ServerWorld p_241840_1_, AgeableEntity p_241840_2_) {
return ModEntities.deer.create(p_241840_1_);
}
@Override
protected float getStandingEyeHeight(Pose poseIn, EntitySize sizeIn) {
return this.isBaby() ? sizeIn.height * 0.95F : 1.3F;
}
/**
* Checks if the parameter is an item which this animal can be fed to breed it (wheat, carrots or seeds depending on
* the animal type)
*/
@Override
public boolean isFood(ItemStack stack) {
return FOOD_ITEMS.test(stack);
}
}

View file

@ -0,0 +1,159 @@
package biomesoplenty.common.entity;
import com.google.common.collect.ImmutableList;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.vertex.IVertexBuilder;
import net.minecraft.client.renderer.entity.model.AgeableModel;
import net.minecraft.client.renderer.model.ModelRenderer;
import net.minecraft.entity.Entity;
import net.minecraft.util.math.MathHelper;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT)
public class DeerModel<T extends Entity> extends AgeableModel<T>
{
private final ModelRenderer head;
private final ModelRenderer snout;
private final ModelRenderer neck;
private final ModelRenderer body;
private final ModelRenderer tail;
private final ModelRenderer ear0;
private final ModelRenderer ear1;
private final ModelRenderer leg0;
private final ModelRenderer leg1;
private final ModelRenderer leg2;
private final ModelRenderer leg3;
private final ModelRenderer antler0;
private final ModelRenderer antler1;
private boolean scaleHead = true;
private float yHeadOffset = 14.0F;
private float zHeadOffset = 3.0F;
private float babyHeadScale = 2.0F;
private float babyBodyScale = 2.0F;
private float bodyYOffset = 24.0F;
public DeerModel()
{
this.texWidth = 128;
this.texHeight = 32;
this.head = new ModelRenderer(this, 0, 0);
this.head.addBox(-3F, -3F, -6F, 6, 6, 6);
this.head.setPos(0F, 3F, -9F);
this.snout = new ModelRenderer(this, 24, 0);
this.snout.addBox(-2F, -1F, -10F, 4, 4, 4);
this.ear0 = new ModelRenderer(this, 32, 16);
this.ear0.addBox(-1F, -8F, -2F, 3, 6, 1);
this.ear0.zRot = -1.047198F;
this.ear1 = new ModelRenderer(this, 32, 23);
this.ear1.addBox(-2F, -8F, -2F, 3, 6, 1);
this.ear1.zRot = 1.047198F;
this.antler0 = new ModelRenderer(this, 70, 18);
this.antler0.addBox(-7F, -14F, -2F, 8, 12, 1);
this.antler0.xRot = -0.5235988F;
this.antler0.yRot = -1.047198F;
this.antler1 = new ModelRenderer(this, 88, 18);
this.antler1.addBox(-1F, -14F, -2F, 8, 12, 1);
this.antler1.xRot = -0.5235988F;
this.antler1.yRot = 1.047198F;
this.head.addChild(snout);
this.head.addChild(ear0);
this.head.addChild(ear1);
this.head.addChild(antler0);
this.head.addChild(antler1);
this.neck = new ModelRenderer(this, 0, 12);
this.neck.addBox(-2F, 0F, -9F, 4, 6, 9);
this.neck.setPos(0F, 6F, -2F);
this.neck.xRot = -0.6283185F;
this.body = new ModelRenderer(this, 40, 0);
this.body.addBox(-4F, -9F, -7F, 8, 18, 7);
this.body.setPos(0F, 5F, 1F);
this.body.xRot = 1.570796F;
this.leg0 = new ModelRenderer(this, 70, 0);
this.leg0.addBox(0F, 0F, 0F, 3, 12, 3);
this.leg0.setPos(-4F, 12F, 6F);
this.leg1 = new ModelRenderer(this, 82, 0);
this.leg1.addBox(-3F, 0F, 0F, 3, 12, 3);
this.leg1.setPos(4F, 12F, 6F);
this.leg2 = new ModelRenderer(this, 94, 0);
this.leg2.addBox(0F, 0F, 0F, 3, 12, 3);
this.leg2.setPos(-4F, 12F, -7F);
this.leg3 = new ModelRenderer(this, 106, 0);
this.leg3.addBox(-3F, 0F, 0F, 3, 12, 3);
this.leg3.setPos(4F, 12F, -7F);
this.tail = new ModelRenderer(this, 32, 8);
this.tail.addBox(0F, 0F, 0F, 2, 6, 2);
this.tail.setPos(-1F, 7F, 8F);
this.tail.xRot = 0.4363323F;
}
@Override
protected Iterable<ModelRenderer> headParts() {
return ImmutableList.of(this.head);
}
@Override
protected Iterable<ModelRenderer> bodyParts() {
return ImmutableList.of(this.body, this.neck, this.leg0, this.leg1, this.leg2, this.leg3, this.tail);
}
@Override
public void setupAnim(T entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {
this.head.xRot = headPitch * ((float)Math.PI / 180F);
this.head.yRot = netHeadYaw * ((float)Math.PI / 180F);
this.leg0.xRot = MathHelper.cos(limbSwing * 0.6662F) * 1.4F * limbSwingAmount;
this.leg1.xRot = MathHelper.cos(limbSwing * 0.6662F + (float)Math.PI) * 1.4F * limbSwingAmount;
this.leg2.xRot = MathHelper.cos(limbSwing * 0.6662F + (float)Math.PI) * 1.4F * limbSwingAmount;
this.leg3.xRot = MathHelper.cos(limbSwing * 0.6662F) * 1.4F * limbSwingAmount;
}
@Override
public void renderToBuffer(MatrixStack matrixStackIn, IVertexBuilder bufferIn, int packedLightIn, int packedOverlayIn, float red, float green, float blue, float alpha) {
if (this.young)
{
matrixStackIn.pushPose();
if (this.scaleHead)
{
float f = 1.5F / this.babyHeadScale;
matrixStackIn.scale(f, f, f);
}
matrixStackIn.translate(0.0D, (double)(this.yHeadOffset / 16.0F), (double)(this.zHeadOffset / 16.0F));
this.headParts().forEach((p_228230_8_) -> {
p_228230_8_.render(matrixStackIn, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha);
});
matrixStackIn.popPose();
matrixStackIn.pushPose();
float f1 = 1.0F / this.babyBodyScale;
matrixStackIn.scale(f1, f1, f1);
matrixStackIn.translate(0.0D, (double)(this.bodyYOffset / 16.0F), 0.0D);
this.bodyParts().forEach((p_228229_8_) -> {
p_228229_8_.render(matrixStackIn, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha);
});
matrixStackIn.popPose();
}
else
{
this.headParts().forEach((p_228228_8_) -> {
p_228228_8_.render(matrixStackIn, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha);
});
this.bodyParts().forEach((p_228227_8_) -> {
p_228227_8_.render(matrixStackIn, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha);
});
}
}
}

View file

@ -0,0 +1,28 @@
package biomesoplenty.common.entity;
import net.minecraft.client.renderer.entity.EntityRendererManager;
import net.minecraft.client.renderer.entity.MobRenderer;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT)
public class DeerRenderer extends MobRenderer<DeerEntity, DeerModel<DeerEntity>> {
private static final ResourceLocation DEER_LOCATION = new ResourceLocation("biomesoplenty:textures/entity/deer.png");
private static final ResourceLocation FAWN_LOCATION = new ResourceLocation("biomesoplenty:textures/entity/fawn.png");
public DeerRenderer(EntityRendererManager renderManagerIn) {
super(renderManagerIn, new DeerModel<>(), 0.7F);
}
public ResourceLocation getTextureLocation(DeerEntity entity) {
if (entity.getAge() < 0)
{
return FAWN_LOCATION;
}
else
{
return DEER_LOCATION;
}
}
}

View file

@ -0,0 +1,120 @@
package biomesoplenty.common.entity;
import biomesoplenty.api.sound.BOPSounds;
import biomesoplenty.init.ModEntities;
import net.minecraft.block.BlockState;
import net.minecraft.entity.*;
import net.minecraft.entity.ai.attributes.AttributeModifierMap;
import net.minecraft.entity.ai.attributes.Attributes;
import net.minecraft.entity.ai.goal.*;
import net.minecraft.entity.passive.AnimalEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.pathfinding.PathNodeType;
import net.minecraft.util.DamageSource;
import net.minecraft.util.SoundEvent;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.world.World;
import net.minecraft.world.server.ServerWorld;
public class TurkeyEntity extends AnimalEntity {
private static final Ingredient FOOD_ITEMS = Ingredient.of(Items.WHEAT_SEEDS, Items.MELON_SEEDS, Items.PUMPKIN_SEEDS, Items.BEETROOT_SEEDS);
public float flap;
public float flapSpeed;
public float oFlapSpeed;
public float oFlap;
public float flapping = 1.0F;
public TurkeyEntity(EntityType<? extends TurkeyEntity> type, World worldIn) {
super(type, worldIn);
this.setPathfindingMalus(PathNodeType.WATER, 0.0F);
}
@Override
protected void registerGoals() {
this.goalSelector.addGoal(0, new SwimGoal(this));
this.goalSelector.addGoal(1, new PanicGoal(this, 1.4D));
this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D));
this.goalSelector.addGoal(3, new TemptGoal(this, 1.0D, false, FOOD_ITEMS));
this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.1D));
this.goalSelector.addGoal(5, new WaterAvoidingRandomWalkingGoal(this, 1.0D));
this.goalSelector.addGoal(6, new LookAtGoal(this, PlayerEntity.class, 6.0F));
this.goalSelector.addGoal(7, new LookRandomlyGoal(this));
}
@Override
protected float getStandingEyeHeight(Pose poseIn, EntitySize sizeIn) {
return this.isBaby() ? sizeIn.height * 0.85F : sizeIn.height * 0.92F;
}
public static AttributeModifierMap.MutableAttribute createAttributes() {
return MobEntity.createMobAttributes().add(Attributes.MAX_HEALTH, 7.0D).add(Attributes.MOVEMENT_SPEED, (double)0.25F);
}
/**
* Called frequently so the entity can update its state every tick as required. For example, zombies and skeletons
* use this to react to sunlight and start to burn.
*/
@Override
public void aiStep() {
super.aiStep();
this.oFlap = this.flap;
this.oFlapSpeed = this.flapSpeed;
this.flapSpeed = (float)((double)this.flapSpeed + (double)(this.onGround ? -1 : 4) * 0.3D);
this.flapSpeed = MathHelper.clamp(this.flapSpeed, 0.0F, 1.0F);
if (!this.onGround && this.flapping < 1.0F) {
this.flapping = 1.0F;
}
this.flapping = (float)((double)this.flapping * 0.9D);
Vector3d vec3d = this.getDeltaMovement();
if (!this.onGround && vec3d.y < 0.0D) {
this.setDeltaMovement(vec3d.multiply(1.0D, 0.6D, 1.0D));
}
this.flap += this.flapping * 2.0F;
}
@Override
public boolean causeFallDamage(float distance, float damageMultiplier) {
return false;
}
@Override
protected SoundEvent getAmbientSound() {
return BOPSounds.turkey_ambient;
}
@Override
protected SoundEvent getHurtSound(DamageSource damageSourceIn) {
return BOPSounds.turkey_hurt;
}
@Override
protected SoundEvent getDeathSound() {
return BOPSounds.turkey_dead;
}
@Override
protected void playStepSound(BlockPos pos, BlockState blockIn) {
this.playSound(BOPSounds.turkey_step, 0.15F, 1.0F);
}
@Override
public TurkeyEntity getBreedOffspring(ServerWorld p_241840_1_, AgeableEntity p_241840_2_) {
return ModEntities.turkey.create(p_241840_1_);
}
/**
* Checks if the parameter is an item which this animal can be fed to breed it (wheat, carrots or seeds depending on
* the animal type)
*/
@Override
public boolean isFood(ItemStack stack) {
return FOOD_ITEMS.test(stack);
}
}

View file

@ -0,0 +1,137 @@
package biomesoplenty.common.entity;
import com.google.common.collect.ImmutableList;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.vertex.IVertexBuilder;
import net.minecraft.client.renderer.entity.model.AgeableModel;
import net.minecraft.client.renderer.model.ModelRenderer;
import net.minecraft.entity.Entity;
import net.minecraft.util.math.MathHelper;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT)
public class TurkeyModel<T extends Entity> extends AgeableModel<T>
{
private final ModelRenderer head;
private final ModelRenderer chest;
private final ModelRenderer body;
private final ModelRenderer leg0;
private final ModelRenderer leg1;
private final ModelRenderer wing0;
private final ModelRenderer wing1;
private final ModelRenderer beak;
private final ModelRenderer wattle;
private final ModelRenderer plume;
private boolean scaleHead = true;
private float yHeadOffset = 12.0F;
private float zHeadOffset = 3.0F;
private float babyHeadScale = 2.0F;
private float babyBodyScale = 2.0F;
private float bodyYOffset = 24.0F;
public TurkeyModel()
{
this.texWidth = 128;
this.texHeight = 64;
this.chest = new ModelRenderer(this, 0, 22);
this.chest.addBox(-4F, -4F, -4F, 8, 5, 5);
this.chest.setPos(0F, 14F, -3F);
this.head = new ModelRenderer(this, 0, 32);
this.head.addBox(-2F, -10F, -5F, 4, 10, 3);
this.head.setPos(0F, 14F, -3F);
this.beak = new ModelRenderer(this, 0, 45);
this.beak.addBox(-1F, -8F, -7F, 2, 1, 2);
this.beak.setPos(0F, 14F, -3F);
this.wattle = new ModelRenderer(this, 14, 32);
this.wattle.addBox(-1F, -7F, -6F, 2, 7, 1);
this.wattle.setPos(0F, 14F, -3F);
this.body = new ModelRenderer(this, 0, 0);
this.body.addBox(-6F, 0F, -6F, 12, 8, 14);
this.body.setPos(0F, 10F, 0F);
this.wing0 = new ModelRenderer(this, 26, 22);
this.wing0.addBox(-1F, 0F, 0F, 1, 6, 8);
this.wing0.setPos(-6F, 11F, -4F);
this.wing1 = new ModelRenderer(this, 26, 22);
this.wing1.addBox(0F, 0F, 0F, 1, 6, 8);
this.wing1.setPos(6F, 11F, -4F);
this.plume = new ModelRenderer(this, 52, 0);
this.plume.addBox(-11F, -13F, 6F, 22, 14, 0);
this.plume.setPos(0F, 12F, 0F);
this.plume.xRot = -0.2617994F;
this.leg0 = new ModelRenderer(this, 44, 22);
this.leg0.addBox(-5F, 0F, -5F, 5, 6, 4);
this.leg0.setPos(0F, 18F, 4F);
this.leg1 = new ModelRenderer(this, 44, 22);
this.leg1.addBox(0F, 0F, -5F, 5, 6, 4);
this.leg1.setPos(0F, 18F, 4F);
}
@Override
protected Iterable<ModelRenderer> headParts() {
return ImmutableList.of(this.head, this.beak, this.wattle);
}
@Override
protected Iterable<ModelRenderer> bodyParts() {
return ImmutableList.of(this.body, this.chest, this.leg0, this.leg1, this.wing0, this.wing1, this.plume);
}
@Override
public void setupAnim(T entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {
this.chest.xRot = (headPitch * ((float)Math.PI / 180F)) + 0.7853982F;
this.chest.yRot = netHeadYaw * ((float)Math.PI / 180F);
this.head.xRot = this.chest.xRot - 0.7853982F;
this.head.yRot = this.chest.yRot;
this.beak.xRot = this.chest.xRot - 0.7853982F;
this.beak.yRot = this.chest.yRot;
this.wattle.xRot = this.chest.xRot - 0.7853982F;
this.wattle.yRot = this.chest.yRot;
this.leg0.xRot = MathHelper.cos(limbSwing * 0.6662F) * 1.4F * limbSwingAmount;
this.leg1.xRot = MathHelper.cos(limbSwing * 0.6662F + (float)Math.PI) * 1.4F * limbSwingAmount;
this.wing0.zRot = ageInTicks;
this.wing1.zRot = -ageInTicks;
}
@Override
public void renderToBuffer(MatrixStack matrixStackIn, IVertexBuilder bufferIn, int packedLightIn, int packedOverlayIn, float red, float green, float blue, float alpha) {
if (this.young) {
matrixStackIn.pushPose();
if (this.scaleHead) {
float f = 1.5F / this.babyHeadScale;
matrixStackIn.scale(f, f, f);
}
matrixStackIn.translate(0.0D, (double)(this.yHeadOffset / 16.0F), (double)(this.zHeadOffset / 16.0F));
this.headParts().forEach((p_228230_8_) -> {
p_228230_8_.render(matrixStackIn, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha);
});
matrixStackIn.popPose();
matrixStackIn.pushPose();
float f1 = 1.0F / this.babyBodyScale;
matrixStackIn.scale(f1, f1, f1);
matrixStackIn.translate(0.0D, (double)(this.bodyYOffset / 16.0F), 0.0D);
this.bodyParts().forEach((p_228229_8_) -> {
if (p_228229_8_ != this.plume) { p_228229_8_.render(matrixStackIn, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha); }
});
matrixStackIn.popPose();
} else {
this.headParts().forEach((p_228228_8_) -> {
p_228228_8_.render(matrixStackIn, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha);
});
this.bodyParts().forEach((p_228227_8_) -> {
p_228227_8_.render(matrixStackIn, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha);
});
}
}
}

View file

@ -0,0 +1,27 @@
package biomesoplenty.common.entity;
import net.minecraft.client.renderer.entity.EntityRendererManager;
import net.minecraft.client.renderer.entity.MobRenderer;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT)
public class TurkeyRenderer extends MobRenderer<TurkeyEntity, TurkeyModel<TurkeyEntity>> {
private static final ResourceLocation TURKEY_LOCATION = new ResourceLocation("biomesoplenty:textures/entity/turkey.png");
public TurkeyRenderer(EntityRendererManager renderManagerIn) {
super(renderManagerIn, new TurkeyModel<>(), 0.6F);
}
public ResourceLocation getTextureLocation(TurkeyEntity entity) {
return TURKEY_LOCATION;
}
protected float getBob(TurkeyEntity livingBase, float partialTicks) {
float f = MathHelper.lerp(partialTicks, livingBase.oFlap, livingBase.flap);
float f1 = MathHelper.lerp(partialTicks, livingBase.oFlapSpeed, livingBase.flapSpeed);
return (MathHelper.sin(f) + 1.0F) * f1;
}
}

View file

@ -31,7 +31,6 @@ public class BOPConfiguredFeatures
{
// Trees
public static final ConfiguredFeature<?, ?> ACACIA_BUSH = register("acacia_bush", BOPFeatures.ACACIA_BUSH.configured(Features.OAK.config()));
public static final ConfiguredFeature<?, ?> ACACIA_TWIGLET = register("acacia_twiglet", BOPFeatures.ACACIA_TWIGLET.configured(Features.OAK.config()));
public static final ConfiguredFeature<?, ?> ACACIA_TWIGLET_SMALL = register("acacia_twiglet_small", BOPFeatures.ACACIA_TWIGLET_SMALL.configured(Features.OAK.config()));
public static final ConfiguredFeature<?, ?> ACACIA_TWIGLET_TREE = register("acacia_twiglet_tree", BOPFeatures.ACACIA_TWIGLET_TREE.configured(Features.OAK.config()));
public static final ConfiguredFeature<?, ?> ALPS_SPRUCE_TREE = register("alps_spruce_tree", BOPFeatures.ALPS_SPRUCE_TREE.configured(Features.OAK.config()));
@ -85,11 +84,8 @@ public class BOPConfiguredFeatures
public static final ConfiguredFeature<?, ?> REDWOOD_TREE = register("redwood_tree", BOPFeatures.REDWOOD_TREE.configured(Features.OAK.config()));
public static final ConfiguredFeature<?, ?> REDWOOD_TREE_LARGE = register("redwood_tree_large", BOPFeatures.REDWOOD_TREE_LARGE.configured(Features.OAK.config()));
public static final ConfiguredFeature<?, ?> REDWOOD_TREE_MEDIUM = register("redwood_tree_medium", BOPFeatures.REDWOOD_TREE_MEDIUM.configured(Features.OAK.config()));
public static final ConfiguredFeature<?, ?> SEQUOIA_TREE = register("sequoia_tree", BOPFeatures.SEQUOIA_TREE.configured(Features.OAK.config()));
public static final ConfiguredFeature<?, ?> SEQUOIA_TREE_LARGE = register("sequoia_tree_large", BOPFeatures.SEQUOIA_TREE_LARGE.configured(Features.OAK.config()));
public static final ConfiguredFeature<?, ?> SILK_TREE = register("silk_tree", BOPFeatures.SILK_TREE.configured(Features.OAK.config()));
public static final ConfiguredFeature<?, ?> SMALL_DEAD_TREE = register("small_dead_tree", BOPFeatures.SMALL_DEAD_TREE.configured(Features.OAK.config()));
public static final ConfiguredFeature<?, ?> SMALL_JUNGLE_TREE = register("small_jungle_tree", BOPFeatures.SMALL_JUNGLE_TREE.configured(Features.OAK.config()));
public static final ConfiguredFeature<?, ?> SPARSE_ACACIA_TREE = register("sparse_acacia_tree", BOPFeatures.SPARSE_ACACIA_TREE.configured(Features.OAK.config()));
public static final ConfiguredFeature<?, ?> SPARSE_OAK_TREE = register("sparse_oak_tree", BOPFeatures.SPARSE_OAK_TREE.configured(Features.OAK.config()));
public static final ConfiguredFeature<?, ?> SPRUCE_BUSH = register("spruce_bush", BOPFeatures.SPRUCE_BUSH.configured(Features.OAK.config()));
@ -98,7 +94,6 @@ public class BOPConfiguredFeatures
public static final ConfiguredFeature<?, ?> TALL_SPRUCE_TREE = register("tall_spruce_tree", BOPFeatures.TALL_SPRUCE_TREE.configured(Features.OAK.config()));
public static final ConfiguredFeature<?, ?> TALL_SPRUCE_TREE_BEES = register("tall_spruce_tree_bees", BOPFeatures.TALL_SPRUCE_TREE.configured(Features.OAK.config().withDecorators(ImmutableList.of(Features.Placements.BEEHIVE_005))));
public static final ConfiguredFeature<?, ?> TALL_SWAMP_TREE = register("tall_swamp_tree", BOPFeatures.TALL_SWAMP_TREE.configured(Features.OAK.config()));
public static final ConfiguredFeature<?, ?> TALL_TWIGLET_TREE = register("tall_twiglet_tree", BOPFeatures.TALL_TWIGLET_TREE.configured(Features.OAK.config()));
public static final ConfiguredFeature<?, ?> TALL_UMBRAN_TREE = register("tall_umbran_tree", BOPFeatures.TALL_UMBRAN_TREE.configured(Features.OAK.config()));
public static final ConfiguredFeature<?, ?> TWIGLET_TREE = register("twiglet_tree", BOPFeatures.TWIGLET_TREE.configured(Features.OAK.config()));
public static final ConfiguredFeature<?, ?> TWIGLET_TREE_VOLCANO = register("twiglet_tree_volcano", BOPFeatures.TWIGLET_TREE_VOLCANO.configured(Features.OAK.config()));
@ -106,87 +101,74 @@ public class BOPConfiguredFeatures
public static final ConfiguredFeature<?, ?> WHITE_CHERRY_TREE_BEES = register("white_cherry_tree_bees", BOPFeatures.WHITE_CHERRY_TREE.configured(Features.OAK.config().withDecorators(ImmutableList.of(Features.Placements.BEEHIVE_002))));
public static final ConfiguredFeature<?, ?> WILLOW_TREE = register("willow_tree", BOPFeatures.WILLOW_TREE.configured(Features.OAK.config()));
public static final ConfiguredFeature<?, ?> YELLOW_AUTUMN_TREE = register("yellow_autumn_tree", BOPFeatures.YELLOW_AUTUMN_TREE.configured(Features.OAK.config()));
public static final ConfiguredFeature<?, ?> YELLOW_POPLAR_TREE = register("yellow_poplar_tree", BOPFeatures.YELLOW_POPLAR_TREE.configured(Features.OAK.config()));
/////////////////////////////////////////////////////////////////////
// Biome Tree Listings
public static final ConfiguredFeature<?, ?> ALPS_FOOTHILLS_TREES = register("alps_foothills_trees", ALPS_SPRUCE_TREE.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.1F, 1))));
public static final ConfiguredFeature<?, ?> BAYOU_TREES = register("bayou_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(CYPRESS_TREE_MEDIUM.weighted(0.3F)), CYPRESS_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(3, 0.6F, 1))));
public static final ConfiguredFeature<?, ?> BOG_TREES = register("bog_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(SPRUCE_TWIGLET_TREE.weighted(0.4F), MAPLE_TWIGLET_TREE.weighted(0.6F)), TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.4F, 1))));
public static final ConfiguredFeature<?, ?> BOREAL_FOREST_TREES = register("boreal_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_OAK_TREE.weighted(0.075F), Features.OAK.weighted(0.15F), YELLOW_POPLAR_TREE.weighted(0.3F), YELLOW_AUTUMN_TREE.weighted(0.15F)), TALL_SPRUCE_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.4F, 1))));
public static final ConfiguredFeature<?, ?> CHAPARRAL_TREES = register("chaparral_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TWIGLET_TREE.weighted(0.1F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(12, 0.3F, 1))));
public static final ConfiguredFeature<?, ?> BAYOU_TREES = register("bayou_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(CYPRESS_TREE_MEDIUM.weighted(0.3F)), CYPRESS_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.6F, 1))));
public static final ConfiguredFeature<?, ?> BAYOU_MANGROVE_TREES = register("bayou_mangrove_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(CYPRESS_TREE_MEDIUM.weighted(0.05F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(15, 0.6F, 1))));
public static final ConfiguredFeature<?, ?> CHERRY_BLOSSOM_GROVE_TREES = register("cherry_blossom_grove_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(WHITE_CHERRY_TREE_BEES.weighted(0.1F), PINK_CHERRY_TREE_BEES.weighted(0.2F), BIG_WHITE_CHERRY_TREE.weighted(0.3F), FLOWERING_OAK_TREE_BEES.weighted(0.15F), FLOWERING_BUSH.weighted(0.3F)), BIG_PINK_CHERRY_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.3F, 1))));
public static final ConfiguredFeature<?, ?> CONIFEROUS_FOREST_TREES = register("coniferous_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FIR_TREE.weighted(0.33333334F)), FIR_TREE_LARGE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.1F, 1))));
public static final ConfiguredFeature<?, ?> CONIFEROUS_LAKES_TREES = register("coniferous_lakes_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FIR_TREE.weighted(0.1F)), FIR_TREE_SMALL)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.1F, 1))));
public static final ConfiguredFeature<?, ?> DEAD_FOREST_TREES = register("dead_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DYING_TREE.weighted(0.2F), DEAD_TREE.weighted(0.1F), TALL_SPRUCE_TREE.weighted(0.3F), SMALL_DEAD_TREE.weighted(0.3F)), Features.OAK)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.5F, 1))));
public static final ConfiguredFeature<?, ?> DRYLAND_TREES = register("dry_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TWIGLET_TREE.weighted(0.4F), DYING_TREE.weighted(0.1F), SPARSE_OAK_TREE.weighted(0.2F)), ACACIA_TWIGLET_SMALL)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.4F, 1))));
public static final ConfiguredFeature<?, ?> DENSE_BAYOU_TREES = register("dense_bayou_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(CYPRESS_TREE.weighted(0.2F), CYPRESS_TREE_MEDIUM.weighted(0.5F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(20, 0.6F, 1))));
public static final ConfiguredFeature<?, ?> DRYLAND_TREES = register("dryland_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TWIGLET_TREE.weighted(0.4F), DYING_TREE.weighted(0.1F), SPARSE_OAK_TREE.weighted(0.2F)), ACACIA_TWIGLET_SMALL)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.4F, 1))));
public static final ConfiguredFeature<?, ?> FIR_CLEARING_TREES = register("fir_clearing_trees", FIR_TREE_SMALL.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.1F, 1))));
public static final ConfiguredFeature<?, ?> FLOODPLAIN_TREES = register("floodplain_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(SPARSE_OAK_TREE.weighted(0.3F), BIG_OAK_TREE.weighted(0.1F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.3F, 1))));
public static final ConfiguredFeature<?, ?> FLOWER_MEADOW_TREES = register("flower_meadow_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TALL_SPRUCE_TREE_BEES.weighted(0.1F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.3F, 1))));
public static final ConfiguredFeature<?, ?> FUNGAL_JUNGLE_TREES = register("fungal_jungle_trees", BUSH.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.1F, 1))));
public static final ConfiguredFeature<?, ?> GROVE_TREES = register("grove_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(SPARSE_OAK_TREE.weighted(0.05F), DARK_OAK_POPLAR.weighted(0.2F), SPRUCE_POPLAR.weighted(0.4F), FLOWERING_BUSH.weighted(0.1F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(3, 0.5F, 1))));
public static final ConfiguredFeature<?, ?> JADE_CLIFFS_TREES = register("jade_cliffs_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TALL_SPRUCE_TREE.weighted(0.075F), Features.PINE.weighted(0.025F)), SPRUCE_BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(35, 0.1F, 1))));
public static final ConfiguredFeature<?, ?> LAVENDER_FIELD_TREES = register("lavender_field_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FLOWERING_OAK_TREE_BEES.weighted(0.2F), BIG_FLOWERING_OAK_TREE.weighted(0.1F), BIG_JACARANDA_TREE.weighted(0.1F)), JACARANDA_TREE_BEES)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.2F, 1))));
public static final ConfiguredFeature<?, ?> LUSH_DESERT_TREES = register("lush_desert_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(ACACIA_BUSH.weighted(0.4F), SPARSE_ACACIA_TREE.weighted(0.2F)), ACACIA_TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.4F, 1))));
public static final ConfiguredFeature<?, ?> LUSH_GRASSLAND_TREES = register("lush_grassland_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(SMALL_JUNGLE_TREE.weighted(0.1F), Features.OAK_BEES_0002.weighted(0.2F), PALM_TREE.weighted(0.05F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig((int)0.95F, 0.6F, 1))));
public static final ConfiguredFeature<?, ?> LUSH_SWAMP_TREES = register("lush_swamp_trees", TALL_SWAMP_TREE.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(3, 0.1F, 1))));
public static final ConfiguredFeature<?, ?> MANGROVE_TREES = register("mangrove_trees", BUSH.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(15, 0.3F, 1))));
public static final ConfiguredFeature<?, ?> MAPLE_WOODS_TREES = register("maple_woods_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TALL_SPRUCE_TREE.weighted(0.2F), BIG_MAPLE_TREE.weighted(0.05F)), MAPLE_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(20, 0.15F, 1))));
public static final ConfiguredFeature<?, ?> MEADOW_TREES = register("meadow_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TALL_SPRUCE_TREE_BEES.weighted(0.25F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.1F, 1))));
public static final ConfiguredFeature<?, ?> MIRE_TREES = register("mire_trees", DARK_OAK_TWIGLET_TREE.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(3, 0.1F, 1))));
public static final ConfiguredFeature<?, ?> MUSKEG_TREES = register("muskeg_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DARK_OAK_TWIGLET_TREE.weighted(0.4F), DEAD_TREE.weighted(0.3F), DYING_TREE.weighted(0.075F), DEAD_TWIGLET_TREE_TALL.weighted(0.1F)), DEAD_TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.2F, 1))));
public static final ConfiguredFeature<?, ?> MYSTIC_GROVE_TREES = register("mystic_grove_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(GIANT_TREE.weighted(0.01F), TALL_SWAMP_TREE.weighted(0.1F), BIG_FLOWERING_OAK_TREE.weighted(0.2F), JACARANDA_TREE.weighted(0.3F), BIG_MAGIC_TREE.weighted(0.3F)), MAGIC_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.5F, 1))));
public static final ConfiguredFeature<?, ?> OMINOUS_WOODS_TREES = register("ominous_woods_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DEAD_TREE.weighted(0.05F), DYING_TREE.weighted(0.15F), WILLOW_TREE.weighted(0.15F), TALL_UMBRAN_TREE.weighted(0.7F)), UMBRAN_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(7, 0.5F, 1))));
public static final ConfiguredFeature<?, ?> ORCHARD_TREES = register("orchard_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_FLOWERING_OAK_TREE.weighted(0.1F)), FLOWERING_OAK_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.3F, 1))));
public static final ConfiguredFeature<?, ?> ORIGIN_VALLEY_TREES = register("origin_valley_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_ORIGIN_TREE.weighted(0.1F)), ORIGIN_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(BOPPlacements.ALPHA_TREE.configured(NoPlacementConfig.INSTANCE)));
public static final ConfiguredFeature<?, ?> OUTBACK_TREES = register("outback_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(ACACIA_TWIGLET_TREE.weighted(0.15F)), ACACIA_TWIGLET_SMALL)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.6F, 1))));
public static final ConfiguredFeature<?, ?> OVERGROWN_CLIFFS_TREES = register("overgrown_cliffs_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(JUNGLE_TWIGLET_TREE.weighted(0.3F), MAHOGANY_TREE.weighted(0.1F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(16, 0.4F, 1))));
public static final ConfiguredFeature<?, ?> PRAIRIE_TREES = register("prairie_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_OAK_TREE.weighted(0.1F)), SPARSE_OAK_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig((int)0.85F, 0.3F, 1))));
public static final ConfiguredFeature<?, ?> PUMPKIN_PATCH_TREES = register("pumpkin_patch_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BUSH.weighted(0.2F)), TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.5F, 1))));
public static final ConfiguredFeature<?, ?> RAINBOW_HILLS_TREES = register("rainbow_hills_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BUSH.weighted(0.2F), FIR_TREE_SMALL.weighted(0.1F), FIR_TREE.weighted(0.025F), BIG_RAINBOW_BIRCH_TREE.weighted(0.2F)), RAINBOW_BIRCH_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(15, 0.5F, 1))));
public static final ConfiguredFeature<?, ?> RAINFOREST_TREES = register("rainforest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(Features.BIRCH.weighted(0.1F), BIG_OAK_TREE.weighted(0.4F)), Features.OAK)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.5F, 1))));
public static final ConfiguredFeature<?, ?> RAINFOREST_TREES = register("rainforest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(Features.JUNGLE_TREE.weighted(0.1F)), MAHOGANY_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(12, 0.3F, 1))));
public static final ConfiguredFeature<?, ?> RAINFOREST_CLEARING_TREES = register("rainforest_clearing_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(SPARSE_OAK_TREE.weighted(0.3F), BIG_OAK_TREE.weighted(0.1F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.3F, 1))));
public static final ConfiguredFeature<?, ?> RAINFOREST_CLIFFS_TREES = register("rainforest_cliffs_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(JUNGLE_TWIGLET_TREE.weighted(0.4F), MAHOGANY_TREE.weighted(0.05F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(20, 0.4F, 1))));
public static final ConfiguredFeature<?, ?> REDWOOD_FOREST_EDGE_TREES = register("redwood_forest_edge_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(REDWOOD_TREE.weighted(0.3F), REDWOOD_TREE_MEDIUM.weighted(0.1F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.3F, 1))));
public static final ConfiguredFeature<?, ?> REDWOOD_FOREST_TREES = register("redwood_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(REDWOOD_TREE.weighted(0.1F), REDWOOD_TREE_MEDIUM.weighted(0.3F), REDWOOD_TREE_LARGE.weighted(0.5F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(18, 0.2F, 1))));
public static final ConfiguredFeature<?, ?> SCRUBLAND_TREES = register("scrubland_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(SPRUCE_TWIGLET_TREE.weighted(0.3F), TALL_TWIGLET_TREE.weighted(0.1F)), ACACIA_TWIGLET)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.5F, 1))));
public static final ConfiguredFeature<?, ?> SEASONAL_FOREST_TREES = register("seasonal_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_OAK_TREE.weighted(0.05F), DYING_TREE.weighted(0.1F), MAPLE_TREE.weighted(0.2F), YELLOW_AUTUMN_TREE.weighted(0.3F), BIG_MAPLE_TREE.weighted(0.1F), BIG_YELLOW_AUTUMN_TREE.weighted(0.1F), BIG_ORANGE_AUTUMN_TREE.weighted(0.1F)), ORANGE_AUTUMN_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.3F, 1))));
public static final ConfiguredFeature<?, ?> SHIELD_TREES = register("shield_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BUSH.weighted(0.3F)), TALL_SPRUCE_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(6, 0.1F, 1))));
public static final ConfiguredFeature<?, ?> SEASONAL_FOREST_TREES = register("seasonal_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(Features.OAK.weighted(0.05F), BIG_OAK_TREE.weighted(0.025F), MAPLE_TREE.weighted(0.2F), YELLOW_AUTUMN_TREE.weighted(0.3F), BIG_MAPLE_TREE.weighted(0.1F), BIG_YELLOW_AUTUMN_TREE.weighted(0.1F), BIG_ORANGE_AUTUMN_TREE.weighted(0.1F)), ORANGE_AUTUMN_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.3F, 1))));
public static final ConfiguredFeature<?, ?> SHROOMY_WETLAND_TREES = register("shroomy_wetland_trees", DARK_OAK_TWIGLET_TREE.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(3, 0.1F, 1))));
public static final ConfiguredFeature<?, ?> SHRUBLAND_TREES = register("shrubland_trees", BUSH.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.05F, 1))));
public static final ConfiguredFeature<?, ?> SHRUBLAND_HILLS_TREES = register("shrubland_hills_trees", BUSH.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.05F, 1))));
public static final ConfiguredFeature<?, ?> SILKGLADE_TREES = register("silkglade_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(Features.SWAMP_TREE.weighted(0.05F), BIRCH_POPLAR.weighted(0.15F), COBWEB_BUSH.weighted(0.2F), SMALL_DEAD_TREE.weighted(0.5F), SILK_TREE.weighted(0.2F), FULL_COBWEB_BUSH.weighted(0.05F), FULL_SILK_TREE.weighted(0.05F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.4F, 1))));
public static final ConfiguredFeature<?, ?> SNOWY_CONIFEROUS_FOREST_TREES = register("snowy_coniferous_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FIR_TREE.weighted(0.33333334F)), FIR_TREE_LARGE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(4, 0.1F, 1))));
public static final ConfiguredFeature<?, ?> SNOWY_FOREST_TREES = register("snowy_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DYING_TREE.weighted(0.2F)), Features.OAK)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(3, 0.2F, 1))));
public static final ConfiguredFeature<?, ?> TEMPERATE_RAINFOREST_HILLS_TREES = register("temperate_rainforest_hills_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(SEQUOIA_TREE.weighted(0.5F)), SEQUOIA_TREE_LARGE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(8, 0.2F, 1))));
public static final ConfiguredFeature<?, ?> TEMPERATE_RAINFOREST_TREES = register("temperate_rainforest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TALL_SWAMP_TREE.weighted(0.15F), BIG_OAK_TREE.weighted(0.1F), SEQUOIA_TREE.weighted(0.5F)), SEQUOIA_TREE_LARGE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(4, 0.2F, 1))));
public static final ConfiguredFeature<?, ?> TROPICAL_RAINFOREST_TREES = register("tropical_rainforest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(Features.JUNGLE_TREE.weighted(0.1F)), MAHOGANY_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(12, 0.3F, 1))));
public static final ConfiguredFeature<?, ?> TROPICS_TREES = register("tropics_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(JUNGLE_TWIGLET_TREE.weighted(0.3F), FLOWERING_BUSH.weighted(0.1F)), PALM_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(11, 0.2F, 1))));
public static final ConfiguredFeature<?, ?> TUNDRA_TREES = register("tundra_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DEAD_TWIGLET_TREE_SMALL.weighted(0.1F)), MAPLE_TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.3F, 1))));
public static final ConfiguredFeature<?, ?> TUNDRA_BOG_TREES = register("tundra_bog_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(SPRUCE_TWIGLET_TREE.weighted(0.4F), MAPLE_TWIGLET_TREE.weighted(0.6F)), TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(16, 0.4F, 1))));
public static final ConfiguredFeature<?, ?> UNDERGROWTH_TREES = register("undergrowth_trees", HELLBARK_TREE.decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(35)));
public static final ConfiguredFeature<?, ?> VOLCANIC_PLAINS_TREES = register("volcanic_plains_trees", TWIGLET_TREE_VOLCANO.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.1F, 1))));
public static final ConfiguredFeature<?, ?> WASTELAND_TREES = register("wasteland_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DEAD_TREE_WASTELAND.weighted(0.2F)), DYING_TREE_WASTELAND)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig((int)0.75F, 0.1F, 1))));
public static final ConfiguredFeature<?, ?> WETLAND_TREES = register("wetland_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TALL_SPRUCE_TREE.weighted(0.5F)), WILLOW_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.1F, 1))));
public static final ConfiguredFeature<?, ?> WOODLAND_TREES = register("woodland_trees", Features.OAK.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(7, 0.1F, 1))));
// Biome Flower Listings
public static final ConfiguredFeature<?, ?> CHAPARRAL_FLOWERS = register("chaparral_flowers", BOPFeatures.CHAPARRAL_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(17)));
public static final ConfiguredFeature<?, ?> CHERRY_BLOSSOM_GROVE_FLOWERS = register("cherry_blossom_grove_flowers", BOPFeatures.CHERRY_BLOSSOM_GROVE_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(5)));
public static final ConfiguredFeature<?, ?> CONIFEROUS_FOREST_FLOWERS = register("coniferous_forest_flowers", BOPFeatures.CONIFEROUS_FOREST_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(4)));
public static final ConfiguredFeature<?, ?> LUSH_DESERT_FLOWERS = register("lush_desert_flowers", BOPFeatures.WILDFLOWER_FEATURE.configured(IFeatureConfig.NONE).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(6)));
public static final ConfiguredFeature<?, ?> FLOWER_MEADOW_FLOWERS = register("flower_meadow_flowers", BOPFeatures.FLOWER_MEADOW_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).decorated(FeatureUtil.denseCount(150)));
public static final ConfiguredFeature<?, ?> GROVE_FLOWERS = register("grove_flowers", BOPFeatures.EXTENDED_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(6)));
public static final ConfiguredFeature<?, ?> JUNGLE_FLOWERS = register("jungle_flowers", BOPFeatures.JUNGLE_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(5)));
public static final ConfiguredFeature<?, ?> LAVENDER_FIELD_FLOWERS = register("lavender_field_flowers", BOPFeatures.LAVENDER_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).decorated(FeatureUtil.denseCount(500)));
public static final ConfiguredFeature<?, ?> LUSH_GRASSLAND_FLOWERS = register("lush_grassland_flowers", BOPFeatures.LUSH_GRASSLAND_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(6)));
public static final ConfiguredFeature<?, ?> LUSH_SWAMP_FLOWERS = register("lush_swamp_flowers", BOPFeatures.LUSH_SWAMP_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(5)));
public static final ConfiguredFeature<?, ?> LAVENDER_FLOWERS = register("lavender_flowers", BOPFeatures.LAVENDER_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).decorated(FeatureUtil.denseCount(500)));
public static final ConfiguredFeature<?, ?> MEADOW_FLOWERS = register("meadow_flowers", BOPFeatures.MEADOW_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(6)));
public static final ConfiguredFeature<?, ?> MEADOW_FLOWERS_2 = register("meadow_flowers_2", BOPFeatures.FLOWER_MEADOW_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(3)));
public static final ConfiguredFeature<?, ?> MOOR_FLOWERS = register("moor_flowers", BOPFeatures.MOOR_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(5)));
public static final ConfiguredFeature<?, ?> MOOR_FLOWERS_2 = register("moor_flowers_2", BOPFeatures.VIOLET_FEATURE.configured(IFeatureConfig.NONE).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(50)));
public static final ConfiguredFeature<?, ?> MYSTIC_GROVE_FLOWERS = register("mystic_grove_flowers", BOPFeatures.MYSTIC_GROVE_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(18)));
public static final ConfiguredFeature<?, ?> MYSTIC_PLAINS_FLOWERS = register("mystic_plains_flowers", BOPFeatures.MYSTIC_GROVE_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(50)));
public static final ConfiguredFeature<?, ?> OMINOUS_WOODS_FLOWERS = register("ominous_woods_flowers", BOPFeatures.OMINOUS_WOODS_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(3)));
public static final ConfiguredFeature<?, ?> ORCHARD_FLOWERS = register("orchard_flowers", BOPFeatures.EXTENDED_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(15)));
public static final ConfiguredFeature<?, ?> ORIGIN_FLOWERS = register("origin_flowers", BOPFeatures.ORIGIN_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(4)));
public static final ConfiguredFeature<?, ?> POPPY_FIELD_FLOWERS = register("poppy_field_flowers", BOPFeatures.POPPY_FEATURE.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).decorated(FeatureUtil.denseCount(500)));
public static final ConfiguredFeature<?, ?> RAINBOW_HILLS_FLOWERS = register("rainbow_hills_flowers", BOPFeatures.RAINBOW_HILLS_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(25)));
public static final ConfiguredFeature<?, ?> RAINFOREST_FLOWERS = register("rainforest_flowers", BOPFeatures.RAINFOREST_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(6)));
public static final ConfiguredFeature<?, ?> RAINFOREST_FLOWERS = register("rainforest_flowers", BOPFeatures.RAINFOREST_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(5)));
public static final ConfiguredFeature<?, ?> SHRUBLAND_FLOWERS = register("shrubland_flowers", BOPFeatures.SHRUBLAND_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(3)));
public static final ConfiguredFeature<?, ?> SNOWY_FLOWERS = register("snowy_flowers", BOPFeatures.SNOWY_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(3)));
public static final ConfiguredFeature<?, ?> TROPIC_FLOWERS = register("tropic_flowers", BOPFeatures.TROPICS_FLOWERS.configured(IFeatureConfig.NONE).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(15)));
@ -296,10 +278,11 @@ public class BOPConfiguredFeatures
public static final ConfiguredFeature<?, ?> BLACK_SAND_DISK = register("black_sand_disk", Feature.DISK.configured(new SphereReplaceConfig(BOPBlocks.black_sand.defaultBlockState(), FeatureSpread.of(4, 2), 1, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(4));
public static final ConfiguredFeature<?, ?> BONE_SPINE = register("bone_spine", BOPFeatures.BONE_SPINE.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3)));
public static final ConfiguredFeature<?, ?> BRAMBLE = register("bramble", BOPFeatures.BRAMBLE.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3)));
public static final ConfiguredFeature<?, ?> DENSE_BAYOU_VINES = register("dense_bayou_vines", BOPFeatures.DENSE_BAYOU_VINES.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).count(128));
public static final ConfiguredFeature<?, ?> FLESH_TENDON = register("flesh_tendon", BOPFeatures.FLESH_TENDON.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(65)));
public static final ConfiguredFeature<?, ?> GRAVEL_DISK_EXTRA = register("gravel_disk_extra", Feature.DISK.configured(new SphereReplaceConfig(Blocks.GRAVEL.defaultBlockState(), FeatureSpread.of(4, 2), 1, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(6));
public static final ConfiguredFeature<?, ?> HUGE_BROWN_MUSHROOM_EXTRA = register("huge_brown_mushroom_extra", Features.HUGE_BROWN_MUSHROOM.decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(17)));
public static final ConfiguredFeature<?, ?> HUGE_GLOWSHROOM = register("huge_glowshroom", BOPFeatures.HUGE_GLOWSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(7)));
public static final ConfiguredFeature<?, ?> HUGE_BROWN_MUSHROOM_EXTRA = register("huge_brown_mushroom_extra", Features.HUGE_BROWN_MUSHROOM.decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(19)));
public static final ConfiguredFeature<?, ?> HUGE_GLOWSHROOM = register("huge_glowshroom", BOPFeatures.HUGE_GLOWSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(9)));
public static final ConfiguredFeature<?, ?> HUGE_RED_MUSHROOM_EXTRA = register("huge_red_mushroom_extra", Features.HUGE_RED_MUSHROOM.decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(6)));
public static final ConfiguredFeature<?, ?> HUGE_TOADSTOOL = register("huge_toadstool", BOPFeatures.HUGE_TOADSTOOL.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1)));
public static final ConfiguredFeature<?, ?> LARGE_CRYSTAL = register("large_crystal", BOPFeatures.LARGE_CRYSTAL.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).decorated(FeatureUtil.denseCount(200)));
@ -310,11 +293,10 @@ public class BOPConfiguredFeatures
public static final ConfiguredFeature<?, ?> NETHER_BRAMBLE = register("nether_bramble", BOPFeatures.BRAMBLE.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(50)));
public static final ConfiguredFeature<?, ?> NETHER_VINES = register("nether_vines", BOPFeatures.NETHER_VINES.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).decorated(FeatureUtil.denseCount(150)));
public static final ConfiguredFeature<?, ?> OBSIDIAN_SPLATTER = register("obsidian_splatter", BOPFeatures.OBSIDIAN_SPLATTER.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(12)));
public static final ConfiguredFeature<?, ?> ORANGE_SAND_DISK = register("orange_sand_disk", Feature.DISK.configured(new SphereReplaceConfig(BOPBlocks.orange_sand.defaultBlockState(), FeatureSpread.of(4, 2), 1, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(5));
public static final ConfiguredFeature<?, ?> OVERGROWN_CLIFFS_SPRING = register("overgrown_cliffs_spring", Feature.SPRING.configured(BOPFeatures.OVERGROWN_CLIFFS_SPRING_CONFIG).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).count(128));
public static final ConfiguredFeature<?, ?> OVERGROWN_CLIFFS_VINES = register("overgrown_cliffs_vines", BOPFeatures.OVERGROWN_CLIFFS_VINES.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).decorated(FeatureUtil.denseCount(150)));
public static final ConfiguredFeature<?, ?> PODZOL_SPLATTER = register("podzol_splatter", BOPFeatures.PODZOL_SPLATTER.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(14)));
public static final ConfiguredFeature<?, ?> ORANGE_SAND_DISK = register("orange_sand_disk", Feature.DISK.configured(new SphereReplaceConfig(BOPBlocks.orange_sand.defaultBlockState(), FeatureSpread.of(2, 4), 2, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(3));
public static final ConfiguredFeature<?, ?> PODZOL_SPLATTER = register("podzol_splatter", BOPFeatures.PODZOL_SPLATTER.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(16)));
public static final ConfiguredFeature<?, ?> PUMPKIN_PATCH = register("pumpkin_patch", BOPFeatures.PUMPKIN_PATCH.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(35)));
public static final ConfiguredFeature<?, ?> RAINFOREST_CLIFFS_VINES = register("overgrown_cliffs_vines", BOPFeatures.RAINFOREST_CLIFFS_VINES.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).count(128));
public static final ConfiguredFeature<?, ?> SCATTERED_ROCKS = register("scattered_rocks", BOPFeatures.SCATTERED_ROCKS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3)));
public static final ConfiguredFeature<?, ?> SCRUB_EXTRA = register("scrub_extra", BOPFeatures.SCRUB.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(35)));
public static final ConfiguredFeature<?, ?> SCRUB_NORMAL = register("scrub_normal", BOPFeatures.SCRUB.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(10)));
@ -329,7 +311,9 @@ public class BOPConfiguredFeatures
public static final ConfiguredFeature<?, ?> VOLCANO_SPRING = register("volcano_spring", Feature.SPRING.configured(BOPFeatures.VOLCANO_SPRING_CONFIG).decorated(Placement.RANGE_VERY_BIASED.configured(new TopSolidRangeConfig(8, 16, 256))).squared().count(75));
public static final ConfiguredFeature<?, ?> WATER_LAKE_COMMON = register("water_lake_common", Feature.LAKE.configured(new BlockStateFeatureConfig(Blocks.WATER.defaultBlockState())).decorated(Placement.WATER_LAKE.configured(new ChanceConfig(1))));
public static final ConfiguredFeature<?, ?> WATER_LAKE_UNCOMMON = register("water_lake_uncommon", Feature.LAKE.configured(new BlockStateFeatureConfig(Blocks.WATER.defaultBlockState())).decorated(Placement.WATER_LAKE.configured(new ChanceConfig(3))));
public static final ConfiguredFeature<?, ?> WHITE_SAND_DISK = register("white_sand_disk", Feature.DISK.configured(new SphereReplaceConfig(BOPBlocks.white_sand.defaultBlockState(), FeatureSpread.of(4, 2), 1, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(8));
public static final ConfiguredFeature<?, ?> WATER_SPRING_EXTRA = register("water_spring_extra", Feature.SPRING.configured(BOPFeatures.OVERGROWN_CLIFFS_SPRING_CONFIG).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).count(128));
public static final ConfiguredFeature<?, ?> WHITE_SAND_DISK = register("white_sand_disk", Feature.DISK.configured(new SphereReplaceConfig(BOPBlocks.white_sand.defaultBlockState(), FeatureSpread.of(2, 4), 2, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(2));
public static final ConfiguredFeature<?, ?> WHITE_SAND_DISK_EXTRA = register("white_sand_disk_extra", Feature.DISK.configured(new SphereReplaceConfig(BOPBlocks.white_sand.defaultBlockState(), FeatureSpread.of(4, 2), 1, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(8));
private static <FC extends IFeatureConfig> ConfiguredFeature<FC, ?> register(String key, ConfiguredFeature<FC, ?> feature)
{

View file

@ -120,6 +120,7 @@ public class BOPFeatures
public static final Feature<NoFeatureConfig> BIG_PUMPKIN = register("big_pumpkin", new BigPumpkinFeature(NoFeatureConfig.CODEC));
public static final Feature<NoFeatureConfig> BONE_SPINE = register("bone_spine", new BoneSpineFeature(NoFeatureConfig.CODEC));
public static final Feature<NoFeatureConfig> BRAMBLE = register("bramble", new BrambleFeature(NoFeatureConfig.CODEC));
public static final Feature<NoFeatureConfig> DENSE_BAYOU_VINES = register("dense_bayou_vines", new DenseBayouVinesFeature(NoFeatureConfig.CODEC));
public static final Feature<NoFeatureConfig> FERN_GRASS = register("fern_grass", new FernGrassFeature(NoFeatureConfig.CODEC));
public static final Feature<NoFeatureConfig> FLESH_TENDON = register("flesh_tendon", new FleshTendonFeature(NoFeatureConfig.CODEC));
public static final Feature<NoFeatureConfig> GRASS_SPLATTER = register("grass_splatter", new GrassSplatterFeature(NoFeatureConfig.CODEC));
@ -130,7 +131,7 @@ public class BOPFeatures
public static final Feature<NoFeatureConfig> MYCELIUM_SPLATTER = register("mycelium_splatter", new MyceliumSplatterFeature(NoFeatureConfig.CODEC));
public static final Feature<NoFeatureConfig> NETHER_VINES = register("nether_vines", new NetherVinesFeature(NoFeatureConfig.CODEC));
public static final Feature<NoFeatureConfig> OBSIDIAN_SPLATTER = register("obsidian_splatter", new ObsidianSplatterFeature(NoFeatureConfig.CODEC));
public static final Feature<NoFeatureConfig> OVERGROWN_CLIFFS_VINES = register("overgrown_cliffs_vines", new OvergrownCliffsVinesFeature(NoFeatureConfig.CODEC));
public static final Feature<NoFeatureConfig> RAINFOREST_CLIFFS_VINES = register("rainforest_cliffs_vines", new RainforestCliffsVinesFeature(NoFeatureConfig.CODEC));
public static final Feature<NoFeatureConfig> PODZOL_SPLATTER = register("podzol_splatter", new PodzolSplatterFeature(NoFeatureConfig.CODEC));
public static final Feature<NoFeatureConfig> PUMPKIN_PATCH = register("pumpkin_patch", new PumpkinPatchFeature(NoFeatureConfig.CODEC));
public static final Feature<NoFeatureConfig> SCATTERED_ROCKS = register("scattered_rocks", new ScatteredRocksFeature(NoFeatureConfig.CODEC));
@ -146,15 +147,11 @@ public class BOPFeatures
public static final Feature<ColumnConfig> BLACK_SANDSTONE_COLUMN = register("black_sandstone_column", new BlackSandstoneColumnFeature(ColumnConfig.CODEC));
//Flowers
public static final FlowersFeature<NoFeatureConfig> CHAPARRAL_FLOWERS = register("chaparral_flowers", new ChaparralFlowersFeature());
public static final FlowersFeature<NoFeatureConfig> CHERRY_BLOSSOM_GROVE_FLOWERS = register("cherry_blossom_grove_flowers", new CherryBlossomGroveFlowersFeature());
public static final FlowersFeature<NoFeatureConfig> CONIFEROUS_FOREST_FLOWERS = register("coniferous_forest_flowers", new ConiferousForestFlowersFeature());
public static final FlowersFeature<NoFeatureConfig> EXTENDED_FLOWERS = register("extended_flowers", new ExtendedFlowersFeature());
public static final FlowersFeature<NoFeatureConfig> FLOWER_MEADOW_FLOWERS = register("flower_meadow_flowers", new FlowerMeadowFlowersFeature());
public static final FlowersFeature<NoFeatureConfig> JUNGLE_FLOWERS = register("jungle_flowers", new JungleFlowersFeature());
public static final FlowersFeature<NoFeatureConfig> LAVENDER_FLOWERS = register("lavender_flowers", new LavenderFlowersFeature());
public static final FlowersFeature<NoFeatureConfig> LUSH_GRASSLAND_FLOWERS = register("lush_grassland_flowers", new LushGrasslandFlowersFeature());
public static final FlowersFeature<NoFeatureConfig> LUSH_SWAMP_FLOWERS = register("lush_swamp_flowers", new LushSwampFlowersFeature());
public static final FlowersFeature<NoFeatureConfig> MEADOW_FLOWERS = register("meadow_flowers", new MeadowFlowersFeature());
public static final FlowersFeature<NoFeatureConfig> MOOR_FLOWERS = register("moor_flowers", new MoorFlowersFeature());
public static final FlowersFeature<NoFeatureConfig> MYSTIC_GROVE_FLOWERS = register("mystic_grove_flowers", new MysticGroveFlowersFeature());

View file

@ -1,32 +0,0 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.world.gen.feature;
import biomesoplenty.api.block.BOPBlocks;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.gen.feature.NoFeatureConfig;
import java.util.Random;
public class ChaparralFlowersFeature extends DefaultFlowersFeatureNoConfig
{
private static final Block[] FLOWERS = new Block[]{BOPBlocks.wildflower, Blocks.AZURE_BLUET, Blocks.DANDELION, Blocks.POPPY};
@Override
public BlockState getRandomFlower(Random p_202355_1_, BlockPos p_202355_2_, NoFeatureConfig config)
{
double d0 = MathHelper.clamp((1.0D + Biome.BIOME_INFO_NOISE.getValue((double)p_202355_2_.getX() / 48.0D, (double)p_202355_2_.getZ() / 48.0D, false)) / 2.0D, 0.0D, 0.9999D);
Block block = FLOWERS[(int)(d0 * (double)FLOWERS.length)];
return block.defaultBlockState();
}
}

View file

@ -0,0 +1,96 @@
package biomesoplenty.common.world.gen.feature;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.common.util.block.IBlockPosQuery;
import com.google.common.collect.Lists;
import com.mojang.serialization.Codec;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.VineBlock;
import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.ISeedReader;
import net.minecraft.world.IWorld;
import net.minecraft.world.gen.ChunkGenerator;
import net.minecraft.world.gen.feature.Feature;
import net.minecraft.world.gen.feature.NoFeatureConfig;
import java.util.List;
import java.util.Random;
public class DenseBayouVinesFeature extends Feature<NoFeatureConfig>
{
protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.willow_log || world.getBlockState(pos).getBlock() == BOPBlocks.willow_leaves || world.getBlockState(pos).getBlock() == Blocks.OAK_LEAVES || world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK || world.getBlockState(pos).getBlock() == Blocks.DIRT;
protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).isAir(world, pos);
int minHeight = 2;
int maxHeight = 6;
public DenseBayouVinesFeature(Codec<NoFeatureConfig> deserializer)
{
super(deserializer);
}
@Override
public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config)
{
while (startPos.getY() > 1 && this.replace.matches(world, startPos)) {startPos = startPos.below();}
if (!this.placeOn.matches(world, startPos.offset(2, 0, 2)))
{
// Abandon if we can't place the tree on this block
return false;
}
for (int i = 0; i < 128; ++i)
{
BlockPos genPos = startPos.offset(rand.nextInt(4) - rand.nextInt(4), rand.nextInt(3) - rand.nextInt(3), rand.nextInt(4) - rand.nextInt(4));
if (!this.replace.matches(world, genPos)) continue;
BlockState vineState = BOPBlocks.willow_vine.defaultBlockState();
// make sure there is an adjacent block for the vine to attach to
List<Direction> validDirections = Lists.newArrayList();
for (Direction facing : Direction.values()) {
if (facing == Direction.UP || facing == Direction.DOWN) continue;
if (this.placeOn.matches(world, genPos.relative(facing))) validDirections.add(facing);
}
if (validDirections.isEmpty()) continue;
Direction direction = validDirections.get(rand.nextInt(validDirections.size()));
vineState = vineState.setValue(VineBlock.getPropertyForFace(direction), Boolean.valueOf(true));
// choose random target height
int targetHeight = minHeight + rand.nextInt(maxHeight);
// keep placing blocks upwards (if there's room)
for (int height = 0; height <= targetHeight; height++)
{
BlockPos offsetPos = genPos.below(height);
if (replace.matches(world, offsetPos) && vineState.getBlock().canSurvive(vineState, world, offsetPos))
{
world.setBlock(offsetPos, vineState, 2);
}
else
{
return false;
}
}
}
return true;
}
public boolean setBlock(IWorld world, BlockPos pos, BlockState state)
{
if (this.replace.matches(world, pos))
{
super.setBlock(world, pos, state);
return true;
}
return false;
}
}

View file

@ -1,35 +0,0 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.world.gen.feature;
import biomesoplenty.api.block.BOPBlocks;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.gen.feature.NoFeatureConfig;
import java.util.Random;
public class JungleFlowersFeature extends DefaultFlowersFeatureNoConfig
{
@Override
public BlockState getRandomFlower(Random p_202355_1_, BlockPos p_202355_2_, NoFeatureConfig config)
{
int j = p_202355_1_.nextInt(3);
switch(j)
{
case 0:
return BOPBlocks.orange_cosmos.defaultBlockState();
case 1:
return Blocks.POPPY.defaultBlockState();
case 2:
default:
return Blocks.DANDELION.defaultBlockState();
}
}
}

View file

@ -1,33 +0,0 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.world.gen.feature;
import biomesoplenty.api.block.BOPBlocks;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.gen.feature.NoFeatureConfig;
import java.util.Random;
public class LushGrasslandFlowersFeature extends DefaultFlowersFeatureNoConfig
{
@Override
public BlockState getRandomFlower(Random p_202355_1_, BlockPos p_202355_2_, NoFeatureConfig config)
{
int j = p_202355_1_.nextInt(2);
switch(j)
{
case 0:
return BOPBlocks.orange_cosmos.defaultBlockState();
case 1:
default:
return Blocks.OXEYE_DAISY.defaultBlockState();
}
}
}

View file

@ -1,31 +0,0 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.world.gen.feature;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.gen.feature.NoFeatureConfig;
import java.util.Random;
public class LushSwampFlowersFeature extends DefaultFlowersFeatureNoConfig
{
private static final Block[] FLOWERS = new Block[]{Blocks.BLUE_ORCHID, Blocks.AZURE_BLUET, Blocks.DANDELION, Blocks.POPPY};
@Override
public BlockState getRandomFlower(Random p_202355_1_, BlockPos p_202355_2_, NoFeatureConfig config)
{
double d0 = MathHelper.clamp((1.0D + Biome.BIOME_INFO_NOISE.getValue((double)p_202355_2_.getX() / 48.0D, (double)p_202355_2_.getZ() / 48.0D, false)) / 2.0D, 0.0D, 0.9999D);
Block block = FLOWERS[(int)(d0 * (double)FLOWERS.length)];
return block.defaultBlockState();
}
}

View file

@ -18,14 +18,14 @@ import net.minecraft.world.gen.feature.NoFeatureConfig;
import java.util.List;
import java.util.Random;
public class OvergrownCliffsVinesFeature extends Feature<NoFeatureConfig>
public class RainforestCliffsVinesFeature extends Feature<NoFeatureConfig>
{
protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.DIRT || world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK || world.getBlockState(pos).getBlock() == Blocks.STONE || world.getBlockState(pos).getBlock() == Blocks.TERRACOTTA || world.getBlockState(pos).getBlock() == Blocks.ANDESITE || world.getBlockState(pos).getBlock() == Blocks.GRANITE || world.getBlockState(pos).getBlock() == Blocks.DIORITE;
protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).isAir(world, pos);
int minHeight = 7;
int maxHeight = 14;
public OvergrownCliffsVinesFeature(Codec<NoFeatureConfig> deserializer)
public RainforestCliffsVinesFeature(Codec<NoFeatureConfig> deserializer)
{
super(deserializer);
}

View file

@ -8,25 +8,28 @@
package biomesoplenty.common.world.gen.feature;
import biomesoplenty.api.block.BOPBlocks;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.gen.feature.NoFeatureConfig;
import java.util.Random;
public class RainforestFlowersFeature extends DefaultFlowersFeatureNoConfig
{
private static final Block[] FLOWERS = new Block[]{BOPBlocks.pink_daffodil, Blocks.BLUE_ORCHID, Blocks.OXEYE_DAISY, Blocks.DANDELION, Blocks.POPPY};
@Override
@Override
public BlockState getRandomFlower(Random p_202355_1_, BlockPos p_202355_2_, NoFeatureConfig config)
{
double d0 = MathHelper.clamp((1.0D + Biome.BIOME_INFO_NOISE.getValue((double)p_202355_2_.getX() / 48.0D, (double)p_202355_2_.getZ() / 48.0D, false)) / 2.0D, 0.0D, 0.9999D);
Block block = FLOWERS[(int)(d0 * (double)FLOWERS.length)];
return block.defaultBlockState();
int j = p_202355_1_.nextInt(3);
switch(j)
{
case 0:
return BOPBlocks.orange_cosmos.defaultBlockState();
case 1:
return Blocks.POPPY.defaultBlockState();
case 2:
default:
return Blocks.DANDELION.defaultBlockState();
}
}
}

View file

@ -32,8 +32,7 @@ public class BOPSurfaceBuilders
public static final SurfaceBuilderConfig DRIED_SALT_SURFACE = new SurfaceBuilderConfig(BOPBlocks.dried_salt.defaultBlockState(), BOPBlocks.dried_salt.defaultBlockState(), BOPBlocks.dried_salt.defaultBlockState());
public static final SurfaceBuilderConfig ORIGIN_GRASS_SURFACE = new SurfaceBuilderConfig(BOPBlocks.origin_grass_block.defaultBlockState(), Blocks.DIRT.defaultBlockState(), Blocks.GRAVEL.defaultBlockState());
public static final SurfaceBuilder<SurfaceBuilderConfig> CHAPARRAL = register("chaparral", new ChaparralSurfaceBuilder(SurfaceBuilderConfig.CODEC));
public static final SurfaceBuilder<SurfaceBuilderConfig> COLD_DESERT = register("cold_desert", new ColdDesertSurfaceBuilder(SurfaceBuilderConfig.CODEC));
public static final SurfaceBuilder<SurfaceBuilderConfig> EXPOSED_STONE = register("exposed_stone", new ExposedStoneSurfaceBuilder(SurfaceBuilderConfig.CODEC));
public static final SurfaceBuilder<SurfaceBuilderConfig> TERRACOTTA = register("terracotta", new TerracottaSurfaceBuilder(SurfaceBuilderConfig.CODEC));
public static final SurfaceBuilder<SurfaceBuilderConfig> MARSH = register("marsh", new MarshSurfaceBuilder(SurfaceBuilderConfig.CODEC));
public static final SurfaceBuilder<SurfaceBuilderConfig> MANGROVE = register("mangrove", new MangroveSurfaceBuilder(SurfaceBuilderConfig.CODEC));

View file

@ -1,39 +0,0 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.world.gen.surfacebuilders;
import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders;
import com.mojang.serialization.Codec;
import net.minecraft.block.BlockState;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.chunk.IChunk;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig;
import java.util.Random;
public class ColdDesertSurfaceBuilder extends SurfaceBuilder<SurfaceBuilderConfig>
{
public ColdDesertSurfaceBuilder(Codec<SurfaceBuilderConfig> deserializer)
{
super(deserializer);
}
@Override
public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config)
{
if (noise > 2.6D)
{
SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, BOPSurfaceBuilders.SNOW_SNOW_GRAVEL_SURFACE);
}
else
{
SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_GRAVEL);
}
}
}

View file

@ -16,9 +16,9 @@ import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig;
import java.util.Random;
public class ChaparralSurfaceBuilder extends SurfaceBuilder<SurfaceBuilderConfig>
public class ExposedStoneSurfaceBuilder extends SurfaceBuilder<SurfaceBuilderConfig>
{
public ChaparralSurfaceBuilder(Codec<SurfaceBuilderConfig> deserializer)
public ExposedStoneSurfaceBuilder(Codec<SurfaceBuilderConfig> deserializer)
{
super(deserializer);
}

View file

@ -60,14 +60,6 @@ public enum BOPMixOceansLayer implements IAreaTransformer3, IDimOffset0Transform
oceanId = BOPLayerUtil.WARM_OCEAN;
break;
case WASTELAND:
if (BiomeUtil.exists(BOPBiomes.wasteland))
{
oceanId = BiomeUtil.getBiomeId(BOPBiomes.wasteland);
break;
}
// Fallthrough
default:
oceanId = BOPLayerUtil.OCEAN;
break;

View file

@ -61,17 +61,12 @@ public enum BOPShoreLayer implements ICastleTransformer
return MUSHROOM_FIELD_SHORE;
}
}
else if (biome != null && biome.getBiomeCategory() == Biome.Category.JUNGLE)
else if (biome != null && biome.getBiomeCategory() == Biome.Category.JUNGLE && biomeId != getBiomeIdIfPresent(BOPBiomes.rainforest, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.rainforest_clearing, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.rainforest_cliffs, biomeId))
{
if (!isJungleCompatible(northBiomeId) || !isJungleCompatible(eastBiomeId) || !isJungleCompatible(southBiomeId) || !isJungleCompatible(westBiomeId))
{
return JUNGLE_EDGE;
}
if (BOPLayerUtil.isOcean(northBiomeId) || BOPLayerUtil.isOcean(eastBiomeId) || BOPLayerUtil.isOcean(southBiomeId) || BOPLayerUtil.isOcean(westBiomeId))
{
return getBiomeIdIfPresent(BOPBiomes.mangrove, biomeId);
}
}
else if (biomeId != MOUNTAINS && biomeId != WOODED_MOUNTAINS && biomeId != MOUNTAIN_EDGE)
{
@ -103,10 +98,6 @@ public enum BOPShoreLayer implements ICastleTransformer
}
else
{
if (key == Biomes.JUNGLE || key == Biomes.JUNGLE_HILLS || key == Biomes.JUNGLE_EDGE || key == Biomes.MODIFIED_JUNGLE || key == Biomes.BAMBOO_JUNGLE || key == Biomes.BAMBOO_JUNGLE_HILLS || key == Biomes.MODIFIED_JUNGLE_EDGE)
{
return getBiomeIdIfPresent(BOPBiomes.mangrove, biomeId);
}
if (key == Biomes.TAIGA || key == Biomes.TAIGA_MOUNTAINS || key == Biomes.TAIGA_HILLS || key == Biomes.GIANT_TREE_TAIGA || key == Biomes.GIANT_SPRUCE_TAIGA || key == Biomes.GIANT_TREE_TAIGA_HILLS || key == Biomes.GIANT_SPRUCE_TAIGA_HILLS || key == Biomes.BIRCH_FOREST_HILLS || key == Biomes.BIRCH_FOREST || key == Biomes.TALL_BIRCH_HILLS || key == Biomes.TALL_BIRCH_FOREST || key == Biomes.DARK_FOREST_HILLS || key == Biomes.DARK_FOREST)
{
return getBiomeIdIfPresent(BOPBiomes.gravel_beach, biomeId);

View file

@ -16,8 +16,8 @@ import biomesoplenty.common.world.layer.traits.IBOPContextExtended;
public enum RainfallNoiseLayer implements IBOPAreaTransformer0
{
SMALL_ZONES(0.20D),
MEDIUM_ZONES(0.10D),
LARGE_ZONES(0.05D);
MEDIUM_ZONES(0.05D),
LARGE_ZONES(0.01D);
private final double scale;

View file

@ -16,8 +16,8 @@ import biomesoplenty.common.world.layer.traits.IBOPContextExtended;
public enum TemperatureNoiseLayer implements IBOPAreaTransformer0
{
SMALL_ZONES(0.20D),
MEDIUM_ZONES(0.10D),
LARGE_ZONES(0.05D);
MEDIUM_ZONES(0.05D),
LARGE_ZONES(0.01D);
private final double scale;

View file

@ -51,6 +51,7 @@ public class BiomesOPlenty
private void commonSetup(final FMLCommonSetupEvent event)
{
ModEntities.setup();
ModVanillaCompat.setup();
}

View file

@ -123,67 +123,58 @@ public class ModBiomes
BiomeRegistry.finalizeRegistrations(BiomeRegistry.RegistrationType.TECHNICAL_BIOME);
// Both a standard biome and a technical biome
registerBiome(new MangroveBiome(), "mangrove");
registerBiome(new BayouMangrove(), "bayou_mangrove");
//Overworld Biomes
registerBiome(new AlpsBiome(), "alps");
registerBiome(new BayouBiome(), "bayou");
registerBiome(new BogBiome(), "bog");
registerBiome(new BorealForestBiome(), "boreal_forest");
registerBiome(new ChaparralBiome(), "chaparral");
registerBiome(new CherryBlossomGroveBiome(), "cherry_blossom_grove");
registerBiome(new ColdDesertBiome(), "cold_desert");
registerBiome(new ConiferousForestBiome(), "coniferous_forest");
registerBiome(new ConiferousLakesBiome(), "coniferous_lakes");
registerBiome(new DeadForestBiome(), "dead_forest");
registerBiome(new DenseBayouBiome(), "dense_bayou");
registerBiome(new DrylandBiome(), "dryland");
registerBiome(new DrySteppeBiome(), "dry_steppe");
registerBiome(new FirClearingBiome(), "fir_clearing");
registerBiome(new FloodplainBiome(), "floodplain");
registerBiome(new FlowerMeadowBiome(), "flower_meadow");
registerBiome(new FungalJungleBiome(), "fungal_jungle");
registerBiome(new GrasslandBiome(), "grassland");
registerBiome(new GroveBiome(), "grove");
registerBiome(new HighlandBiome(), "highland");
registerBiome(new HighlandMoorBiome(), "highland_moor");
registerBiome(new JadeCliffsBiome(), "jade_cliffs");
registerBiome(new LavenderFieldBiome(), "lavender_field");
registerBiome(new LushDesertBiome(), "lush_desert");
registerBiome(new LushGrasslandBiome(), "lush_grassland");
registerBiome(new LushSwampBiome(), "lush_swamp");
registerBiome(new MapleWoodsBiome(), "maple_woods");
registerBiome(new MarshBiome(), "marsh");
registerBiome(new MeadowBiome(), "meadow");
registerBiome(new MireBiome(), "mire");
registerBiome(new MuskegBiome(), "muskeg");
registerBiome(new MysticGroveBiome(), "mystic_grove");
registerBiome(new MysticPlainsBiome(), "mystic_plains");
registerBiome(new OminousWoodsBiome(), "ominous_woods");
registerBiome(new OriginValleyBiome(), "origin_valley");
registerBiome(new OutbackBiome(), "outback");
registerBiome(new OvergrownCliffsBiome(), "overgrown_cliffs");
registerBiome(new PastureBiome(), "pasture");
registerBiome(new PoppyFieldBiome(), "poppy_field");
registerBiome(new PrairieBiome(), "prairie");
registerBiome(new PumpkinPatchBiome(), "pumpkin_patch");
registerBiome(new RainbowHillsBiome(), "rainbow_hills");
registerBiome(new RainforestBiome(), "rainforest");
registerBiome(new RainforestClearingBiome(), "rainforest_clearing");
registerBiome(new RainforestCliffsBiome(), "rainforest_cliffs");
registerBiome(new RedwoodForestBiome(), "redwood_forest");
registerBiome(new ScrublandBiome(), "scrubland");
registerBiome(new SeasonalForestBiome(), "seasonal_forest");
registerBiome(new ShieldBiome(), "shield");
registerBiome(new ShroomyWetlandBiome(), "shroomy_wetland");
registerBiome(new ShrublandBiome(), "shrubland");
registerBiome(new ShrublandHillsBiome(), "shrubland_hills");
registerBiome(new SilkgladeBiome(), "silkglade");
registerBiome(new SnowyConiferousForestBiome(), "snowy_coniferous_forest");
registerBiome(new SnowyFirClearingBiome(), "snowy_fir_clearing");
registerBiome(new SnowyForestBiome(), "snowy_forest");
registerBiome(new SteppeBiome(), "steppe");
registerBiome(new TemperateRainforestBiome(), "temperate_rainforest");
registerBiome(new TemperateRainforestHillsBiome(), "temperate_rainforest_hills");
registerBiome(new TropicalRainforestBiome(), "tropical_rainforest");
registerBiome(new TropicsBiome(), "tropics");
registerBiome(new TundraBiome(), "tundra");
registerBiome(new TundraBasinBiome(), "tundra_basin");
registerBiome(new TundraBogBiome(), "tundra_bog");
registerBiome(new VolcanoBiome(), "volcano");
registerBiome(new WastelandBiome(), "wasteland");
registerBiome(new WetlandBiome(), "wetland");
registerBiome(new WoodlandBiome(), "woodland");
registerBiome(new WetlandMarshBiome(), "wetland_marsh");
//Nether Biomes
registerBiome(new CrystallineChasmBiome(), "crystalline_chasm");
@ -195,13 +186,32 @@ public class ModBiomes
BiomeRegistry.finalizeRegistrations(BiomeRegistry.RegistrationType.STANDARD_BIOME);
//Sub/Island Biomes (Note: Rarity supports two decimal places)
registerSubBiome(coniferous_forest, fir_clearing, 0.38F, 100);
registerSubBiome(bayou, dense_bayou, 1.0F, 100);
registerSubBiome(bayou, bayou_mangrove, 1.0F, 100);
registerSubBiome(coniferous_forest, fir_clearing, 0.75F, 100);
registerSubBiome(coniferous_forest, coniferous_lakes, 1.0F, 100);
registerSubBiome(highland, highland_moor, 0.75F, 100);
registerSubBiome(meadow, flower_meadow, 0.5F, 100);
registerSubBiome(prairie, pasture, 1.0F, 100);
registerSubBiome(seasonal_forest, pumpkin_patch, 0.45F, 100);
registerSubBiome(snowy_coniferous_forest, snowy_fir_clearing, 0.5F, 100);
registerSubBiome(temperate_rainforest, temperate_rainforest_hills, 0.8F, 100);
registerSubBiome(dryland, dry_steppe, 1.0F, 100);
registerSubBiome(mystic_grove, mystic_plains, 0.75F, 100);
registerSubBiome(rainforest, rainforest_cliffs, 2.0F, 100);
registerSubBiome(rainforest, rainforest_clearing, 2.0F, 100);
registerSubBiome(shrubland, shrubland_hills, 0.75F, 100);
registerSubBiome(tundra, tundra_basin, 1.5F, 100);
registerSubBiome(tundra, tundra_bog, 2.0F, 100);
registerSubBiome(wetland, wetland_marsh, 1.25F, 100);
registerSubBiome(wetland, shroomy_wetland, 1.0F, 100);
BiomeRegistry.configureSubBiomes();
BiomeRegistry.finalizeRegistrations(BiomeRegistry.RegistrationType.SUB_BIOME);
@ -227,16 +237,18 @@ public class ModBiomes
// Set up vanilla biomes
registerVanillaBiome(Biomes.SNOWY_TUNDRA, BOPClimates.ICE_CAP, 10);
registerVanillaBiome(Biomes.MOUNTAINS, BOPClimates.TUNDRA, 7);
registerVanillaBiome(Biomes.SNOWY_TAIGA, BOPClimates.TUNDRA, 10);
registerVanillaBiome(Biomes.FROZEN_OCEAN, BOPClimates.ICE_CAP, 3);
registerVanillaBiome(Biomes.MOUNTAINS, BOPClimates.TUNDRA, 10);
registerVanillaBiome(Biomes.SNOWY_TAIGA, BOPClimates.TUNDRA, 7);
registerVanillaBiome(Biomes.TAIGA, BOPClimates.WET_BOREAL, 10);
registerVanillaBiome(Biomes.GIANT_TREE_TAIGA, BOPClimates.DRY_BOREAL, 5);
registerVanillaBiome(Biomes.DARK_FOREST, BOPClimates.WET_TEMPERATE, 5);
registerVanillaBiome(Biomes.SWAMP, BOPClimates.WET_TEMPERATE, 7);
registerVanillaBiome(Biomes.BIRCH_FOREST, BOPClimates.DRY_TEMPERATE, 7);
registerVanillaBiome(Biomes.FOREST, BOPClimates.COOL_TEMPERATE, 10);
registerVanillaBiome(Biomes.BIRCH_FOREST, BOPClimates.COOL_TEMPERATE, 7);
registerVanillaBiome(Biomes.PLAINS, BOPClimates.WARM_TEMPERATE, 10);
registerVanillaBiome(Biomes.JUNGLE, BOPClimates.TROPICAL, 15);
registerVanillaBiome(Biomes.SWAMP, BOPClimates.SUBTROPICAL, 7);
registerVanillaBiome(Biomes.LUKEWARM_OCEAN, BOPClimates.SUBTROPICAL, 3);
registerVanillaBiome(Biomes.JUNGLE, BOPClimates.TROPICAL, 10);
registerVanillaBiome(Biomes.SAVANNA, BOPClimates.SAVANNA, 10);
registerVanillaBiome(Biomes.DESERT, BOPClimates.HOT_DESERT, 15);
registerVanillaBiome(Biomes.BADLANDS_PLATEAU, BOPClimates.HOT_DESERT, 10);
@ -259,19 +271,17 @@ public class ModBiomes
registerVillagerType(alps, VillagerType.SNOW);
registerVillagerType(alps_foothills, VillagerType.SNOW);
registerVillagerType(bayou, VillagerType.SWAMP);
registerVillagerType(bog, VillagerType.SWAMP);
registerVillagerType(boreal_forest, VillagerType.TAIGA);
registerVillagerType(chaparral, VillagerType.PLAINS);
registerVillagerType(bayou_mangrove, VillagerType.SWAMP);
registerVillagerType(cherry_blossom_grove, VillagerType.PLAINS);
registerVillagerType(cold_desert, VillagerType.SNOW);
registerVillagerType(coniferous_forest, VillagerType.TAIGA);
registerVillagerType(coniferous_lakes, VillagerType.TAIGA);
registerVillagerType(dead_forest, VillagerType.TAIGA);
registerVillagerType(dense_bayou, VillagerType.SWAMP);
registerVillagerType(dryland, VillagerType.SAVANNA);
registerVillagerType(dry_steppe, VillagerType.SAVANNA);
registerVillagerType(fir_clearing, VillagerType.TAIGA);
registerVillagerType(floodplain, VillagerType.JUNGLE);
registerVillagerType(flower_meadow, VillagerType.TAIGA);
registerVillagerType(fungal_jungle, VillagerType.JUNGLE);
registerVillagerType(grassland, VillagerType.PLAINS);
registerVillagerType(gravel_beach, VillagerType.PLAINS);
registerVillagerType(grove, VillagerType.PLAINS);
registerVillagerType(highland, VillagerType.PLAINS);
@ -279,48 +289,41 @@ public class ModBiomes
registerVillagerType(jade_cliffs, VillagerType.PLAINS);
registerVillagerType(lavender_field, VillagerType.PLAINS);
registerVillagerType(lush_desert, VillagerType.DESERT);
registerVillagerType(lush_grassland, VillagerType.JUNGLE);
registerVillagerType(lush_swamp, VillagerType.JUNGLE);
registerVillagerType(mangrove, VillagerType.SWAMP);
registerVillagerType(maple_woods, VillagerType.TAIGA);
registerVillagerType(marsh, VillagerType.SWAMP);
registerVillagerType(meadow, VillagerType.TAIGA);
registerVillagerType(mire, VillagerType.SWAMP);
registerVillagerType(muskeg, VillagerType.SNOW);
registerVillagerType(mystic_grove, VillagerType.PLAINS);
registerVillagerType(mystic_plains, VillagerType.PLAINS);
registerVillagerType(ominous_woods, VillagerType.SWAMP);
registerVillagerType(orchard, VillagerType.PLAINS);
registerVillagerType(origin_valley, VillagerType.PLAINS);
registerVillagerType(outback, VillagerType.SAVANNA);
registerVillagerType(overgrown_cliffs, VillagerType.JUNGLE);
registerVillagerType(pasture, VillagerType.PLAINS);
registerVillagerType(poppy_field, VillagerType.PLAINS);
registerVillagerType(prairie, VillagerType.PLAINS);
registerVillagerType(pumpkin_patch, VillagerType.PLAINS);
registerVillagerType(rainbow_hills, VillagerType.PLAINS);
registerVillagerType(rainforest, VillagerType.JUNGLE);
registerVillagerType(rainforest_clearing, VillagerType.JUNGLE);
registerVillagerType(rainforest_cliffs, VillagerType.JUNGLE);
registerVillagerType(redwood_forest, VillagerType.PLAINS);
registerVillagerType(redwood_forest_edge, VillagerType.PLAINS);
registerVillagerType(scrubland, VillagerType.SAVANNA);
registerVillagerType(seasonal_forest, VillagerType.PLAINS);
registerVillagerType(shield, VillagerType.TAIGA);
registerVillagerType(shroomy_wetland, VillagerType.SWAMP);
registerVillagerType(shrubland, VillagerType.PLAINS);
registerVillagerType(shrubland_hills, VillagerType.PLAINS);
registerVillagerType(silkglade, VillagerType.SWAMP);
registerVillagerType(snowy_coniferous_forest, VillagerType.SNOW);
registerVillagerType(snowy_fir_clearing, VillagerType.SNOW);
registerVillagerType(snowy_forest, VillagerType.SNOW);
registerVillagerType(steppe, VillagerType.PLAINS);
registerVillagerType(temperate_rainforest, VillagerType.PLAINS);
registerVillagerType(temperate_rainforest_hills, VillagerType.PLAINS);
registerVillagerType(tropical_rainforest, VillagerType.JUNGLE);
registerVillagerType(tropic_beach, VillagerType.JUNGLE);
registerVillagerType(tropics, VillagerType.JUNGLE);
registerVillagerType(tundra, VillagerType.TAIGA);
registerVillagerType(tundra_basin, VillagerType.TAIGA);
registerVillagerType(tundra_bog, VillagerType.TAIGA);
registerVillagerType(volcanic_plains, VillagerType.PLAINS);
registerVillagerType(volcano, VillagerType.PLAINS);
registerVillagerType(wasteland, VillagerType.DESERT);
registerVillagerType(wetland, VillagerType.SWAMP);
registerVillagerType(woodland, VillagerType.PLAINS);
registerVillagerType(wetland_marsh, VillagerType.SWAMP);
}
private static void registerVillagerType(RegistryKey<Biome> key, VillagerType type)

View file

@ -7,40 +7,85 @@
******************************************************************************/
package biomesoplenty.init;
import net.minecraft.entity.Entity;
import biomesoplenty.common.entity.DeerEntity;
import biomesoplenty.common.entity.DeerRenderer;
import biomesoplenty.common.entity.TurkeyEntity;
import biomesoplenty.common.entity.TurkeyRenderer;
import biomesoplenty.common.util.inventory.ItemGroupBOP;
import biomesoplenty.core.BiomesOPlenty;
import com.google.common.collect.Lists;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntitySpawnPlacementRegistry;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.ai.attributes.GlobalEntityTypeAttributes;
import net.minecraft.entity.passive.AnimalEntity;
import net.minecraft.item.Item;
import net.minecraft.item.SpawnEggItem;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.gen.Heightmap;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.client.registry.RenderingRegistry;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.registries.ForgeRegistries;
import java.util.List;
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
public class ModEntities
{
private static List<EntityType> entities = Lists.newArrayList();
private static List<Item> spawnEggs = Lists.newArrayList();
public static EntityType<DeerEntity> deer = addEntity(DeerEntity::new, EntityClassification.CREATURE, 1.0F, 1.6F, "deer", 0x765134, 0xF7EFE6);
public static EntityType<TurkeyEntity> turkey = addEntity(TurkeyEntity::new, EntityClassification.CREATURE, 0.9F, 1.4F, "turkey", 0x6B492E, 0xE23131);
public static <T extends AnimalEntity> EntityType<T> addEntity(EntityType.IFactory<T> type, EntityClassification classification, float width, float height, String name, int eggPrimary, int eggSecondary)
{
EntityType<T> entity = EntityType.Builder.of(type, classification).sized(width, height).build(BiomesOPlenty.MOD_ID + ":" + name);
entity.setRegistryName(new ResourceLocation(BiomesOPlenty.MOD_ID, name));
entities.add(entity);
Item spawnEgg = new SpawnEggItem(entity, eggPrimary, eggSecondary, (new Item.Properties()).tab(ItemGroupBOP.instance));
spawnEgg.setRegistryName(new ResourceLocation(BiomesOPlenty.MOD_ID, name + "_spawn_egg"));
spawnEggs.add(spawnEgg);
return entity;
}
@SubscribeEvent
public static void registerEntities(RegistryEvent.Register<EntityType<?>> event)
{
// BOPEntities.boat_bop = EntityType.Builder.<BoatEntityBOP>of(BoatEntityBOP::new, EntityClassification.MISC).setTrackingRange(80).setUpdateInterval(3).setShouldReceiveVelocityUpdates(true).sized(1.375f, 0.5625f).setCustomClientFactory(BoatEntityBOP::new).build(MOD_ID + ":boat_bop");
// BOPEntities.boat_bop.setRegistryName("boat_bop");
// ForgeRegistries.ENTITIES.register(BOPEntities.boat_bop);
for (EntityType entity : entities)
{
ForgeRegistries.ENTITIES.register(entity);
}
}
public static <T extends Entity> EntityType<T> createEntity(EntityType.IFactory<T> factory, EntityClassification classification, String name, int trackingRange, int updateFrequency, boolean sendsVelocityUpdates)
@SubscribeEvent
public static void registerSpawnEggs(RegistryEvent.Register<Item> event)
{
ResourceLocation location = new ResourceLocation("biomesoplenty", name);
EntityType<T> type = EntityType.Builder.<T>of(factory, classification).setTrackingRange(trackingRange).setUpdateInterval(updateFrequency).setShouldReceiveVelocityUpdates(sendsVelocityUpdates).build(location.toString());
type.setRegistryName(name);
ForgeRegistries.ENTITIES.register(type);
return type;
for (Item spawnEgg : spawnEggs)
{
ForgeRegistries.ITEMS.register(spawnEgg);
}
}
@OnlyIn(Dist.CLIENT)
public static void registerRendering()
{
// RenderingRegistry.registerEntityRenderingHandler((EntityType<? extends BoatEntityBOP>)BOPEntities.boat_bop, BoatRendererBOP::new);
RenderingRegistry.registerEntityRenderingHandler(deer, DeerRenderer::new);
RenderingRegistry.registerEntityRenderingHandler(turkey, TurkeyRenderer::new);
}
public static void setup()
{
EntitySpawnPlacementRegistry.register(deer, EntitySpawnPlacementRegistry.PlacementType.ON_GROUND, Heightmap.Type.MOTION_BLOCKING_NO_LEAVES, DeerEntity::checkAnimalSpawnRules);
EntitySpawnPlacementRegistry.register(turkey, EntitySpawnPlacementRegistry.PlacementType.ON_GROUND, Heightmap.Type.MOTION_BLOCKING_NO_LEAVES, TurkeyEntity::checkAnimalSpawnRules);
GlobalEntityTypeAttributes.put(deer, DeerEntity.createAttributes().build());
GlobalEntityTypeAttributes.put(turkey, TurkeyEntity.createAttributes().build());
}
}

View file

@ -11,7 +11,10 @@ import biomesoplenty.common.item.MusicDiscItemBOP;
import biomesoplenty.common.util.inventory.ItemGroupBOP;
import net.minecraft.entity.item.BoatEntity;
import net.minecraft.item.BoatItem;
import net.minecraft.item.Food;
import net.minecraft.item.Item;
import net.minecraft.potion.EffectInstance;
import net.minecraft.potion.Effects;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
@ -22,6 +25,11 @@ import static biomesoplenty.api.item.BOPItems.*;
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
public class ModItems
{
public static final Food VENISON = (new Food.Builder()).nutrition(3).saturationMod(0.3F).meat().build();
public static final Food COOKED_VENISON = (new Food.Builder()).nutrition(8).saturationMod(0.8F).meat().build();
public static final Food TURKEY_LEG = (new Food.Builder()).nutrition(1).saturationMod(0.15F).effect(new EffectInstance(Effects.HUNGER, 600, 0), 0.3F).meat().build();
public static final Food COOKED_TURKEY_LEG = (new Food.Builder()).nutrition(3).saturationMod(0.3F).meat().build();
@SubscribeEvent
public static void registerItems(RegistryEvent.Register<Item> event)
{
@ -42,6 +50,11 @@ public class ModItems
umbran_boat = registerItem(new BoatItem(BoatEntity.Type.OAK, (new Item.Properties()).stacksTo(1).tab(ItemGroupBOP.instance)), "umbran_boat");
hellbark_boat = registerItem(new BoatItem(BoatEntity.Type.OAK, (new Item.Properties()).stacksTo(1).tab(ItemGroupBOP.instance)), "hellbark_boat");
venison = registerItem(new Item(new Item.Properties().tab(ItemGroupBOP.instance).food(VENISON)), "venison");
cooked_venison = registerItem(new Item(new Item.Properties().tab(ItemGroupBOP.instance).food(COOKED_VENISON)), "cooked_venison");
turkey_leg = registerItem(new Item(new Item.Properties().tab(ItemGroupBOP.instance).food(TURKEY_LEG)), "turkey_leg");
cooked_turkey_leg = registerItem(new Item(new Item.Properties().tab(ItemGroupBOP.instance).food(COOKED_TURKEY_LEG)), "cooked_turkey_leg");
bop_icon = registerItem(new Item(new Item.Properties()), "bop_icon");
}

View file

@ -10,12 +10,13 @@ package biomesoplenty.init;
import biomesoplenty.core.BiomesOPlenty;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.SoundEvent;
import net.minecraft.util.SoundEvents;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.registries.ForgeRegistries;
import static biomesoplenty.api.sound.BOPSounds.music_disc_wanderer;
import static biomesoplenty.api.sound.BOPSounds.*;
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
@ -25,6 +26,13 @@ public class ModSounds
public static void registerSounds(RegistryEvent.Register<SoundEvent> event)
{
music_disc_wanderer = registerSound("music_disc.wanderer");
deer_hurt = registerSound("entity.biomesoplenty.deer.hurt");
deer_dead = registerSound("entity.biomesoplenty.deer.dead");
deer_step = SoundEvents.LLAMA_STEP;
turkey_ambient = registerSound("entity.biomesoplenty.turkey.ambient");
turkey_hurt = registerSound("entity.biomesoplenty.turkey.hurt");
turkey_dead = registerSound("entity.biomesoplenty.turkey.dead");
turkey_step = SoundEvents.CHICKEN_STEP;
}
private static SoundEvent registerSound(String soundName)

View file

@ -10,20 +10,20 @@
"biome.biomesoplenty.alps": "Alps",
"biome.biomesoplenty.alps_foothills": "Alps Foothills",
"biome.biomesoplenty.bayou": "Bayou",
"biome.biomesoplenty.bog": "Bog",
"biome.biomesoplenty.boreal_forest": "Boreal Forest",
"biome.biomesoplenty.chaparral": "Chaparral",
"biome.biomesoplenty.bayou_mangrove": "Bayou Mangrove",
"biome.biomesoplenty.cherry_blossom_grove": "Cherry Blossom Grove",
"biome.biomesoplenty.cold_desert": "Cold Desert",
"biome.biomesoplenty.coniferous_forest": "Coniferous Forest",
"biome.biomesoplenty.coniferous_lakes": "Coniferous Lakes",
"biome.biomesoplenty.crystalline_chasm": "Crystalline Chasm",
"biome.biomesoplenty.dead_forest": "Dead Forest",
"biome.biomesoplenty.dead_plains": "Dead Plains",
"biome.biomesoplenty.dense_bayou": "Dense Bayou",
"biome.biomesoplenty.dryland": "Dryland",
"biome.biomesoplenty.dry_steppe": "Dry Steppe",
"biome.biomesoplenty.fir_clearing": "Fir Clearing",
"biome.biomesoplenty.floodplain": "Floodplain",
"biome.biomesoplenty.flower_meadow": "Flower Meadow",
"biome.biomesoplenty.fungal_jungle": "Fungal Jungle",
"biome.biomesoplenty.grassland": "Grassland",
"biome.biomesoplenty.gravel_beach": "Gravel Beach",
"biome.biomesoplenty.grove": "Grove",
"biome.biomesoplenty.highland": "Highland",
@ -31,67 +31,66 @@
"biome.biomesoplenty.jade_cliffs": "Jade Cliffs",
"biome.biomesoplenty.lavender_field": "Lavender Field",
"biome.biomesoplenty.lush_desert": "Lush Desert",
"biome.biomesoplenty.lush_grassland": "Lush Grassland",
"biome.biomesoplenty.lush_swamp": "Lush Swamp",
"biome.biomesoplenty.mangrove": "Mangrove",
"biome.biomesoplenty.maple_woods": "Maple Woods",
"biome.biomesoplenty.marsh": "Marsh",
"biome.biomesoplenty.meadow": "Meadow",
"biome.biomesoplenty.mire": "Mire",
"biome.biomesoplenty.muskeg": "Muskeg",
"biome.biomesoplenty.mystic_grove": "Mystic Grove",
"biome.biomesoplenty.mystic_plains": "Mystic Plains",
"biome.biomesoplenty.ominous_woods": "Ominous Woods",
"biome.biomesoplenty.orchard": "Orchard",
"biome.biomesoplenty.origin_valley": "Origin Valley",
"biome.biomesoplenty.outback": "Outback",
"biome.biomesoplenty.overgrown_cliffs": "Overgrown Cliffs",
"biome.biomesoplenty.pasture": "Pasture",
"biome.biomesoplenty.poppy_field": "Poppy Field",
"biome.biomesoplenty.prairie": "Prairie",
"biome.biomesoplenty.pumpkin_patch": "Pumpkin Patch",
"biome.biomesoplenty.rainbow_hills": "Rainbow Hills",
"biome.biomesoplenty.rainforest": "Rainforest",
"biome.biomesoplenty.rainforest_clearing": "Rainforest Clearing",
"biome.biomesoplenty.rainforest_cliffs": "Rainforest Cliffs",
"biome.biomesoplenty.redwood_forest": "Redwood Forest",
"biome.biomesoplenty.redwood_forest_edge": "Redwood Forest Edge",
"biome.biomesoplenty.scrubland": "Scrubland",
"biome.biomesoplenty.seasonal_forest": "Seasonal Forest",
"biome.biomesoplenty.shield": "Shield",
"biome.biomesoplenty.shroomy_wetland": "Shroomy Wetland",
"biome.biomesoplenty.shrubland": "Shrubland",
"biome.biomesoplenty.shrubland_hills": "Shrubland Hills",
"biome.biomesoplenty.silkglade": "Silkglade",
"biome.biomesoplenty.snowy_coniferous_forest": "Snowy Coniferous Forest",
"biome.biomesoplenty.snowy_fir_clearing": "Snowy Fir Clearing",
"biome.biomesoplenty.snowy_forest": "Snowy Forest",
"biome.biomesoplenty.steppe": "Steppe",
"biome.biomesoplenty.temperate_rainforest": "Temperate Rainforest",
"biome.biomesoplenty.temperate_rainforest_hills": "Temperate Rainforest Hills",
"biome.biomesoplenty.tropical_rainforest": "Tropical Rainforest",
"biome.biomesoplenty.tropic_beach": "Tropic Beach",
"biome.biomesoplenty.tropics": "Tropics",
"biome.biomesoplenty.tundra": "Tundra",
"biome.biomesoplenty.tundra_basin": "Tundra Basin",
"biome.biomesoplenty.tundra_bog": "Tundra Bog",
"biome.biomesoplenty.undergrowth": "Undergrowth",
"biome.biomesoplenty.visceral_heap": "Visceral Heap",
"biome.biomesoplenty.volcanic_plains": "Volcanic Plains",
"biome.biomesoplenty.volcano": "Volcano",
"biome.biomesoplenty.wasteland": "Wasteland",
"biome.biomesoplenty.wetland": "Wetland",
"biome.biomesoplenty.wetland_marsh": "Wetland Marsh",
"biome.biomesoplenty.withered_abyss": "Withered Abyss",
"biome.biomesoplenty.woodland": "Woodland",
"item.biomesoplenty.bop_icon": "BOP Icon",
"item.biomesoplenty.cherry_boat": "Cherry Boat",
"item.biomesoplenty.cooked_turkey_leg": "Cooked Turkey Leg",
"item.biomesoplenty.cooked_venison": "Cooked Venison",
"item.biomesoplenty.dead_boat": "Dead Boat",
"item.biomesoplenty.deer_spawn_egg": "Deer Spawn Egg",
"item.biomesoplenty.fir_boat": "Fir Boat",
"item.biomesoplenty.hellbark_boat": "Hellbark Boat",
"item.biomesoplenty.jacaranda_boat": "Jacaranda Boat",
"item.biomesoplenty.magic_boat": "Magic Boat",
"item.biomesoplenty.mahogany_boat": "Mahogany Boat",
"item.biomesoplenty.mud_brick": "Mud Brick",
"item.biomesoplenty.mud_ball": "Mud Ball",
"item.biomesoplenty.mud_brick": "Mud Brick",
"item.biomesoplenty.music_disc_wanderer": "Music Disc",
"item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer",
"item.biomesoplenty.palm_boat": "Palm Boat",
"item.biomesoplenty.redwood_boat": "Redwood Boat",
"item.biomesoplenty.turkey_leg": "Raw Turkey Leg",
"item.biomesoplenty.turkey_spawn_egg": "Turkey Spawn Egg",
"item.biomesoplenty.umbran_boat": "Umbran Boat",
"item.biomesoplenty.venison": "Raw Venison",
"item.biomesoplenty.willow_boat": "Willow Boat",
"block.biomesoplenty.black_sand": "Black Sand",
@ -403,5 +402,7 @@
"commands.biomesoplenty.tpbiome.success": "Teleported %s to biome %s at (%s, %s, %s)",
"commands.biomesoplenty.tpbiome.error": "Couldn't find biome %s!",
"entity.biomesoplenty.boat_bop": "Boat"
"entity.biomesoplenty.boat_bop": "Boat",
"entity.biomesoplenty.deer": "Deer",
"entity.biomesoplenty.turkey": "Turkey"
}

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "biomesoplenty:item/cooked_turkey_leg"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "biomesoplenty:item/cooked_venison"
}
}

View file

@ -0,0 +1,3 @@
{
"parent": "item/template_spawn_egg"
}

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "biomesoplenty:item/turkey_leg"
}
}

View file

@ -0,0 +1,3 @@
{
"parent": "item/template_spawn_egg"
}

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "biomesoplenty:item/venison"
}
}

View file

@ -6,5 +6,30 @@
"stream": true
}
]
},
"entity.biomesoplenty.turkey.ambient": {
"sounds": [
"biomesoplenty:entity/turkey/ambient"
]
},
"entity.biomesoplenty.turkey.hurt": {
"sounds": [
"biomesoplenty:entity/turkey/hurt"
]
},
"entity.biomesoplenty.turkey.dead": {
"sounds": [
"biomesoplenty:entity/turkey/dead"
]
},
"entity.biomesoplenty.deer.hurt": {
"sounds": [
"biomesoplenty:entity/deer/hurt"
]
},
"entity.biomesoplenty.deer.dead": {
"sounds": [
"biomesoplenty:entity/deer/dead"
]
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 B

After

Width:  |  Height:  |  Size: 291 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 251 B

After

Width:  |  Height:  |  Size: 337 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 435 B

After

Width:  |  Height:  |  Size: 432 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 362 B

After

Width:  |  Height:  |  Size: 473 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 531 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 543 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 411 B

View file

@ -33,22 +33,10 @@
"biome": "biomesoplenty:bayou"
}
},
"bog": {
"bayou_mangrove": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:bog"
}
},
"boreal_forest": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:boreal_forest"
}
},
"chaparral": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:chaparral"
"biome": "biomesoplenty:bayou_mangrove"
}
},
"cherry_blossom_grove": {
@ -56,18 +44,18 @@
"conditions": {
"biome": "biomesoplenty:cherry_blossom_grove"
}
},
"cold_desert": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:cold_desert"
}
},
"coniferous_forest": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:coniferous_forest"
}
},
"coniferous_lakes": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:coniferous_lakes"
}
},
"crystalline_chasm": {
"trigger": "minecraft:location",
@ -80,24 +68,30 @@
"conditions": {
"biome": "biomesoplenty:dead_forest"
}
},
"dense_bayou": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:dense_bayou"
}
},
"dryland": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:dryland"
}
},
"dry_steppe": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:dry_steppe"
}
},
"fir_clearing": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:fir_clearing"
}
},
"floodplain": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:floodplain"
}
},
"flower_meadow": {
"trigger": "minecraft:location",
@ -110,12 +104,6 @@
"conditions": {
"biome": "biomesoplenty:fungal_jungle"
}
},
"grassland": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:grassland"
}
},
"gravel_beach": {
"trigger": "minecraft:location",
@ -158,48 +146,18 @@
"conditions": {
"biome": "biomesoplenty:lush_desert"
}
},
"lush_grassland": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:lush_grassland"
}
},
"lush_swamp": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:lush_swamp"
}
},
"mangrove": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:mangrove"
}
},
"maple_woods": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:maple_woods"
}
},
"marsh": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:marsh"
}
},
"meadow": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:meadow"
}
},
"mire": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:mire"
}
},
"muskeg": {
"trigger": "minecraft:location",
@ -212,6 +170,12 @@
"conditions": {
"biome": "biomesoplenty:mystic_grove"
}
},
"mystic_plains": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:mystic_plains"
}
},
"ominous_woods": {
"trigger": "minecraft:location",
@ -230,18 +194,6 @@
"conditions": {
"biome": "biomesoplenty:origin_valley"
}
},
"outback": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:outback"
}
},
"overgrown_cliffs": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:overgrown_cliffs"
}
},
"pasture": {
"trigger": "minecraft:location",
@ -278,6 +230,18 @@
"conditions": {
"biome": "biomesoplenty:rainforest"
}
},
"rainforest_clearing": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:rainforest_clearing"
}
},
"rainforest_cliffs": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:rainforest_cliffs"
}
},
"redwood_forest": {
"trigger": "minecraft:location",
@ -290,12 +254,6 @@
"conditions": {
"biome": "biomesoplenty:redwood_forest_edge"
}
},
"scrubland": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:scrubland"
}
},
"seasonal_forest": {
"trigger": "minecraft:location",
@ -303,10 +261,10 @@
"biome": "biomesoplenty:seasonal_forest"
}
},
"shield": {
"shroomy_wetland": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:shield"
"biome": "biomesoplenty:shroomy_wetland"
}
},
"shrubland": {
@ -314,6 +272,12 @@
"conditions": {
"biome": "biomesoplenty:shrubland"
}
},
"shrubland_hills": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:shrubland_hills"
}
},
"silkglade": {
"trigger": "minecraft:location",
@ -332,36 +296,6 @@
"conditions": {
"biome": "biomesoplenty:snowy_fir_clearing"
}
},
"snowy_forest": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:snowy_forest"
}
},
"steppe": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:steppe"
}
},
"temperate_rainforest": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:temperate_rainforest"
}
},
"temperate_rainforest_hills": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:temperate_rainforest_hills"
}
},
"tropical_rainforest": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:tropical_rainforest"
}
},
"tropic_beach": {
"trigger": "minecraft:location",
@ -380,6 +314,18 @@
"conditions": {
"biome": "biomesoplenty:tundra"
}
},
"tundra_basin": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:tundra_basin"
}
},
"tundra_bog": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:tundra_bog"
}
},
"undergrowth": {
"trigger": "minecraft:location",
@ -416,18 +362,18 @@
"conditions": {
"biome": "biomesoplenty:wetland"
}
},
"wetland_marsh": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:wetland_marsh"
}
},
"withered_abyss": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:withered_abyss"
}
},
"woodland": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:woodland"
}
}
},
"rewards": {

View file

@ -32,22 +32,10 @@
"biome": "biomesoplenty:bayou"
}
},
"bog": {
"bayou_mangrove": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:bog"
}
},
"boreal_forest": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:boreal_forest"
}
},
"chaparral": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:chaparral"
"biome": "biomesoplenty:bayou_mangrove"
}
},
"cherry_blossom_grove": {
@ -55,18 +43,18 @@
"conditions": {
"biome": "biomesoplenty:cherry_blossom_grove"
}
},
"cold_desert": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:cold_desert"
}
},
"coniferous_forest": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:coniferous_forest"
}
},
"coniferous_lakes": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:coniferous_lakes"
}
},
"crystalline_chasm": {
"trigger": "minecraft:location",
@ -79,24 +67,30 @@
"conditions": {
"biome": "biomesoplenty:dead_forest"
}
},
"dense_bayou": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:dense_bayou"
}
},
"dryland": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:dryland"
}
},
"dry_steppe": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:dry_steppe"
}
},
"fir_clearing": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:fir_clearing"
}
},
"floodplain": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:floodplain"
}
},
"flower_meadow": {
"trigger": "minecraft:location",
@ -109,12 +103,6 @@
"conditions": {
"biome": "biomesoplenty:fungal_jungle"
}
},
"grassland": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:grassland"
}
},
"gravel_beach": {
"trigger": "minecraft:location",
@ -157,48 +145,18 @@
"conditions": {
"biome": "biomesoplenty:lush_desert"
}
},
"lush_grassland": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:lush_grassland"
}
},
"lush_swamp": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:lush_swamp"
}
},
"mangrove": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:mangrove"
}
},
"maple_woods": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:maple_woods"
}
},
"marsh": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:marsh"
}
},
"meadow": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:meadow"
}
},
"mire": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:mire"
}
},
"muskeg": {
"trigger": "minecraft:location",
@ -211,6 +169,12 @@
"conditions": {
"biome": "biomesoplenty:mystic_grove"
}
},
"mystic_plains": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:mystic_plains"
}
},
"ominous_woods": {
"trigger": "minecraft:location",
@ -229,12 +193,6 @@
"conditions": {
"biome": "biomesoplenty:origin_valley"
}
},
"outback": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:outback"
}
},
"overgrown_cliffs": {
"trigger": "minecraft:location",
@ -277,6 +235,18 @@
"conditions": {
"biome": "biomesoplenty:rainforest"
}
},
"rainforest_clearing": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:rainforest_clearing"
}
},
"rainforest_cliffs": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:rainforest_cliffs"
}
},
"redwood_forest": {
"trigger": "minecraft:location",
@ -289,12 +259,6 @@
"conditions": {
"biome": "biomesoplenty:redwood_forest_edge"
}
},
"scrubland": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:scrubland"
}
},
"seasonal_forest": {
"trigger": "minecraft:location",
@ -302,10 +266,10 @@
"biome": "biomesoplenty:seasonal_forest"
}
},
"shield": {
"shroomy_wetland": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:shield"
"biome": "biomesoplenty:shroomy_wetland"
}
},
"shrubland": {
@ -313,6 +277,12 @@
"conditions": {
"biome": "biomesoplenty:shrubland"
}
},
"shrubland_hills": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:shrubland_hills"
}
},
"silkglade": {
"trigger": "minecraft:location",
@ -331,36 +301,6 @@
"conditions": {
"biome": "biomesoplenty:snowy_fir_clearing"
}
},
"snowy_forest": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:snowy_forest"
}
},
"steppe": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:steppe"
}
},
"temperate_rainforest": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:temperate_rainforest"
}
},
"temperate_rainforest_hills": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:temperate_rainforest_hills"
}
},
"tropical_rainforest": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:tropical_rainforest"
}
},
"tropic_beach": {
"trigger": "minecraft:location",
@ -379,6 +319,18 @@
"conditions": {
"biome": "biomesoplenty:tundra"
}
},
"tundra_basin": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:tundra_basin"
}
},
"tundra_bog": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:tundra_bog"
}
},
"undergrowth": {
"trigger": "minecraft:location",
@ -415,18 +367,18 @@
"conditions": {
"biome": "biomesoplenty:wetland"
}
},
"wetland_marsh": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:wetland_marsh"
}
},
"withered_abyss": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:withered_abyss"
}
},
"woodland": {
"trigger": "minecraft:location",
"conditions": {
"biome": "biomesoplenty:woodland"
}
}
},
"requirements": [
@ -434,20 +386,18 @@
"alps",
"alps_foothills",
"bayou",
"bog",
"boreal_forest",
"chaparral",
"bayou_mangrove",
"cherry_blossom_grove",
"cold_desert",
"coniferous_forest",
"coniferous_lakes",
"crystalline_chasm",
"dead_forest",
"dense_bayou",
"dryland",
"dry_steppe",
"fir_clearing",
"floodplain",
"flower_meadow",
"fungal_jungle",
"grassland",
"gravel_beach",
"grove",
"highland",
@ -455,51 +405,44 @@
"jade_cliffs",
"lavender_field",
"lush_desert",
"lush_grassland",
"lush_swamp",
"mangrove",
"maple_woods",
"marsh",
"meadow",
"mire",
"muskeg",
"mystic_grove",
"mystic_plains",
"ominous_woods",
"orchard",
"origin_valley",
"outback",
"overgrown_cliffs",
"pasture",
"poppy_field",
"prairie",
"pumpkin_patch",
"rainbow_hills",
"rainforest",
"rainforest_clearing",
"rainforest_cliffs",
"redwood_forest",
"redwood_forest_edge",
"scrubland",
"seasonal_forest",
"shield",
"shroomy_wetland",
"shrubland",
"shrubland_hills",
"silkglade",
"snowy_coniferous_forest",
"snowy_fir_clearing",
"snowy_forest",
"steppe",
"temperate_rainforest",
"temperate_rainforest_hills",
"tropical_rainforest",
"tropic_beach",
"tropics",
"tundra",
"tundra_basin",
"tundra_bog",
"undergrowth",
"visceral_heap",
"volcanic_plains",
"volcano",
"wasteland",
"wetland",
"withered_abyss",
"woodland"
"wetland_marsh",
"withered_abyss"
]
]
}

Some files were not shown because too many files have changed in this diff Show more