- Re-added the Cold Desert and Grassland biomes
- Added Tall Dead Forest, Shroomy Wetland, and Grassland Clover Patch sub-biomes - Removed the Jade Grassland, Mushroomy Muskeg, Silkglade/Silkglade Nest, Overgrown Fungal Jungle, and Wooded Wasteland - Reworked Redwood and Bayou tree generation (Thanks to SuperCoder79!) - Added Spanish Moss, Clover, and Huge Clover blocks - Tweaked the Muskeg, Seasonal Forest, Woodland, and respective sub-biomes
|
@ -22,6 +22,7 @@ public class BOPBiomes
|
|||
public static RegistryKey<Biome> bayou_mangrove = register("bayou_mangrove");
|
||||
public static RegistryKey<Biome> burnt_forest = register("burnt_forest");
|
||||
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");
|
||||
|
@ -35,6 +36,8 @@ public class BOPBiomes
|
|||
public static RegistryKey<Biome> fungal_field = register("fungal_field");
|
||||
public static RegistryKey<Biome> fungal_jungle = register("fungal_jungle");
|
||||
public static RegistryKey<Biome> golden_prairie = register("golden_prairie");
|
||||
public static RegistryKey<Biome> grassland = register("grassland");
|
||||
public static RegistryKey<Biome> grassland_clover_patch = register("grassland_clover_patch");
|
||||
public static RegistryKey<Biome> gravel_beach = register("gravel_beach");
|
||||
public static RegistryKey<Biome> grove = register("grove");
|
||||
public static RegistryKey<Biome> grove_clearing = register("grove_clearing");
|
||||
|
@ -43,7 +46,6 @@ public class BOPBiomes
|
|||
public static RegistryKey<Biome> highland_crag = register("highland_crag");
|
||||
public static RegistryKey<Biome> highland_moor = register("highland_moor");
|
||||
public static RegistryKey<Biome> jade_cliffs = register("jade_cliffs");
|
||||
public static RegistryKey<Biome> jade_grassland = register("jade_grassland");
|
||||
public static RegistryKey<Biome> lavender_field = register("lavender_field");
|
||||
public static RegistryKey<Biome> lavender_forest = register("lavender_forest");
|
||||
public static RegistryKey<Biome> lush_desert = register("lush_desert");
|
||||
|
@ -52,14 +54,12 @@ public class BOPBiomes
|
|||
public static RegistryKey<Biome> meadow = register("meadow");
|
||||
public static RegistryKey<Biome> meadow_forest = register("meadow_forest");
|
||||
public static RegistryKey<Biome> muskeg = register("muskeg");
|
||||
public static RegistryKey<Biome> mushroomy_muskeg = register("mushroomy_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> ominous_mire = register("ominous_mire");
|
||||
public static RegistryKey<Biome> orchard = register("orchard");
|
||||
public static RegistryKey<Biome> origin_valley = register("origin_valley");
|
||||
public static RegistryKey<Biome> overgrown_fungal_jungle = register("overgrown_fungal_jungle");
|
||||
public static RegistryKey<Biome> prairie = register("prairie");
|
||||
public static RegistryKey<Biome> rainbow_hills = register("rainbow_hills");
|
||||
public static RegistryKey<Biome> rainforest = register("rainforest");
|
||||
|
@ -72,15 +72,14 @@ public class BOPBiomes
|
|||
public static RegistryKey<Biome> seasonal_forest = register("seasonal_forest");
|
||||
public static RegistryKey<Biome> seasonal_orchard = register("seasonal_orchard");
|
||||
public static RegistryKey<Biome> seasonal_pumpkin_patch = register("seasonal_pumpkin_patch");
|
||||
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> silkglade_nest = register("silkglade_nest");
|
||||
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_maple_forest = register("snowy_maple_forest");
|
||||
public static RegistryKey<Biome> tall_dead_forest = register("tall_dead_forest");
|
||||
public static RegistryKey<Biome> tropic_beach = register("tropic_beach");
|
||||
public static RegistryKey<Biome> tropic_plains = register("tropic_plains");
|
||||
public static RegistryKey<Biome> tropics = register("tropics");
|
||||
public static RegistryKey<Biome> tundra = register("tundra");
|
||||
public static RegistryKey<Biome> tundra_basin = register("tundra_basin");
|
||||
|
@ -91,7 +90,6 @@ public class BOPBiomes
|
|||
public static RegistryKey<Biome> wetland = register("wetland");
|
||||
public static RegistryKey<Biome> wetland_forest = register("wetland_forest");
|
||||
public static RegistryKey<Biome> wooded_scrubland = register("wooded_scrubland");
|
||||
public static RegistryKey<Biome> wooded_wasteland = register("wooded_wasteland");
|
||||
public static RegistryKey<Biome> woodland = register("woodland");
|
||||
|
||||
public static RegistryKey<Biome> crystalline_chasm = register("crystalline_chasm");
|
||||
|
|
|
@ -290,9 +290,13 @@ public class BOPBlocks
|
|||
public static Block goldenrod;
|
||||
|
||||
public static Block willow_vine;
|
||||
public static Block spanish_moss;
|
||||
public static Block spanish_moss_plant;
|
||||
|
||||
public static Block sprout;
|
||||
public static Block bush;
|
||||
public static Block clover;
|
||||
public static Block huge_clover_petal;
|
||||
public static Block dune_grass;
|
||||
public static Block desert_grass;
|
||||
public static Block dead_grass;
|
||||
|
@ -336,6 +340,7 @@ public class BOPBlocks
|
|||
public static Block potted_wilted_lily;
|
||||
public static Block potted_burning_blossom;
|
||||
public static Block potted_sprout;
|
||||
public static Block potted_clover;
|
||||
public static Block potted_toadstool;
|
||||
public static Block potted_glowshroom;
|
||||
}
|
||||
|
|
|
@ -56,10 +56,10 @@ public class BambooBlossomGroveBiome extends BiomeTemplate
|
|||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BAMBOO_BLOSSOM_GROVE_TREES);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CHERRY_BLOSSOM_GROVE_FLOWERS);
|
||||
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_3);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_2);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_5);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SHORT_BAMBOO_5);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_15);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE);
|
||||
|
|
|
@ -56,9 +56,9 @@ public class CherryBlossomGroveBiome extends BiomeTemplate
|
|||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CHERRY_BLOSSOM_GROVE_TREES);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CHERRY_BLOSSOM_GROVE_FLOWERS);
|
||||
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_3);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_4);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PEONY_1);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_5);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE);
|
||||
|
|
|
@ -11,21 +11,18 @@ import biomesoplenty.api.enums.BOPClimates;
|
|||
import biomesoplenty.common.biome.BiomeTemplate;
|
||||
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
|
||||
import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders;
|
||||
import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders;
|
||||
import net.minecraft.entity.EntityClassification;
|
||||
import net.minecraft.entity.EntityType;
|
||||
import net.minecraft.particles.ParticleTypes;
|
||||
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 WoodedWastelandBiome extends BiomeTemplate
|
||||
public class ColdDesertBiome extends BiomeTemplate
|
||||
{
|
||||
public WoodedWastelandBiome()
|
||||
public ColdDesertBiome()
|
||||
{
|
||||
this.addWeight(BOPClimates.HOT_DESERT, 1);
|
||||
this.addWeight(BOPClimates.ICE_CAP, 7);
|
||||
this.setBeachBiome(null);
|
||||
this.setRiverBiome(null);
|
||||
}
|
||||
|
@ -33,34 +30,36 @@ public class WoodedWastelandBiome extends BiomeTemplate
|
|||
@Override
|
||||
protected void configureBiome(Biome.Builder builder)
|
||||
{
|
||||
builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.DESERT).depth(0.0F).scale(-0.11F).temperature(2.0F).downfall(0.0F);
|
||||
builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.ICY).depth(0.0F).scale(-0.075F).temperature(0.25F).downfall(0.0F);
|
||||
|
||||
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x433721).waterFogColor(0x0C0C03).fogColor(0xDBDDC1).skyColor(0x70ADEF).grassColorOverride(0xAD9364).foliageColorOverride(0xB5A76C).ambientParticle(new ParticleEffectAmbience(ParticleTypes.MYCELIUM, 0.00357F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
|
||||
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());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
|
||||
{
|
||||
builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.WASTELAND);
|
||||
builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.COLD_DESERT);
|
||||
|
||||
// Structures
|
||||
builder.addStructureStart(StructureFeatures.VILLAGE_SNOWY);
|
||||
builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST);
|
||||
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
|
||||
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_JUNGLE);
|
||||
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD);
|
||||
|
||||
// Underground
|
||||
DefaultBiomeFeatures.addDefaultCarvers(builder);
|
||||
DefaultBiomeFeatures.addDefaultLakes(builder);
|
||||
|
||||
builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_LAVA);
|
||||
|
||||
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
|
||||
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
|
||||
DefaultBiomeFeatures.addDefaultOres(builder);
|
||||
DefaultBiomeFeatures.addDefaultSoftDisks(builder);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
// Vegetation
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WASTELAND_TREES);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WASTELAND_FLOWERS);
|
||||
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WASTELAND_GRASS_2);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WASTELAND_GRASS_1);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
|
@ -73,9 +72,16 @@ public class WoodedWastelandBiome extends BiomeTemplate
|
|||
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
|
||||
{
|
||||
// Entities
|
||||
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.HUSK, 80, 4, 4));
|
||||
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));
|
||||
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.STRAY, 80, 4, 4));
|
||||
}
|
||||
}
|
|
@ -48,6 +48,9 @@ public class DeepBayouBiome extends BiomeTemplate
|
|||
// Underground
|
||||
DefaultBiomeFeatures.addDefaultCarvers(builder);
|
||||
DefaultBiomeFeatures.addDefaultLakes(builder);
|
||||
|
||||
builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_UNCOMMON);
|
||||
|
||||
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
|
||||
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
|
||||
DefaultBiomeFeatures.addDefaultOres(builder);
|
||||
|
|
|
@ -29,7 +29,7 @@ public class DenseWoodlandBiome extends BiomeTemplate
|
|||
{
|
||||
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.2F).scale(0.15F).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());
|
||||
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xA7C047).foliageColorOverride(0x92AF1A).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -8,40 +8,43 @@
|
|||
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 biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders;
|
||||
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.ConfiguredSurfaceBuilders;
|
||||
|
||||
public class TropicPlainsBiome extends BiomeTemplate
|
||||
public class GrasslandBiome extends BiomeTemplate
|
||||
{
|
||||
public TropicPlainsBiome()
|
||||
public GrasslandBiome()
|
||||
{
|
||||
this.setBeachBiome(BOPBiomes.tropic_beach);
|
||||
this.setRiverBiome(null);
|
||||
this.addWeight(BOPClimates.COOL_TEMPERATE, 3);
|
||||
this.setBeachBiome(BOPBiomes.gravel_beach);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configureBiome(Biome.Builder builder)
|
||||
{
|
||||
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.NONE).depth(0.1F).scale(0.2F).temperature(0.95F).downfall(1.0F);
|
||||
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(4445678).waterFogColor(270131).fogColor(0xB2EDFF).skyColor(0x66BCFF).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
|
||||
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(BOPConfiguredSurfaceBuilders.TROPICS);
|
||||
builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS);
|
||||
|
||||
// Structures
|
||||
builder.addStructureStart(StructureFeatures.VILLAGE_PLAINS);
|
||||
builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST);
|
||||
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
|
||||
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_JUNGLE);
|
||||
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD);
|
||||
|
||||
// Underground
|
||||
DefaultBiomeFeatures.addDefaultCarvers(builder);
|
||||
|
@ -50,17 +53,12 @@ public class TropicPlainsBiome extends BiomeTemplate
|
|||
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
|
||||
DefaultBiomeFeatures.addDefaultOres(builder);
|
||||
|
||||
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.WHITE_SAND_DISK_EXTRA);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
// Vegetation
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TROPIC_FLOWERS);
|
||||
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BLUE_HYDRANGEA_1);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ROSE_BUSH_1);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_24);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_64);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_6);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE_DESERT);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
|
@ -73,14 +71,16 @@ public class TropicPlainsBiome extends BiomeTemplate
|
|||
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
|
||||
{
|
||||
// Entities
|
||||
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4));
|
||||
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.PARROT, 40, 1, 2));
|
||||
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.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));
|
|
@ -7,56 +7,56 @@
|
|||
******************************************************************************/
|
||||
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 biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders;
|
||||
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 net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders;
|
||||
|
||||
public class JadeGrasslandBiome extends BiomeTemplate
|
||||
public class GrasslandCloverPatchBiome extends BiomeTemplate
|
||||
{
|
||||
public JadeGrasslandBiome()
|
||||
public GrasslandCloverPatchBiome()
|
||||
{
|
||||
this.setBeachBiome(null);
|
||||
this.setBeachBiome(BOPBiomes.gravel_beach);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configureBiome(Biome.Builder builder)
|
||||
{
|
||||
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(0.3F).scale(0.2F).temperature(0.8F).downfall(0.85F);
|
||||
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(0.0F).scale(0.1F).temperature(0.6F).downfall(0.7F);
|
||||
|
||||
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0xBBD1D5).skyColor(0xB7CCAD).grassColorOverride(0x7CA568).foliageColorOverride(0x8BB76E).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
|
||||
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(BOPConfiguredSurfaceBuilders.DEEP_GRASS);
|
||||
builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS);
|
||||
|
||||
// Structures
|
||||
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
|
||||
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN);
|
||||
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD);
|
||||
|
||||
// Underground
|
||||
DefaultBiomeFeatures.addDefaultCarvers(builder);
|
||||
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
|
||||
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
|
||||
DefaultBiomeFeatures.addDefaultOres(builder);
|
||||
DefaultBiomeFeatures.addDefaultSoftDisks(builder);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
// Vegetation
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_24);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_PATCH_FLOWERS);
|
||||
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_250);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.HUGE_CLOVER);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
|
@ -73,6 +73,8 @@ public class JadeGrasslandBiome extends BiomeTemplate
|
|||
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));
|
|
@ -25,7 +25,7 @@ public class MuskegBiome extends BiomeTemplate
|
|||
{
|
||||
public MuskegBiome()
|
||||
{
|
||||
this.addWeight(BOPClimates.TUNDRA, 1);
|
||||
this.addWeight(BOPClimates.ICE_CAP, 1);
|
||||
this.setBeachBiome(null);
|
||||
}
|
||||
|
||||
|
@ -66,7 +66,7 @@ public class MuskegBiome extends BiomeTemplate
|
|||
// Vegetation
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MUSKEG_TREES);
|
||||
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_1);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
|
|
|
@ -65,6 +65,7 @@ public class MysticGroveBiome extends BiomeTemplate
|
|||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MYSTIC_GROVE_FLOWERS);
|
||||
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BLUE_HYDRANGEA_1);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_3);
|
||||
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);
|
||||
|
|
|
@ -64,6 +64,7 @@ public class MysticPlainsBiome extends BiomeTemplate
|
|||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MYSTIC_PLAINS_FLOWERS);
|
||||
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BLUE_HYDRANGEA_4);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_6);
|
||||
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);
|
||||
|
|
|
@ -1,97 +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.ConfiguredSurfaceBuilders;
|
||||
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
|
||||
|
||||
public class OvergrownFungalJungleBiome extends BiomeTemplate
|
||||
{
|
||||
public OvergrownFungalJungleBiome()
|
||||
{
|
||||
this.setBeachBiome(null);
|
||||
this.setGrassColorFunction(this::getGrassColor);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configureBiome(Biome.Builder builder)
|
||||
{
|
||||
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.JUNGLE).depth(0.1F).scale(0.05F).temperature(0.9F).downfall(0.9F);
|
||||
|
||||
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4445678).waterFogColor(270131).fogColor(12638463).skyColor(calculateSkyColor(0.9F)).grassColorOverride(0x4AA2F9).foliageColorOverride(0x4ADCF9).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
|
||||
{
|
||||
builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS);
|
||||
|
||||
// Structures
|
||||
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
|
||||
|
||||
// Underground
|
||||
DefaultBiomeFeatures.addDefaultCarvers(builder);
|
||||
|
||||
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
|
||||
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
|
||||
DefaultBiomeFeatures.addDefaultOres(builder);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
// Vegetation
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.OVERGROWN_FUNGAL_JUNGLE_TREES);
|
||||
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GLOWSHROOM_EXTRA);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.HUGE_GLOWSHROOM_EXTRA);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_14);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MYCELIUM_SPLATTER);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SMALL_GLOWSHROOM_EXTRA);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_24);
|
||||
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.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));
|
||||
}
|
||||
|
||||
public int getGrassColor(double x, double z)
|
||||
{
|
||||
double d0 = Biome.BIOME_INFO_NOISE.getValue(x * 0.0225D, z * 0.0225D, false);
|
||||
return d0 < -0.1D ? 0x4AA2F9 : 0x4DD6CA;
|
||||
}
|
||||
}
|
|
@ -58,6 +58,7 @@ public class RainbowHillsBiome extends BiomeTemplate
|
|||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINBOW_HILLS_FLOWERS);
|
||||
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BLUE_HYDRANGEA_4);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_6);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GOLDENROD_2);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_2);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PEONY_1);
|
||||
|
|
|
@ -54,7 +54,10 @@ public class ScrublandBiome extends BiomeTemplate
|
|||
////////////////////////////////////////////////////////////
|
||||
|
||||
// Vegetation
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SCRUBLAND_FLOWERS);
|
||||
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DESERT_GRASS_10);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SCRUB_NORMAL);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -35,7 +35,7 @@ public class SeasonalForestBiome extends BiomeTemplate
|
|||
{
|
||||
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.2F).scale(0.2F).temperature(0.4F).downfall(0.8F);
|
||||
|
||||
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());
|
||||
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0xDD9A4A).foliageColorOverride(0xD1B24A).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -33,7 +33,7 @@ public class SeasonalOrchardBiome extends BiomeTemplate
|
|||
{
|
||||
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.0F).scale(0.0F).temperature(0.4F).downfall(0.8F);
|
||||
|
||||
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());
|
||||
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0xDD9A4A).foliageColorOverride(0xD1B24A).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -60,7 +60,6 @@ public class SeasonalOrchardBiome extends BiomeTemplate
|
|||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SEASONAL_ORCHARD_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.REED_10);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_EXTRA);
|
||||
|
|
|
@ -32,7 +32,7 @@ public class SeasonalPumpkinPatchBiome 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(0xB5B952).foliageColorOverride(0xA3A627).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
|
||||
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0xDD9A4A).foliageColorOverride(0xD1B24A).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -57,7 +57,6 @@ public class SeasonalPumpkinPatchBiome extends BiomeTemplate
|
|||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SEASONAL_PUMPKIN_PATCH_TREES);
|
||||
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BIG_PUMPKIN);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_10);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PUMPKIN_PATCH);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_5);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_10);
|
||||
|
|
|
@ -18,9 +18,9 @@ import net.minecraft.world.gen.feature.Features;
|
|||
import net.minecraft.world.gen.feature.structure.StructureFeatures;
|
||||
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders;
|
||||
|
||||
public class MushroomyMuskegBiome extends BiomeTemplate
|
||||
public class ShroomyWetlandBiome extends BiomeTemplate
|
||||
{
|
||||
public MushroomyMuskegBiome()
|
||||
public ShroomyWetlandBiome()
|
||||
{
|
||||
this.setBeachBiome(null);
|
||||
}
|
||||
|
@ -28,9 +28,9 @@ public class MushroomyMuskegBiome extends BiomeTemplate
|
|||
@Override
|
||||
protected void configureBiome(Biome.Builder builder)
|
||||
{
|
||||
builder.precipitation(Biome.RainType.SNOW).biomeCategory(Biome.Category.ICY).depth(-0.175F).scale(-0.05F).temperature(-0.25F).downfall(0.6F);
|
||||
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(0.0F).scale(0.0F).temperature(0.6F).downfall(0.7F);
|
||||
|
||||
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(-0.25F)).grassColorOverride(0x94966E).foliageColorOverride(0x8D9B6B).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
|
||||
|
@ -45,29 +45,34 @@ public class MushroomyMuskegBiome extends BiomeTemplate
|
|||
|
||||
// Underground
|
||||
DefaultBiomeFeatures.addDefaultCarvers(builder);
|
||||
DefaultBiomeFeatures.addDefaultLakes(builder);
|
||||
|
||||
builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_UNCOMMON);
|
||||
|
||||
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
|
||||
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
|
||||
DefaultBiomeFeatures.addDefaultOres(builder);
|
||||
DefaultBiomeFeatures.addSwampClayDisk(builder);
|
||||
|
||||
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.DISK_CLAY);
|
||||
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.DISK_GRAVEL);
|
||||
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.MUD_DISK);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
// Vegetation
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MUSHROOMY_MUSKEG_TREES);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SHROOMY_WETLAND_TREES);
|
||||
|
||||
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.LILY_PAD_5);
|
||||
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.TOADSTOOL_EXTRA);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_5);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.HUGE_BROWN_MUSHROOM_EXTRA);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PODZOL_SPLATTER);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SMALL_BROWN_MUSHROOM);
|
||||
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);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
|
|
@ -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.*;
|
||||
import net.minecraft.world.gen.feature.structure.StructureFeatures;
|
||||
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
|
||||
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders;
|
||||
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
|
||||
|
||||
public class SilkgladeBiome extends BiomeTemplate
|
||||
{
|
||||
public SilkgladeBiome()
|
||||
{
|
||||
this.addWeight(BOPClimates.DRY_TEMPERATE, 1);
|
||||
this.setBeachBiome(null);
|
||||
this.setRiverBiome(null);
|
||||
this.setGrassColorFunction(this::getGrassColor);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configureBiome(Biome.Builder builder)
|
||||
{
|
||||
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.1F).scale(0.25F).temperature(0.75F).downfall(0.2F);
|
||||
|
||||
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x82826A).waterFogColor(0x0D0F09).fogColor(12638463).skyColor(calculateSkyColor(0.75F)).grassColorOverride(0x939F76).foliageColorOverride(0xDEE1C6).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
|
||||
{
|
||||
builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS);
|
||||
|
||||
// Structures
|
||||
builder.addStructureStart(StructureFeatures.SWAMP_HUT);
|
||||
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
|
||||
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP);
|
||||
|
||||
// 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.SILKGLADE_TREES);
|
||||
|
||||
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.RED_MUSHROOM_NORMAL);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
// Other Features
|
||||
DefaultBiomeFeatures.addDefaultSprings(builder);
|
||||
DefaultBiomeFeatures.addSurfaceFreezing(builder);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
|
||||
{
|
||||
// Entities
|
||||
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.CAVE_SPIDER, 50, 4, 4));
|
||||
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4));
|
||||
}
|
||||
|
||||
private int getGrassColor(double x, double z)
|
||||
{
|
||||
double d0 = Biome.BIOME_INFO_NOISE.getValue(x * 0.0225D, z * 0.0225D, false);
|
||||
return d0 < -0.1D ? 0xB2B39F : 0x939F76;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
|
@ -16,25 +17,21 @@ 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.ConfiguredSurfaceBuilders;
|
||||
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
|
||||
|
||||
public class SilkgladeNestBiome extends BiomeTemplate
|
||||
public class TallDeadForestBiome extends BiomeTemplate
|
||||
{
|
||||
public SilkgladeNestBiome()
|
||||
public TallDeadForestBiome()
|
||||
{
|
||||
this.setBeachBiome(null);
|
||||
this.setRiverBiome(null);
|
||||
this.setGrassColorFunction(this::getGrassColor);
|
||||
this.setBeachBiome(BOPBiomes.gravel_beach);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configureBiome(Biome.Builder builder)
|
||||
{
|
||||
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.5F).scale(0.2F).temperature(0.75F).downfall(0.2F);
|
||||
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.5F).scale(0.1F).temperature(0.3F).downfall(0.3F);
|
||||
|
||||
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x82826A).waterFogColor(0x0D0F09).fogColor(12638463).skyColor(calculateSkyColor(0.75F)).grassColorOverride(0x939F76).foliageColorOverride(0xDEE1C6).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
|
||||
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.3F)).grassColorOverride(0xBAAD64).foliageColorOverride(0xB7B763).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -43,13 +40,14 @@ public class SilkgladeNestBiome extends BiomeTemplate
|
|||
builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS);
|
||||
|
||||
// Structures
|
||||
builder.addStructureStart(StructureFeatures.SWAMP_HUT);
|
||||
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
|
||||
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP);
|
||||
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD);
|
||||
|
||||
// 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,13 +56,10 @@ public class SilkgladeNestBiome extends BiomeTemplate
|
|||
////////////////////////////////////////////////////////////
|
||||
|
||||
// Vegetation
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SILKGLADE_NEST_TREES);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_DEAD_FOREST_TREES);
|
||||
|
||||
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, Features.BROWN_MUSHROOM_NORMAL);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
|
@ -79,13 +74,12 @@ public class SilkgladeNestBiome extends BiomeTemplate
|
|||
// Entities
|
||||
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.CAVE_SPIDER, 50, 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));
|
||||
}
|
||||
|
||||
private int getGrassColor(double x, double z)
|
||||
{
|
||||
double d0 = Biome.BIOME_INFO_NOISE.getValue(x * 0.0225D, z * 0.0225D, false);
|
||||
return d0 < -0.1D ? 0xB2B39F : 0x939F76;
|
||||
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4));
|
||||
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1));
|
||||
}
|
||||
}
|
|
@ -32,7 +32,7 @@ public class TundraBasinBiome extends BiomeTemplate
|
|||
@Override
|
||||
protected void configureBiome(Biome.Builder builder)
|
||||
{
|
||||
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.0F).scale(-0.075F).temperature(0.2F).downfall(0.5F);
|
||||
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.0F).scale(0.0F).temperature(0.2F).downfall(0.5F);
|
||||
|
||||
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.2F)).grassColorOverride(0xC08359).foliageColorOverride(0xC5975C).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
|
||||
}
|
||||
|
@ -40,7 +40,7 @@ public class TundraBasinBiome extends BiomeTemplate
|
|||
@Override
|
||||
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
|
||||
{
|
||||
builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.GRAVEL_FULL);
|
||||
builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.STONE_BASIN);
|
||||
|
||||
// Structures
|
||||
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
|
||||
|
@ -49,7 +49,9 @@ public class TundraBasinBiome extends BiomeTemplate
|
|||
// Underground
|
||||
DefaultBiomeFeatures.addDefaultCarvers(builder);
|
||||
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
|
||||
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
|
||||
|
||||
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.ORE_GRAVEL);
|
||||
|
||||
DefaultBiomeFeatures.addDefaultOres(builder);
|
||||
DefaultBiomeFeatures.addDefaultSoftDisks(builder);
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ public class WastelandBiome extends BiomeTemplate
|
|||
|
||||
// Structures
|
||||
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
|
||||
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_JUNGLE);
|
||||
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD);
|
||||
|
||||
// Underground
|
||||
DefaultBiomeFeatures.addDefaultCarvers(builder);
|
||||
|
@ -56,6 +56,9 @@ public class WastelandBiome extends BiomeTemplate
|
|||
////////////////////////////////////////////////////////////
|
||||
|
||||
// Vegetation
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WASTELAND_TREES);
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WASTELAND_FLOWERS);
|
||||
|
||||
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WASTELAND_GRASS_2);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -31,7 +31,7 @@ public class WoodlandBiome extends BiomeTemplate
|
|||
{
|
||||
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());
|
||||
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xA7C047).foliageColorOverride(0x92AF1A).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -8,10 +8,9 @@
|
|||
package biomesoplenty.common.block;
|
||||
|
||||
import biomesoplenty.api.block.BOPBlocks;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.block.BushBlock;
|
||||
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
|
||||
import biomesoplenty.common.world.gen.feature.BOPFeatures;
|
||||
import net.minecraft.block.*;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.Items;
|
||||
|
@ -24,12 +23,17 @@ import net.minecraft.util.math.shapes.VoxelShape;
|
|||
import net.minecraft.world.IBlockReader;
|
||||
import net.minecraft.world.IWorldReader;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.gen.feature.ConfiguredFeature;
|
||||
import net.minecraft.world.gen.feature.IFeatureConfig;
|
||||
import net.minecraft.world.gen.feature.NoFeatureConfig;
|
||||
import net.minecraft.world.server.ServerWorld;
|
||||
import net.minecraftforge.common.IPlantable;
|
||||
import net.minecraftforge.common.PlantType;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Random;
|
||||
|
||||
public class FoliageBlockBOP extends BushBlock implements IPlantable
|
||||
public class FoliageBlockBOP extends BushBlock implements IPlantable, IGrowable
|
||||
{
|
||||
protected static final VoxelShape NORMAL = Block.box(2.0D, 0.0D, 2.0D, 14.0D, 13.0D, 14.0D);
|
||||
protected static final VoxelShape SHORT = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 7.0D, 15.0D);
|
||||
|
@ -44,7 +48,7 @@ public class FoliageBlockBOP extends BushBlock implements IPlantable
|
|||
{
|
||||
Block block = state.getBlock();
|
||||
|
||||
if (block == BOPBlocks.desert_grass)
|
||||
if (block == BOPBlocks.desert_grass || block == BOPBlocks.clover)
|
||||
{
|
||||
return SHORT;
|
||||
}
|
||||
|
@ -106,4 +110,51 @@ public class FoliageBlockBOP extends BushBlock implements IPlantable
|
|||
{
|
||||
return PlantType.PLAINS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isValidBonemealTarget(IBlockReader worldIn, BlockPos pos, BlockState state, boolean isClient)
|
||||
{
|
||||
Block block = state.getBlock();
|
||||
|
||||
if (block == BOPBlocks.clover)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBonemealSuccess(World worldIn, Random rand, BlockPos pos, BlockState state)
|
||||
{
|
||||
Block block = state.getBlock();
|
||||
|
||||
if (block == BOPBlocks.clover) { return (double)rand.nextFloat() < 0.4D; }
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void performBonemeal(ServerWorld world, Random rand, BlockPos pos, BlockState state)
|
||||
{
|
||||
Block block = state.getBlock();
|
||||
|
||||
if (block == BOPBlocks.clover) { this.growHugeClover(world, rand, pos, state); }
|
||||
}
|
||||
|
||||
public boolean growHugeClover(ServerWorld world, Random rand, BlockPos pos, BlockState state)
|
||||
{
|
||||
world.removeBlock(pos, false);
|
||||
ConfiguredFeature<NoFeatureConfig, ?> configuredfeature = BOPFeatures.HUGE_CLOVER.configured(IFeatureConfig.NONE);
|
||||
|
||||
if (configuredfeature.place(world, world.getChunkSource().getGenerator(), rand, pos))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
world.setBlock(pos, state, 3);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,78 @@
|
|||
/*******************************************************************************
|
||||
* 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.block;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.block.HorizontalBlock;
|
||||
import net.minecraft.item.BlockItemUseContext;
|
||||
import net.minecraft.state.DirectionProperty;
|
||||
import net.minecraft.state.StateContainer;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.shapes.ISelectionContext;
|
||||
import net.minecraft.util.math.shapes.VoxelShape;
|
||||
import net.minecraft.world.IBlockReader;
|
||||
import net.minecraft.world.IWorld;
|
||||
import net.minecraft.world.IWorldReader;
|
||||
import net.minecraftforge.common.IPlantable;
|
||||
import net.minecraftforge.common.PlantType;
|
||||
|
||||
public class HugeCloverPetalBlock extends HorizontalBlock implements IPlantable
|
||||
{
|
||||
public static final DirectionProperty FACING = HorizontalBlock.FACING;
|
||||
public static final VoxelShape SHAPE = Block.box(0.0D, 13.0D, 0.0D, 16.0D, 15.0D, 16.0D);
|
||||
|
||||
public HugeCloverPetalBlock(Properties properties)
|
||||
{
|
||||
super(properties);
|
||||
this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH));
|
||||
}
|
||||
|
||||
public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) {
|
||||
return SHAPE;
|
||||
}
|
||||
|
||||
protected void createBlockStateDefinition(StateContainer.Builder<Block, BlockState> builder) {
|
||||
builder.add(FACING);
|
||||
}
|
||||
|
||||
public BlockState updateShape(BlockState p_196271_1_, Direction p_196271_2_, BlockState p_196271_3_, IWorld p_196271_4_, BlockPos p_196271_5_, BlockPos p_196271_6_) {
|
||||
return !p_196271_1_.canSurvive(p_196271_4_, p_196271_5_) ? Blocks.AIR.defaultBlockState() : super.updateShape(p_196271_1_, p_196271_2_, p_196271_3_, p_196271_4_, p_196271_5_, p_196271_6_);
|
||||
}
|
||||
|
||||
protected boolean mayPlaceOn(BlockState p_200014_1_, IBlockReader p_200014_2_, BlockPos p_200014_3_) {
|
||||
return p_200014_1_.is(Blocks.GRASS_BLOCK) || p_200014_1_.is(Blocks.DIRT) || p_200014_1_.is(Blocks.COARSE_DIRT) || p_200014_1_.is(Blocks.PODZOL) || p_200014_1_.is(Blocks.FARMLAND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canSurvive(BlockState p_196260_1_, IWorldReader p_196260_2_, BlockPos p_196260_3_) {
|
||||
BlockPos blockpos = p_196260_3_.below();
|
||||
if (p_196260_1_.getBlock() == this) //Forge: This function is called during world gen and placement, before this block is set, so if we are not 'here' then assume it's the pre-check.
|
||||
return p_196260_2_.getBlockState(blockpos).canSustainPlant(p_196260_2_, blockpos, Direction.UP, this);
|
||||
return this.mayPlaceOn(p_196260_2_.getBlockState(blockpos), p_196260_2_, blockpos);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlantType getPlantType(IBlockReader world, BlockPos pos)
|
||||
{
|
||||
return PlantType.PLAINS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState getPlant(IBlockReader world, BlockPos pos) {
|
||||
BlockState state = world.getBlockState(pos);
|
||||
if (state.getBlock() != this) return defaultBlockState();
|
||||
return state;
|
||||
}
|
||||
|
||||
public BlockState getStateForPlacement(BlockItemUseContext p_196258_1_) {
|
||||
return this.defaultBlockState().setValue(FACING, p_196258_1_.getHorizontalDirection());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
/*******************************************************************************
|
||||
* 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.block;
|
||||
|
||||
import biomesoplenty.api.block.BOPBlocks;
|
||||
import net.minecraft.block.*;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.item.BlockItemUseContext;
|
||||
import net.minecraft.pathfinding.PathType;
|
||||
import net.minecraft.state.StateContainer;
|
||||
import net.minecraft.tags.BlockTags;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.shapes.VoxelShape;
|
||||
import net.minecraft.world.IBlockReader;
|
||||
import net.minecraft.world.IWorld;
|
||||
import net.minecraft.world.IWorldReader;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class SpanishMossBlock extends AbstractBodyPlantBlock {
|
||||
public static final VoxelShape SHAPE = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D);
|
||||
|
||||
public SpanishMossBlock(AbstractBlock.Properties p_i241195_1_) {
|
||||
super(p_i241195_1_, Direction.DOWN, SHAPE, false);
|
||||
}
|
||||
|
||||
protected AbstractTopPlantBlock getHeadBlock() {
|
||||
return (AbstractTopPlantBlock) BOPBlocks.spanish_moss;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canSurvive(BlockState p_196260_1_, IWorldReader p_196260_2_, BlockPos p_196260_3_) {
|
||||
BlockPos blockpos = p_196260_3_.relative(this.growthDirection.getOpposite());
|
||||
BlockState blockstate = p_196260_2_.getBlockState(blockpos);
|
||||
Block block = blockstate.getBlock();
|
||||
if (!this.canAttachToBlock(block)) {
|
||||
return false;
|
||||
} else {
|
||||
return block == this.getHeadBlock() || block == this.getBodyBlock() || blockstate.getBlock().is(BlockTags.LEAVES) || blockstate.getBlock().is(BlockTags.LOGS);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
/*******************************************************************************
|
||||
* 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.block;
|
||||
|
||||
import biomesoplenty.api.block.BOPBlocks;
|
||||
import net.minecraft.block.*;
|
||||
import net.minecraft.tags.BlockTags;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.shapes.VoxelShape;
|
||||
import net.minecraft.world.IWorldReader;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class SpanishMossBottomBlock extends AbstractTopPlantBlock {
|
||||
protected static final VoxelShape SHAPE = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D);
|
||||
|
||||
public SpanishMossBottomBlock(AbstractBlock.Properties p_i241194_1_) {
|
||||
super(p_i241194_1_, Direction.DOWN, SHAPE, false, 0.01D);
|
||||
}
|
||||
|
||||
protected int getBlocksToGrowWhenBonemealed(Random p_230332_1_) {
|
||||
return PlantBlockHelper.getBlocksToGrowWhenBonemealed(p_230332_1_);
|
||||
}
|
||||
|
||||
protected Block getBodyBlock() {
|
||||
return BOPBlocks.spanish_moss_plant;
|
||||
}
|
||||
|
||||
protected boolean canGrowInto(BlockState p_230334_1_) {
|
||||
return PlantBlockHelper.isValidGrowthState(p_230334_1_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canSurvive(BlockState p_196260_1_, IWorldReader p_196260_2_, BlockPos p_196260_3_) {
|
||||
BlockPos blockpos = p_196260_3_.relative(this.growthDirection.getOpposite());
|
||||
BlockState blockstate = p_196260_2_.getBlockState(blockpos);
|
||||
Block block = blockstate.getBlock();
|
||||
if (!this.canAttachToBlock(block)) {
|
||||
return false;
|
||||
} else {
|
||||
return block == this.getHeadBlock() || block == this.getBodyBlock() || blockstate.getBlock().is(BlockTags.LEAVES) || blockstate.getBlock().is(BlockTags.LOGS);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -48,10 +48,8 @@ public class BOPConfiguredFeatures
|
|||
public static final ConfiguredFeature<?, ?> BIG_RAINBOW_BIRCH_TREE = register("big_rainbow_birch_tree", BOPFeatures.BIG_RAINBOW_BIRCH_TREE.configured(Features.OAK.config()));
|
||||
public static final ConfiguredFeature<?, ?> BIG_WHITE_CHERRY_TREE = register("big_white_cherry_tree", BOPFeatures.BIG_WHITE_CHERRY_TREE.configured(Features.OAK.config()));
|
||||
public static final ConfiguredFeature<?, ?> BIG_YELLOW_AUTUMN_TREE = register("big_yellow_autumn_tree", BOPFeatures.BIG_YELLOW_AUTUMN_TREE.configured(Features.OAK.config()));
|
||||
public static final ConfiguredFeature<?, ?> BIRCH_POPLAR = register("birch_poplar", BOPFeatures.BIRCH_POPLAR.configured(Features.OAK.config()));
|
||||
public static final ConfiguredFeature<?, ?> BURNT_TREE = register("burnt_tree", BOPFeatures.BURNT_TREE.configured(Features.OAK.config()));
|
||||
public static final ConfiguredFeature<?, ?> BUSH = register("bush", BOPFeatures.BUSH.configured(Features.OAK.config()));
|
||||
public static final ConfiguredFeature<?, ?> COBWEB_BUSH = register("cobweb_bush", BOPFeatures.COBWEB_BUSH.configured(Features.OAK.config()));
|
||||
public static final ConfiguredFeature<?, ?> CYPRESS_TREE = register("cypress_tree", BOPFeatures.CYPRESS_TREE.configured(Features.OAK.config()));
|
||||
public static final ConfiguredFeature<?, ?> CYPRESS_TREE_MEDIUM = register("cypress_tree_medium", BOPFeatures.CYPRESS_TREE_MEDIUM.configured(Features.OAK.config()));
|
||||
public static final ConfiguredFeature<?, ?> DARK_OAK_POPLAR = register("dark_oak_poplar", BOPFeatures.DARK_OAK_POPLAR.configured(Features.OAK.config()));
|
||||
|
@ -69,8 +67,6 @@ public class BOPConfiguredFeatures
|
|||
public static final ConfiguredFeature<?, ?> FLOWERING_BUSH = register("flowering_bush", BOPFeatures.FLOWERING_BUSH.configured(Features.OAK.config()));
|
||||
public static final ConfiguredFeature<?, ?> FLOWERING_OAK_TREE = register("flowering_oak_tree", BOPFeatures.FLOWERING_OAK_TREE.configured(Features.OAK.config()));
|
||||
public static final ConfiguredFeature<?, ?> FLOWERING_OAK_TREE_BEES = register("flowering_oak_tree_bees", BOPFeatures.FLOWERING_OAK_TREE.configured(Features.OAK.config().withDecorators(ImmutableList.of(Features.Placements.BEEHIVE_005))));
|
||||
public static final ConfiguredFeature<?, ?> FULL_COBWEB_BUSH = register("full_cobweb_bush", BOPFeatures.FULL_COBWEB_BUSH.configured(Features.OAK.config()));
|
||||
public static final ConfiguredFeature<?, ?> FULL_SILK_TREE = register("full_silk_tree", BOPFeatures.FULL_SILK_TREE.configured(Features.OAK.config()));
|
||||
public static final ConfiguredFeature<?, ?> GIANT_TREE = register("giant_tree", BOPFeatures.GIANT_TREE.configured(Features.OAK.config()));
|
||||
public static final ConfiguredFeature<?, ?> HELLBARK_TREE = register("hellbark_tree", BOPFeatures.HELLBARK_TREE.configured(Features.OAK.config()));
|
||||
public static final ConfiguredFeature<?, ?> JACARANDA_TREE = register("jacaranda_tree", BOPFeatures.JACARANDA_TREE.configured(Features.OAK.config()));
|
||||
|
@ -88,13 +84,13 @@ 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<?, ?> 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<?, ?> 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()));
|
||||
public static final ConfiguredFeature<?, ?> SPRUCE_POPLAR = register("spruce_poplar", BOPFeatures.SPRUCE_POPLAR.configured(Features.OAK.config()));
|
||||
public static final ConfiguredFeature<?, ?> SPRUCE_TWIGLET_TREE = register("spruce_twiglet_tree", BOPFeatures.SPRUCE_TWIGLET_TREE.configured(Features.OAK.config()));
|
||||
public static final ConfiguredFeature<?, ?> TALL_DEAD_TREE = register("tall_dead_tree", BOPFeatures.TALL_DEAD_TREE.configured(Features.OAK.config()));
|
||||
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()));
|
||||
|
@ -117,8 +113,8 @@ public class BOPConfiguredFeatures
|
|||
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<?, ?> DEEP_BAYOU_TREES = register("deep_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(24, 0.6F, 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), TALL_SPRUCE_TREE.weighted(0.3F), SMALL_DEAD_TREE.weighted(0.3F), DEAD_TWIGLET_TREE.weighted(0.2F)), Features.OAK)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.5F, 1))));
|
||||
public static final ConfiguredFeature<?, ?> DEEP_BAYOU_TREES = register("deep_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(26, 0.8F, 1))));
|
||||
public static final ConfiguredFeature<?, ?> DENSE_WOODLAND_TREES = register("dense_woodland_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_OAK_TREE.weighted(0.5F)), Features.OAK)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(12, 0.3F, 1))));
|
||||
public static final ConfiguredFeature<?, ?> DRYLAND_TREES = register("dryland_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TWIGLET_TREE.weighted(0.4F), 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<?, ?> DRY_BONEYARD_TREES = register("dry_boneyard_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TWIGLET_TREE.weighted(0.4F), SPARSE_OAK_TREE.weighted(0.2F)), ACACIA_TWIGLET_SMALL)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.2F, 1))));
|
||||
|
@ -133,15 +129,13 @@ public class BOPConfiguredFeatures
|
|||
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<?, ?> MEADOW_TREES = register("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(4, 0.1F, 1))));
|
||||
public static final ConfiguredFeature<?, ?> MEADOW_FOREST_TREES = register("meadow_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BUSH.weighted(0.25F)), TALL_SPRUCE_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(8, 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(2, 0.3F, 1))));
|
||||
public static final ConfiguredFeature<?, ?> MUSHROOMY_MUSKEG_TREES = register("mushroomy_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(BIG_FLOWERING_OAK_TREE.weighted(0.15F), JACARANDA_TREE.weighted(0.25F), 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<?, ?> MUSKEG_TREES = register("muskeg_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TALL_DEAD_TREE.weighted(0.1F)), DEAD_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.3F, 1))));
|
||||
public static final ConfiguredFeature<?, ?> MYSTIC_GROVE_TREES = register("mystic_grove_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_FLOWERING_OAK_TREE.weighted(0.15F), JACARANDA_TREE.weighted(0.25F), BIG_MAGIC_TREE.weighted(0.3F), GIANT_TREE.weighted(0.02F)), MAGIC_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.5F, 1))));
|
||||
public static final ConfiguredFeature<?, ?> MYSTIC_PLAINS_TREES = register("mystic_plains_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FLOWERING_OAK_TREE.weighted(0.1F), JACARANDA_TREE.weighted(0.25F)), MAGIC_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.2F, 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), 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<?, ?> OMINOUS_MIRE_TREES = register("ominous_mire_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DEAD_TREE.weighted(0.1F), DYING_TREE.weighted(0.2F), UMBRAN_TREE.weighted(0.4F)), WILLOW_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 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<?, ?> OVERGROWN_FUNGAL_JUNGLE_TREES = register("overgrown_fungal_jungle_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(GIANT_TREE.weighted(0.04F), BIG_OAK_TREE.weighted(0.4F), Features.OAK.weighted(0.2F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(20, 0.6F, 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<?, ?> 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.JUNGLE_TREE.weighted(0.1F)), MAHOGANY_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(12, 0.3F, 1))));
|
||||
|
@ -153,18 +147,18 @@ public class BOPConfiguredFeatures
|
|||
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<?, ?> SEASONAL_ORCHARD_TREES = register("seasonal_orchard_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_YELLOW_AUTUMN_TREE.weighted(0.05F)), YELLOW_AUTUMN_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(3, 0.5F, 1))));
|
||||
public static final ConfiguredFeature<?, ?> SEASONAL_PUMPKIN_PATCH_TREES = register("seasonal_pumpkin_patch_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BUSH.weighted(0.2F), ORANGE_AUTUMN_TREE.weighted(0.1F), BIG_ORANGE_AUTUMN_TREE.weighted(0.05F)), TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(6, 0.5F, 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(2, 0.2F, 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<?, ?> SILKGLADE_NEST_TREES = register("silkglade_nest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(SMALL_DEAD_TREE.weighted(0.1F), SILK_TREE.weighted(0.1F), FULL_COBWEB_BUSH.weighted(0.4F), FULL_SILK_TREE.weighted(0.3F)), COBWEB_BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(25, 0.5F, 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.4F), MAPLE_TREE.weighted(0.1F)), FIR_TREE_LARGE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(6, 0.1F, 1))));
|
||||
public static final ConfiguredFeature<?, ?> SNOWY_MAPLE_FOREST_TREES = register("snowy_maple_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FIR_TREE.weighted(0.025F), FIR_TREE_SMALL.weighted(0.1F), BIG_MAPLE_TREE.weighted(0.3F)), MAPLE_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.1F, 1))));
|
||||
public static final ConfiguredFeature<?, ?> TALL_DEAD_FOREST_TREES = register("tall_dead_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DYING_TREE.weighted(0.2F), DEAD_TWIGLET_TREE.weighted(0.3F), TALL_SPRUCE_TREE.weighted(0.1F), SMALL_DEAD_TREE.weighted(0.1F), Features.OAK.weighted(0.05F)), DEAD_TWIGLET_TREE_TALL)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(4, 0.6F, 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", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_HELLBARK_TREE.weighted(0.1F)), 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.8F, 0.2F, 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", WILLOW_TREE.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(3, 0.1F, 1))));
|
||||
public static final ConfiguredFeature<?, ?> WETLAND_FOREST_TREES = register("wetland_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(WILLOW_TREE.weighted(0.25F)), TALL_SPRUCE_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(7, 0.1F, 1))));
|
||||
public static final ConfiguredFeature<?, ?> WOODED_SCRUBLAND_TREES = register("wooded_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(6, 0.5F, 1))));
|
||||
|
@ -172,6 +166,7 @@ public class BOPConfiguredFeatures
|
|||
|
||||
// Biome Flower Listings
|
||||
public static final ConfiguredFeature<?, ?> CHERRY_BLOSSOM_GROVE_FLOWERS = register("cherry_blossom_grove_flowers", Feature.FLOWER.configured(BOPFeatures.CHERRY_BLOSSOM_GROVE_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(5)));
|
||||
public static final ConfiguredFeature<?, ?> CLOVER_PATCH_FLOWERS = register("clover_patch_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(Blocks.AZURE_BLUET.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(16).build()).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(20)));
|
||||
public static final ConfiguredFeature<?, ?> CONIFEROUS_FOREST_FLOWERS = register("coniferous_forest_flowers", Feature.FLOWER.configured(BOPFeatures.CONIFEROUS_FOREST_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(4)));
|
||||
public static final ConfiguredFeature<?, ?> LUSH_DESERT_FLOWERS = register("lush_desert_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(BOPBlocks.wildflower.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(64).build()).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(6)));
|
||||
public static final ConfiguredFeature<?, ?> FLOWER_MEADOW_FLOWERS = register("flower_meadow_flowers", Feature.FLOWER.configured(BOPFeatures.FLOWER_MEADOW_FLOWER_CONFIG).decorated(Features.Placements.HEIGHTMAP_SQUARE).count(4));
|
||||
|
@ -192,7 +187,6 @@ public class BOPConfiguredFeatures
|
|||
public static final ConfiguredFeature<?, ?> SHRUBLAND_FLOWERS = register("shrubland_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(Blocks.ALLIUM.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(64).build()).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(3)));
|
||||
public static final ConfiguredFeature<?, ?> SNOWY_FLOWERS = register("snowy_flowers", Feature.FLOWER.configured(BOPFeatures.SNOWY_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(3)));
|
||||
public static final ConfiguredFeature<?, ?> TROPIC_FLOWERS = register("tropic_flowers", Feature.FLOWER.configured(BOPFeatures.TROPICS_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(15)));
|
||||
public static final ConfiguredFeature<?, ?> TROPICAL_PLAINS_FLOWERS = register("tropical_plains_flowers", Feature.FLOWER.configured(BOPFeatures.TROPICAL_PLAINS_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(12)));
|
||||
public static final ConfiguredFeature<?, ?> UNDERGROWTH_FLOWERS = register("undergrowth_flowers", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.burning_blossom.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(8)));
|
||||
public static final ConfiguredFeature<?, ?> WASTELAND_FLOWERS = register("wasteland_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(BOPBlocks.wilted_lily.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(64).build()).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(1)));
|
||||
public static final ConfiguredFeature<?, ?> WETLAND_FLOWERS = register("wetland_flowers", Feature.FLOWER.configured(BOPFeatures.WETLAND_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(3)));
|
||||
|
@ -201,6 +195,7 @@ public class BOPConfiguredFeatures
|
|||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Foliage
|
||||
public static final ConfiguredFeature<?, ?> STANDARD_GRASS_1 = register("standard_grass_1", BOPFeatures.STANDARD_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1)));
|
||||
public static final ConfiguredFeature<?, ?> STANDARD_GRASS_3 = register("standard_grass_3", BOPFeatures.STANDARD_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3)));
|
||||
public static final ConfiguredFeature<?, ?> STANDARD_GRASS_6 = register("standard_grass_6", BOPFeatures.STANDARD_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(6)));
|
||||
public static final ConfiguredFeature<?, ?> STANDARD_GRASS_12 = register("standard_grass_12", BOPFeatures.STANDARD_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(12)));
|
||||
|
@ -212,6 +207,7 @@ public class BOPConfiguredFeatures
|
|||
|
||||
public static final ConfiguredFeature<?, ?> FERN_24 = register("fern_24", BOPFeatures.FERN.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(24)));
|
||||
|
||||
public static final ConfiguredFeature<?, ?> WASTELAND_GRASS_1 = register("wasteland_grass_1", BOPFeatures.WASTELAND_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1)));
|
||||
public static final ConfiguredFeature<?, ?> WASTELAND_GRASS_2 = register("wasteland_grass_2", BOPFeatures.WASTELAND_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(2)));
|
||||
|
||||
public static final ConfiguredFeature<?, ?> BUSH_5 = register("bush_5", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.bush.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(5)));
|
||||
|
@ -228,6 +224,10 @@ public class BOPConfiguredFeatures
|
|||
public static final ConfiguredFeature<?, ?> SPROUTS_200 = register("sprouts_200", BOPFeatures.RANDOM_PATCH_ABOVE_GROUND.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).decorated(FeatureUtil.denseCount(200)));
|
||||
public static final ConfiguredFeature<?, ?> SPROUTS_UNDERGROWTH = register("sprouts_undergrowth", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(75)));
|
||||
|
||||
public static final ConfiguredFeature<?, ?> CLOVER_3 = register("clover_3", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.clover.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3)));
|
||||
public static final ConfiguredFeature<?, ?> CLOVER_6 = register("clover_6", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.clover.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(6)));
|
||||
public static final ConfiguredFeature<?, ?> CLOVER_250 = register("clover_250", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.clover.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(FeatureUtil.denseCount(250)));
|
||||
|
||||
public static final ConfiguredFeature<?, ?> DUNE_GRASS_128 = register("dune_grass_128", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.dune_grass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(128)));
|
||||
|
||||
public static final ConfiguredFeature<?, ?> DESERT_GRASS_10 = register("desert_grass_10", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.desert_grass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(10)));
|
||||
|
@ -259,7 +259,6 @@ public class BOPConfiguredFeatures
|
|||
public static final ConfiguredFeature<?, ?> TOADSTOOL_EXTRA = register("toadstool_extra", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.toadstool.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3)));
|
||||
public static final ConfiguredFeature<?, ?> GLOWSHROOM_UNCOMMON = register("glowshroom_uncommon", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.glowshroom.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(7)));
|
||||
public static final ConfiguredFeature<?, ?> GLOWSHROOM_NORMAL = register("glowshroom_normal", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.glowshroom.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(20)));
|
||||
public static final ConfiguredFeature<?, ?> GLOWSHROOM_EXTRA = register("glowshroom_extra", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.glowshroom.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(50)));
|
||||
public static final ConfiguredFeature<?, ?> BARLEY = register("barley", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDoubleProjects(BOPBlocks.barley.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_SQUARE).count(15));
|
||||
|
||||
// Water Plants
|
||||
|
@ -313,8 +312,8 @@ public class BOPConfiguredFeatures
|
|||
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(21)));
|
||||
public static final ConfiguredFeature<?, ?> HUGE_CLOVER = register("huge_clover", BOPFeatures.HUGE_CLOVER.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(25)));
|
||||
public static final ConfiguredFeature<?, ?> HUGE_GLOWSHROOM = register("huge_glowshroom", BOPFeatures.HUGE_GLOWSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(6)));
|
||||
public static final ConfiguredFeature<?, ?> HUGE_GLOWSHROOM_EXTRA = register("huge_glowshroom_extra", BOPFeatures.HUGE_GLOWSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(18)));
|
||||
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)));
|
||||
|
@ -337,7 +336,6 @@ public class BOPConfiguredFeatures
|
|||
public static final ConfiguredFeature<?, ?> SMALL_CRYSTAL = register("small_crystal", BOPFeatures.SMALL_CRYSTAL.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(40)));
|
||||
public static final ConfiguredFeature<?, ?> SMALL_GLOWSHROOM_UNCOMMON = register("small_glowshroom_uncommon", BOPFeatures.SMALL_GLOWSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1)));
|
||||
public static final ConfiguredFeature<?, ?> SMALL_GLOWSHROOM = register("small_glowshroom", BOPFeatures.SMALL_GLOWSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3)));
|
||||
public static final ConfiguredFeature<?, ?> SMALL_GLOWSHROOM_EXTRA = register("small_glowshroom_extra", BOPFeatures.SMALL_GLOWSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(12)));
|
||||
public static final ConfiguredFeature<?, ?> SMALL_RED_MUSHROOM = register("small_red_mushroom", BOPFeatures.SMALL_RED_MUSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1)));
|
||||
public static final ConfiguredFeature<?, ?> SMALL_TOADSTOOL = register("small_toadstool", BOPFeatures.SMALL_TOADSTOOL.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1)));
|
||||
public static final ConfiguredFeature<?, ?> VOLCANO_GRASS_SPLATTER = register("volcano_grass_splatter", BOPFeatures.GRASS_SPLATTER.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(25)));
|
||||
|
|
|
@ -36,8 +36,6 @@ public class BOPFeatures
|
|||
public static final Feature<BaseTreeFeatureConfig> WHITE_CHERRY_TREE = register("white_cherry_tree", new BasicTreeFeature.Builder().log(BOPBlocks.cherry_log.defaultBlockState()).leaves(BOPBlocks.white_cherry_leaves.defaultBlockState()).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> JACARANDA_TREE = register("jacaranda_tree", new BasicTreeFeature.Builder().log(BOPBlocks.jacaranda_log.defaultBlockState()).leaves(BOPBlocks.jacaranda_leaves.defaultBlockState()).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> SMALL_DEAD_TREE = register("small_dead_tree", new BasicTreeFeature.Builder().log(BOPBlocks.dead_log.defaultBlockState()).leaves(BOPBlocks.dead_leaves.defaultBlockState()).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> SILK_TREE = register("silk_tree", new BasicTreeFeature.Builder().log(BOPBlocks.dead_log.defaultBlockState()).leaves(BOPBlocks.dead_leaves.defaultBlockState()).altLeaves(Blocks.COBWEB.defaultBlockState()).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> FULL_SILK_TREE = register("full_silk_tree", new BasicTreeFeature.Builder().log(BOPBlocks.dead_log.defaultBlockState()).leaves(Blocks.COBWEB.defaultBlockState()).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> MAGIC_TREE = register("magic_tree", new PoplarTreeFeature.Builder().log(BOPBlocks.magic_log.defaultBlockState()).leaves(BOPBlocks.magic_leaves.defaultBlockState()).minHeight(8).maxHeight(12).create());
|
||||
|
||||
//Big Trees
|
||||
|
@ -53,7 +51,7 @@ public class BOPFeatures
|
|||
public static final Feature<BaseTreeFeatureConfig> BIG_JACARANDA_TREE = register("big_jacaranda_tree", new BigTreeFeature.Builder().log(BOPBlocks.jacaranda_log.defaultBlockState()).leaves(BOPBlocks.jacaranda_leaves.defaultBlockState()).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> BIG_MAGIC_TREE = register("big_magic_tree", new PoplarTreeFeature.Builder().log(BOPBlocks.magic_log.defaultBlockState()).leaves(BOPBlocks.magic_leaves.defaultBlockState()).minHeight(16).maxHeight(20).create());
|
||||
|
||||
public static final Feature<BaseTreeFeatureConfig> GIANT_TREE = register("giant_tree", new BigTreeFeature.Builder().log(Blocks.DARK_OAK_LOG.defaultBlockState()).leaves(Blocks.DARK_OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)).minHeight(12).maxHeight(18).trunkWidth(4).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> GIANT_TREE = register("giant_tree", new BigTreeFeature.Builder().log(Blocks.DARK_OAK_LOG.defaultBlockState()).leaves(Blocks.DARK_OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)).minHeight(15).maxHeight(20).trunkWidth(4).create());
|
||||
|
||||
//Conifer Trees
|
||||
public static final Feature<BaseTreeFeatureConfig> TALL_SPRUCE_TREE = register("tall_spruce_tree", new TaigaTreeFeature.Builder().log(Blocks.SPRUCE_LOG.defaultBlockState()).leaves(Blocks.SPRUCE_LEAVES.defaultBlockState()).maxHeight(13).create());
|
||||
|
@ -66,7 +64,6 @@ public class BOPFeatures
|
|||
|
||||
//Poplar Trees
|
||||
public static final Feature<BaseTreeFeatureConfig> SPRUCE_POPLAR = register("spruce_poplar", new PoplarTreeFeature.Builder().log(Blocks.SPRUCE_LOG.defaultBlockState()).leaves(Blocks.SPRUCE_LEAVES.defaultBlockState()).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> BIRCH_POPLAR = register("birch_poplar", new PoplarTreeFeature.Builder().log(Blocks.BIRCH_LOG.defaultBlockState()).leaves(Blocks.BIRCH_LEAVES.defaultBlockState()).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> DARK_OAK_POPLAR = register("dark_oak_poplar", new PoplarTreeFeature.Builder().log(Blocks.DARK_OAK_LOG.defaultBlockState()).leaves(Blocks.DARK_OAK_LEAVES.defaultBlockState()).create());
|
||||
|
||||
//Swamp Trees
|
||||
|
@ -86,8 +83,6 @@ public class BOPFeatures
|
|||
public static final Feature<BaseTreeFeatureConfig> SPRUCE_BUSH = register("spruce_bush", new BushTreeFeature.Builder().log(Blocks.SPRUCE_LOG.defaultBlockState()).leaves(Blocks.SPRUCE_LEAVES.defaultBlockState()).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> ACACIA_BUSH = register("acacia_bush", new BushTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.orange_sand).log(Blocks.ACACIA_LOG.defaultBlockState()).leaves(Blocks.ACACIA_LEAVES.defaultBlockState()).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> FLOWERING_BUSH = register("flowering_bush", new BushTreeFeature.Builder().altLeaves(BOPBlocks.flowering_oak_leaves.defaultBlockState()).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> COBWEB_BUSH = register("cobweb_bush", new BushTreeFeature.Builder().altLeaves(Blocks.COBWEB.defaultBlockState()).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> FULL_COBWEB_BUSH = register("full_cobweb_bush", new BushTreeFeature.Builder().leaves(Blocks.COBWEB.defaultBlockState()).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> HELLBARK_TREE = register("hellbark_tree", new BushTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.NETHERRACK || world.getBlockState(pos).canSustainPlant(world, pos, Direction.UP, (SaplingBlock)Blocks.OAK_SAPLING)).log(BOPBlocks.hellbark_log.defaultBlockState()).leaves(BOPBlocks.hellbark_leaves.defaultBlockState()).create());
|
||||
|
||||
public static final Feature<BaseTreeFeatureConfig> TWIGLET_TREE = register("twiglet_tree", new TwigletTreeFeature.Builder().minHeight(1).maxHeight(2).create());
|
||||
|
@ -100,8 +95,8 @@ public class BOPFeatures
|
|||
public static final Feature<BaseTreeFeatureConfig> ACACIA_TWIGLET = register("acacia_twiglet", new TwigletTreeFeature.Builder().log(Blocks.ACACIA_LOG.defaultBlockState()).leaves(Blocks.ACACIA_LEAVES.defaultBlockState()).minHeight(1).maxHeight(2).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> MAPLE_TWIGLET_TREE = register("maple_twiglet_tree", new TwigletTreeFeature.Builder().minHeight(1).maxHeight(2).leaves(BOPBlocks.maple_leaves.defaultBlockState()).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> DEAD_TWIGLET_TREE_SMALL = register("dead_twiglet_tree_small", new TwigletTreeFeature.Builder().minHeight(1).maxHeight(1).leaves(BOPBlocks.dead_leaves.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> DEAD_TWIGLET_TREE = register("dead_twiglet_tree", new TwigletTreeFeature.Builder().trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.05F, 0.25F).leaves(BOPBlocks.dead_leaves.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(4).maxHeight(7).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> DEAD_TWIGLET_TREE_TALL = register("dead_twiglet_tree_tall", new TwigletTreeFeature.Builder().trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.15F, 0.6F).leaves(BOPBlocks.dead_leaves.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(8).maxHeight(12).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> DEAD_TWIGLET_TREE = register("dead_twiglet_tree", new TwigletTreeFeature.Builder().trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.05F, 0.25F).leaves(BOPBlocks.dead_leaves.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(6).maxHeight(10).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> DEAD_TWIGLET_TREE_TALL = register("dead_twiglet_tree_tall", new TwigletTreeFeature.Builder().trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.15F, 0.6F).leaves(BOPBlocks.dead_leaves.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(12).maxHeight(18).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> TWIGLET_TREE_VOLCANO = register("twiglet_tree_volcano", new TwigletTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.black_sand).log(Blocks.DARK_OAK_LOG.defaultBlockState()).leaves(Blocks.DARK_OAK_LEAVES.defaultBlockState()).minHeight(1).maxHeight(2).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> BIG_HELLBARK_TREE = register("big_hellbark_tree", new TwigletTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.NETHERRACK || world.getBlockState(pos).canSustainPlant(world, pos, Direction.UP, (SaplingBlock)Blocks.OAK_SAPLING)).log(BOPBlocks.hellbark_log.defaultBlockState()).leaves(BOPBlocks.hellbark_leaves.defaultBlockState()).minHeight(3).maxHeight(7).create());
|
||||
|
||||
|
@ -112,8 +107,9 @@ public class BOPFeatures
|
|||
public static final Feature<BaseTreeFeatureConfig> MAHOGANY_TREE = register("mahogany_tree", new MahoganyTreeFeature.Builder().create());
|
||||
public static final Feature<BaseTreeFeatureConfig> PALM_TREE = register("palm_tree", new PalmTreeFeature.Builder().create());
|
||||
public static final Feature<BaseTreeFeatureConfig> DEAD_TREE = register("dead_tree", new TwigletTreeFeature.Builder().trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.0F, 0.0F).leaves(Blocks.AIR.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(6).maxHeight(10).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> TALL_DEAD_TREE = register("tall_dead_tree", new TwigletTreeFeature.Builder().trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.0F, 0.0F).leaves(Blocks.AIR.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(8).maxHeight(12).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> DEAD_TREE_WASTELAND = register("dead_tree_wasteland", new TwigletTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.dried_salt).trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.0F, 0.0F).leaves(Blocks.AIR.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(6).maxHeight(10).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> BURNT_TREE = register("burnt_tree", new TwigletTreeFeature.Builder().leafChance(0.0F, 0.0F).leaves(Blocks.AIR.defaultBlockState()).log(BOPBlocks.stripped_hellbark_log.defaultBlockState()).minHeight(4).maxHeight(8).create());
|
||||
public static final Feature<BaseTreeFeatureConfig> BURNT_TREE = register("burnt_tree", new TwigletTreeFeature.Builder().leafChance(0.0F, 0.0F).leaves(Blocks.AIR.defaultBlockState()).log(BOPBlocks.stripped_hellbark_log.defaultBlockState()).minHeight(3).maxHeight(5).create());
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
@ -128,6 +124,7 @@ public class BOPFeatures
|
|||
public static final Feature<NoFeatureConfig> FERN_GRASS = register("fern_grass", new FernGrassFeature(NoFeatureConfig.CODEC.stable()));
|
||||
public static final Feature<NoFeatureConfig> FLESH_TENDON = register("flesh_tendon", new FleshTendonFeature(NoFeatureConfig.CODEC.stable()));
|
||||
public static final Feature<NoFeatureConfig> GRASS_SPLATTER = register("grass_splatter", new GrassSplatterFeature(NoFeatureConfig.CODEC.stable()));
|
||||
public static final Feature<NoFeatureConfig> HUGE_CLOVER = register("huge_clover", new HugeCloverFeature(NoFeatureConfig.CODEC.stable()));
|
||||
public static final Feature<NoFeatureConfig> HUGE_GLOWSHROOM = register("huge_glowshroom", new HugeGlowshroomFeature(NoFeatureConfig.CODEC.stable()));
|
||||
public static final Feature<NoFeatureConfig> HUGE_TOADSTOOL = register("huge_toadstool", new HugeToadstoolFeature(NoFeatureConfig.CODEC.stable()));
|
||||
public static final Feature<NoFeatureConfig> LARGE_CRYSTAL = register("large_crystal", new LargeCrystalFeature(NoFeatureConfig.CODEC.stable()));
|
||||
|
@ -162,7 +159,6 @@ public class BOPFeatures
|
|||
public static final BlockClusterFeatureConfig RAINBOW_HILLS_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.orange_cosmos.defaultBlockState(), 1).add(BOPBlocks.pink_daffodil.defaultBlockState(), 1).add(Blocks.LILY_OF_THE_VALLEY.defaultBlockState(), 1).add(Blocks.AZURE_BLUET.defaultBlockState(), 1).add(Blocks.ALLIUM.defaultBlockState(), 1).add(Blocks.CORNFLOWER.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1).add(Blocks.BLUE_ORCHID.defaultBlockState(), 1).add(Blocks.PINK_TULIP.defaultBlockState(), 1).add(Blocks.RED_TULIP.defaultBlockState(), 1).add(Blocks.WHITE_TULIP.defaultBlockState(), 1).add(Blocks.ORANGE_TULIP.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build();
|
||||
public static final BlockClusterFeatureConfig RAINFOREST_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.orange_cosmos.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build();
|
||||
public static final BlockClusterFeatureConfig SNOWY_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.violet.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build();
|
||||
public static final BlockClusterFeatureConfig TROPICAL_PLAINS_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.orange_cosmos.defaultBlockState(), 1).add(Blocks.OXEYE_DAISY.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build();
|
||||
public static final BlockClusterFeatureConfig TROPICS_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.pink_hibiscus.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build();
|
||||
public static final BlockClusterFeatureConfig WETLAND_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(Blocks.BLUE_ORCHID.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build();
|
||||
|
||||
|
|
|
@ -0,0 +1,81 @@
|
|||
package biomesoplenty.common.world.gen.feature;
|
||||
|
||||
import biomesoplenty.api.block.BOPBlocks;
|
||||
import biomesoplenty.common.util.block.IBlockPosQuery;
|
||||
import com.ibm.icu.impl.CalendarAstronomer;
|
||||
import com.mojang.serialization.Codec;
|
||||
import net.minecraft.block.*;
|
||||
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.Random;
|
||||
|
||||
public class HugeCloverFeature extends Feature<NoFeatureConfig>
|
||||
{
|
||||
protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK;
|
||||
protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getBlock() instanceof BushBlock;
|
||||
|
||||
public HugeCloverFeature(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))
|
||||
{
|
||||
// Abandon if we can't place the tree on this block
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!this.checkSpace(world, startPos.above()))
|
||||
{
|
||||
// Abandon if there isn't enough room
|
||||
return false;
|
||||
}
|
||||
|
||||
BlockPos pos = startPos.above();
|
||||
|
||||
this.setBlock(world, pos, BOPBlocks.huge_clover_petal.defaultBlockState().setValue(HorizontalBlock.FACING, Direction.NORTH));
|
||||
this.setBlock(world, pos.south(), BOPBlocks.huge_clover_petal.defaultBlockState().setValue(HorizontalBlock.FACING, Direction.WEST));
|
||||
this.setBlock(world, pos.east(), BOPBlocks.huge_clover_petal.defaultBlockState().setValue(HorizontalBlock.FACING, Direction.EAST));
|
||||
this.setBlock(world, pos.south().east(), BOPBlocks.huge_clover_petal.defaultBlockState().setValue(HorizontalBlock.FACING, Direction.SOUTH));
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
public boolean checkSpace(IWorld world, BlockPos pos)
|
||||
{
|
||||
for (int x = 0; x <= 1; x++)
|
||||
{
|
||||
for (int z = 0; z <= 1; z++)
|
||||
{
|
||||
BlockPos pos1 = pos.offset(x, 0, z);
|
||||
if (pos1.getY() >= 255 || !this.replace.matches(world, pos1) || !this.placeOn.matches(world, pos1.below()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -10,10 +10,7 @@ package biomesoplenty.common.world.gen.feature.tree;
|
|||
import biomesoplenty.api.block.BOPBlocks;
|
||||
import biomesoplenty.common.util.biome.GeneratorUtil;
|
||||
import biomesoplenty.common.util.block.IBlockPosQuery;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.block.BushBlock;
|
||||
import net.minecraft.block.SaplingBlock;
|
||||
import net.minecraft.block.*;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.tags.BlockTags;
|
||||
import net.minecraft.util.Direction;
|
||||
|
@ -38,7 +35,7 @@ public class CypressTreeFeature extends TreeFeatureBase
|
|||
this.minHeight = 6;
|
||||
this.maxHeight = 15;
|
||||
this.placeOn = (world, pos) -> world.getBlockState(pos).canSustainPlant(world, pos, Direction.UP, (SaplingBlock)Blocks.OAK_SAPLING);
|
||||
this.replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getMaterial() == Material.WATER || world.getBlockState(pos).getBlock().is(BlockTags.SAPLINGS) || world.getBlockState(pos).getBlock() == Blocks.VINE || world.getBlockState(pos).getBlock() == BOPBlocks.willow_vine || world.getBlockState(pos).getBlock() instanceof BushBlock;
|
||||
this.replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getMaterial() == Material.WATER || world.getBlockState(pos).getBlock().is(BlockTags.SAPLINGS) || world.getBlockState(pos).getBlock() == Blocks.VINE || world.getBlockState(pos).getBlock() == BOPBlocks.willow_vine || world.getBlockState(pos).getBlock() == BOPBlocks.spanish_moss_plant || world.getBlockState(pos).getBlock() == BOPBlocks.spanish_moss || world.getBlockState(pos).getBlock() instanceof BushBlock;
|
||||
this.log = BOPBlocks.willow_log.defaultBlockState();
|
||||
this.leaves = BOPBlocks.willow_leaves.defaultBlockState();
|
||||
this.vine = BOPBlocks.willow_vine.defaultBlockState();
|
||||
|
@ -65,17 +62,11 @@ public class CypressTreeFeature extends TreeFeatureBase
|
|||
{
|
||||
for (int y = 0; y <= height; y++)
|
||||
{
|
||||
int trunkWidth = (this.trunkWidth * (height - y) / height) + 1;
|
||||
int trunkStart = MathHelper.ceil(0.25D - trunkWidth / 2.0D);
|
||||
int trunkEnd = MathHelper.floor(0.25D + trunkWidth / 2.0D);
|
||||
int radius = this.trunkWidth - 1;
|
||||
|
||||
// require 3x3 for the leaves, 1x1 for the trunk
|
||||
int start = (y <= baseHeight ? trunkStart : trunkStart - 1);
|
||||
int end = (y <= baseHeight ? trunkEnd : trunkEnd + 1);
|
||||
|
||||
for (int x = start; x <= end; x++)
|
||||
for (int x = -radius; x <= radius; x++)
|
||||
{
|
||||
for (int z = start; z <= end; z++)
|
||||
for (int z = -radius; z <= radius; z++)
|
||||
{
|
||||
BlockPos pos1 = pos.offset(x, y, z);
|
||||
// note, there may be a sapling on the first layer - make sure this.replace matches it!
|
||||
|
@ -96,25 +87,29 @@ public class CypressTreeFeature extends TreeFeatureBase
|
|||
return true;
|
||||
}
|
||||
|
||||
// generates a layer of leafs
|
||||
public void generateLeafLayer(IWorld world, Random rand, BlockPos pos, int leavesRadius, int trunkStart, int trunkEnd, Set<BlockPos> changedLeaves, MutableBoundingBox boundingBox)
|
||||
// generates a layer of leaves
|
||||
public void generateLeafLayer(IWorld world, Random rand, BlockPos pos, int leavesRadius, Set<BlockPos> changedLeaves, MutableBoundingBox boundingBox)
|
||||
{
|
||||
int start = trunkStart - leavesRadius;
|
||||
int end = trunkEnd + leavesRadius;
|
||||
int start = -leavesRadius;
|
||||
int end = leavesRadius;
|
||||
|
||||
for (int x = start; x <= end; x++)
|
||||
{
|
||||
for (int z = start; z <= end; z++)
|
||||
{
|
||||
// skip corners
|
||||
if ((leavesRadius > 0 ) && (x == start || x == end) && (z == start || z == end)) {continue;}
|
||||
int distFromTrunk = (x < 0 ? trunkStart - x : x - trunkEnd) + (z < 0 ? trunkStart - z : z - trunkEnd);
|
||||
|
||||
// set leaves as long as it's not too far from the trunk to survive
|
||||
if (distFromTrunk <= 2)
|
||||
if ((leavesRadius > 0) && (x == start || x == end) && (z == start || z == end))
|
||||
{
|
||||
this.placeLeaves(world, pos.offset(x, 0, z), changedLeaves, boundingBox);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Make ends more scraggly
|
||||
if ((leavesRadius > 0) && ((x == start || x == end) || (z == start || z == end)) && rand.nextDouble() < 0.2)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
this.placeLeaves(world, pos.offset(x, 0, z), changedLeaves, boundingBox);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -167,8 +162,12 @@ public class CypressTreeFeature extends TreeFeatureBase
|
|||
int height = GeneratorUtil.nextIntBetween(random, this.minHeight, this.maxHeight);
|
||||
int baseHeight = GeneratorUtil.nextIntBetween(random, (int)(height * 0.6F), (int)(height * 0.4F));
|
||||
int leavesHeight = height - baseHeight;
|
||||
int baseLeavesHeight = leavesHeight;
|
||||
if (leavesHeight < 3) {return false;}
|
||||
|
||||
leavesHeight = MathHelper.clamp(leavesHeight, 3, 5);
|
||||
leavesHeight = MathHelper.clamp(leavesHeight + random.nextInt(3), 0, baseLeavesHeight);
|
||||
|
||||
if (!this.checkSpace(world, startPos.above(), baseHeight, height))
|
||||
{
|
||||
// Abandon if there isn't enough room
|
||||
|
@ -185,54 +184,99 @@ public class CypressTreeFeature extends TreeFeatureBase
|
|||
// Add layers of leaves
|
||||
for (int i = 0; i < leavesHeight; i++)
|
||||
{
|
||||
|
||||
int trunkWidth = (this.trunkWidth * i / height) + 1;
|
||||
int trunkStart = MathHelper.ceil(0.25D - trunkWidth / 2.0D);
|
||||
int trunkEnd = MathHelper.floor(0.25D + trunkWidth / 2.0D);
|
||||
|
||||
|
||||
int radius = MathHelper.clamp(i, 0, 2);
|
||||
if (i == leavesHeight - 1)
|
||||
int radius = 3;
|
||||
if (i == 0)
|
||||
{
|
||||
radius = 1;
|
||||
}
|
||||
else if (i <= 2)
|
||||
{
|
||||
radius = 2;
|
||||
}
|
||||
|
||||
this.generateLeafLayer(world, random, pos, radius, changedLeaves, boundingBox);
|
||||
|
||||
if (radius == 0)
|
||||
{
|
||||
this.placeLeaves(world, pos, changedLeaves, boundingBox);
|
||||
}
|
||||
else if (radius < 2)
|
||||
{
|
||||
this.generateLeafLayer(world, random, pos, radius, trunkStart, trunkEnd, changedLeaves, boundingBox);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.generateBranch(world, random, pos.offset(trunkStart, 0, trunkStart), Direction.NORTH, radius, changedLogs, changedLeaves, boundingBox);
|
||||
this.generateBranch(world, random, pos.offset(trunkEnd, 0, trunkStart), Direction.EAST, radius, changedLogs, changedLeaves, boundingBox);
|
||||
this.generateBranch(world, random, pos.offset(trunkEnd, 0, trunkEnd), Direction.SOUTH, radius, changedLogs, changedLeaves, boundingBox);
|
||||
this.generateBranch(world, random, pos.offset(trunkStart, 0, trunkEnd), Direction.WEST, radius, changedLogs, changedLeaves, boundingBox);
|
||||
}
|
||||
pos = pos.below();
|
||||
}
|
||||
|
||||
// Generate the trunk
|
||||
for (int y = 0; y < height - 1; y++)
|
||||
{
|
||||
int trunkWidth = (this.trunkWidth * ((baseHeight + 5) - y) / (baseHeight + 5)) + 1;
|
||||
int trunkStart = MathHelper.ceil(0.25D - trunkWidth / 2.0D);
|
||||
int trunkEnd = MathHelper.floor(0.25D + trunkWidth / 2.0D);
|
||||
this.placeSpanishMoss(world, random, pos);
|
||||
|
||||
if (trunkWidth < 1)
|
||||
// We make the radius to check 1 less than the width
|
||||
int trunkRadius = this.trunkWidth - 1;
|
||||
|
||||
// Generate the trunk
|
||||
for (int x = -trunkRadius; x <= trunkRadius; x++)
|
||||
{
|
||||
trunkStart = 0;
|
||||
trunkEnd = 0;
|
||||
for (int z = -trunkRadius; z <= trunkRadius; z++)
|
||||
{
|
||||
int dist = Math.abs(x) + Math.abs(z);
|
||||
|
||||
if (dist > trunkRadius)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
for (int x = trunkStart; x <= trunkEnd; x++)
|
||||
int heightHere = height - 1;
|
||||
if (dist == 1)
|
||||
{
|
||||
for (int z = trunkStart; z <= trunkEnd; z++)
|
||||
heightHere = (int) (height * (0.2 + random.nextDouble() * 0.15));
|
||||
}
|
||||
|
||||
heightHere += random.nextInt(2);
|
||||
|
||||
for (int y = 0; y < heightHere; y++)
|
||||
{
|
||||
this.placeLog(world, startPos.offset(x, y, z), changedLogs, boundingBox);
|
||||
BlockPos local = startPos.offset(x, y, z);
|
||||
boolean air = world.getBlockState(local).getFluidState().isEmpty();
|
||||
|
||||
this.placeLog(world, local, changedLogs, boundingBox);
|
||||
|
||||
if (x == 0 && z == 0 && air && y < heightHere - leavesHeight + 1)
|
||||
{
|
||||
if (y >= baseHeight && random.nextInt(3) == 0)
|
||||
{
|
||||
// Big branch
|
||||
double theta = Math.PI * random.nextDouble() * 2;
|
||||
|
||||
int length = 2 + random.nextInt(3);
|
||||
|
||||
BlockPos branchPos = null;
|
||||
for (int i = 0; i < length; i++)
|
||||
{
|
||||
branchPos = local.offset(Math.cos(theta) * i, i / 2, Math.sin(theta) * i);
|
||||
|
||||
this.placeLog(world, branchPos, changedLogs, boundingBox);
|
||||
}
|
||||
|
||||
generateLeafLayer(world, random, branchPos, 2, changedLeaves, boundingBox);
|
||||
generateLeafLayer(world, random, branchPos.above(), 1, changedLeaves, boundingBox);
|
||||
if (random.nextBoolean())
|
||||
{
|
||||
generateLeafLayer(world, random, branchPos.above(2), 0, changedLeaves, boundingBox);
|
||||
}
|
||||
|
||||
this.placeSpanishMoss(world, random, branchPos);
|
||||
|
||||
}
|
||||
else if (y >= baseHeight && random.nextInt(3) == 0)
|
||||
{
|
||||
// Small branch
|
||||
Direction direction = Direction.Plane.HORIZONTAL.getRandomDirection(random);
|
||||
BlockPos offset = local.relative(direction);
|
||||
|
||||
this.placeLog(world, offset, changedLogs, boundingBox);
|
||||
|
||||
for (Direction dir : Direction.values())
|
||||
{
|
||||
if (random.nextDouble() > 0.2)
|
||||
{
|
||||
this.placeLeaves(world, offset.relative(dir), changedLeaves, boundingBox);
|
||||
}
|
||||
}
|
||||
|
||||
this.placeSpanishMoss(world, random, offset);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -251,4 +295,49 @@ public class CypressTreeFeature extends TreeFeatureBase
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void placeSpanishMoss(IWorld p_236429_1_, Random p_236429_2_, BlockPos p_236429_3_)
|
||||
{
|
||||
BlockPos.Mutable blockpos$mutable = new BlockPos.Mutable();
|
||||
|
||||
for(int i = 0; i < 50; ++i)
|
||||
{
|
||||
blockpos$mutable.setWithOffset(p_236429_3_, p_236429_2_.nextInt(5) - p_236429_2_.nextInt(5), p_236429_2_.nextInt(3) - p_236429_2_.nextInt(3), p_236429_2_.nextInt(5) - p_236429_2_.nextInt(5));
|
||||
if (p_236429_1_.isEmptyBlock(blockpos$mutable))
|
||||
{
|
||||
BlockState blockstate = p_236429_1_.getBlockState(blockpos$mutable.above());
|
||||
if (blockstate.getBlock() == BOPBlocks.willow_leaves)
|
||||
{
|
||||
int j = MathHelper.nextInt(p_236429_2_, 1, 3);
|
||||
|
||||
if (p_236429_2_.nextInt(5) == 0)
|
||||
{
|
||||
j = 1;
|
||||
}
|
||||
|
||||
placeSpanishMossColumn(p_236429_1_, p_236429_2_, blockpos$mutable, j, 17, 25);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void placeSpanishMossColumn(IWorld p_236427_0_, Random p_236427_1_, BlockPos.Mutable p_236427_2_, int p_236427_3_, int p_236427_4_, int p_236427_5_)
|
||||
{
|
||||
for(int i = 0; i <= p_236427_3_; ++i)
|
||||
{
|
||||
if (p_236427_0_.isEmptyBlock(p_236427_2_))
|
||||
{
|
||||
if (i == p_236427_3_ || !p_236427_0_.isEmptyBlock(p_236427_2_.below()))
|
||||
{
|
||||
p_236427_0_.setBlock(p_236427_2_, BOPBlocks.spanish_moss.defaultBlockState().setValue(AbstractTopPlantBlock.AGE, Integer.valueOf(MathHelper.nextInt(p_236427_1_, p_236427_4_, p_236427_5_))), 2);
|
||||
break;
|
||||
}
|
||||
|
||||
p_236427_0_.setBlock(p_236427_2_, BOPBlocks.spanish_moss_plant.defaultBlockState(), 2);
|
||||
}
|
||||
|
||||
p_236427_2_.move(Direction.DOWN);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -198,33 +198,78 @@ public class RedwoodTreeFeature extends TreeFeatureBase
|
|||
pos = pos.below();
|
||||
}
|
||||
|
||||
// Create the trunk widths scales
|
||||
double[] scalingFactors = new double[]{
|
||||
(0.35 + random.nextDouble() * 0.15),
|
||||
(0.07 + random.nextDouble() * 0.1),
|
||||
(random.nextDouble() * 0.06)
|
||||
};
|
||||
|
||||
if (this.trunkWidth == 3) {
|
||||
scalingFactors = new double[]{
|
||||
(0.6 + random.nextDouble() * 0.2),
|
||||
(0.1 + random.nextDouble() * 0.2),
|
||||
(0.03 + random.nextDouble() * 0.09)
|
||||
};
|
||||
}
|
||||
|
||||
// Generate the trunk
|
||||
for (int y = 0; y < height - 1; y++)
|
||||
{
|
||||
int trunkWidth = (this.trunkWidth * (height - y) / height) + 1;
|
||||
int trunkStart = MathHelper.ceil(0.25D - trunkWidth / 2.0D);
|
||||
int trunkEnd = MathHelper.floor(0.25D + trunkWidth / 2.0D);
|
||||
for (int x = -this.trunkWidth; x <= this.trunkWidth; x++) {
|
||||
for (int z = -this.trunkWidth; z <= this.trunkWidth; z++) {
|
||||
int dist = Math.abs(x) + Math.abs(z);
|
||||
|
||||
if (trunkWidth < 1)
|
||||
{
|
||||
trunkStart = 0;
|
||||
trunkEnd = 0;
|
||||
int heightHere = height - 2;
|
||||
|
||||
// If we're not the center of the trunk on a single trunk width, give up
|
||||
if (this.trunkWidth == 1 && dist > 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (int x = trunkStart; x <= trunkEnd; x++)
|
||||
{
|
||||
for (int z = trunkStart; z <= trunkEnd; z++)
|
||||
{
|
||||
this.placeLog(world, startPos.offset(x, y, z), changedLogs, boundingBox);
|
||||
}
|
||||
// Scale bigger widths
|
||||
if (dist == 1) {
|
||||
heightHere = (int) (height * scalingFactors[0]);
|
||||
} else if (dist == 2) {
|
||||
heightHere = (int) (height * scalingFactors[1]);
|
||||
} else if (dist == 3) {
|
||||
heightHere = (int) (height * scalingFactors[2]);
|
||||
} else if (dist > 3) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (trunkWidth > 1 && y > 2 && y < (baseHeight - 2))
|
||||
heightHere += random.nextInt(2);
|
||||
|
||||
for (int y = 0; y < heightHere; y++)
|
||||
{
|
||||
if (random.nextInt(5) == 0)
|
||||
{
|
||||
Direction direction = Direction.Plane.HORIZONTAL.getRandomDirection(random);
|
||||
this.generateBush(changedLogs, changedLeaves, world, random, startPos.offset(direction.getStepX()*(trunkWidth-1), y, direction.getStepZ()*(trunkWidth-1)), boundingBox);
|
||||
BlockPos local = startPos.offset(x, y, z);
|
||||
this.placeLog(world, local, changedLogs, boundingBox);
|
||||
|
||||
if (dist > 0 && y > 4 && y < (baseHeight - 2) && random.nextInt(10) == 0) {
|
||||
double theta;
|
||||
if (x == 0 && z == 0) {
|
||||
// Prevents bushes originating from the center from generating too low
|
||||
if (y < 10) {
|
||||
continue;
|
||||
}
|
||||
|
||||
theta = Math.PI * random.nextDouble() * 2;
|
||||
} else {
|
||||
// Make sure the branches only go in the same direction of the current trunk position from the center
|
||||
double angleFromCenter = Math.atan2(x, z);
|
||||
|
||||
theta = angleFromCenter + (Math.PI * (random.nextDouble() * 0.5 - 0.25));
|
||||
}
|
||||
|
||||
int branchLength = (3 - dist) + 1 + random.nextInt(2);
|
||||
|
||||
BlockPos branchPos = null;
|
||||
for (int i = 0; i < branchLength; i++) {
|
||||
branchPos = local.offset(Math.cos(theta) * i, i / 2, Math.sin(theta) * i);
|
||||
|
||||
this.placeLog(world, branchPos, changedLogs, boundingBox);
|
||||
}
|
||||
|
||||
this.generateBush(changedLogs, changedLeaves, world, random, branchPos, boundingBox);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -234,17 +279,17 @@ public class RedwoodTreeFeature extends TreeFeatureBase
|
|||
|
||||
protected boolean generateBush(Set<BlockPos> changedLogs, Set<BlockPos> changedLeaves, IWorld world, Random random, BlockPos pos, MutableBoundingBox boundingBox)
|
||||
{
|
||||
//Generate a bush 3 blocks tall, with the bottom block already set to a log
|
||||
for (int y = 0; y < 2; ++y)
|
||||
//Generate a bush 3 blocks tall, with the center block set to a log
|
||||
for (int y = -1; y < 2; ++y)
|
||||
{
|
||||
// log in the center
|
||||
if (2 - y > 1)
|
||||
if (y == 0)
|
||||
{
|
||||
this.placeLog(world, pos.offset(0, y, 0), changedLogs, boundingBox);
|
||||
}
|
||||
|
||||
//Reduces the radius closer to the top of the bush
|
||||
int leavesRadius = (2 - y > 1 ? 2 : 1);
|
||||
int leavesRadius = y == 0 ? 2 : 1;
|
||||
|
||||
for (int x = -leavesRadius; x <= leavesRadius; ++x)
|
||||
{
|
||||
|
|
|
@ -21,6 +21,7 @@ public class BOPConfiguredSurfaceBuilders
|
|||
public static final ConfiguredSurfaceBuilder<SurfaceBuilderConfig> DEEP_SNOW = register("deep_snow", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.DEEP_TOP_LAYER, BOPSurfaceBuilders.SNOW_SNOW_GRAVEL_SURFACE));
|
||||
public static final ConfiguredSurfaceBuilder<SurfaceBuilderConfig> ALPS_FOOTHILLS = register("alps_foothills", new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_STONE));
|
||||
public static final ConfiguredSurfaceBuilder<SurfaceBuilderConfig> GRAVEL_FULL = register("gravel_full", new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_GRAVEL));
|
||||
public static final ConfiguredSurfaceBuilder<SurfaceBuilderConfig> COLD_DESERT = register("cold_desert", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.COLD_DESERT, SurfaceBuilder.CONFIG_GRAVEL));
|
||||
public static final ConfiguredSurfaceBuilder<SurfaceBuilderConfig> EXPOSED_STONE = register("exposed_stone", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.EXPOSED_STONE, SurfaceBuilder.CONFIG_GRASS));
|
||||
public static final ConfiguredSurfaceBuilder<SurfaceBuilderConfig> DRYLAND = register("dryland", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.DRYLAND, SurfaceBuilder.CONFIG_GRASS));
|
||||
public static final ConfiguredSurfaceBuilder<SurfaceBuilderConfig> MANGROVE = register("mangrove", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.MANGROVE, BOPSurfaceBuilders.MUD_SURFACE));
|
||||
|
@ -35,6 +36,7 @@ public class BOPConfiguredSurfaceBuilders
|
|||
public static final ConfiguredSurfaceBuilder<SurfaceBuilderConfig> GROVE_LAKES = register("grove_lakes", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.DEEP_TOP_LAYER, BOPSurfaceBuilders.DIORITE_SURFACE));
|
||||
public static final ConfiguredSurfaceBuilder<SurfaceBuilderConfig> DEEP_GRASS = register("deep_grass", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.DEEP_TOP_LAYER, SurfaceBuilder.CONFIG_GRASS));
|
||||
public static final ConfiguredSurfaceBuilder<SurfaceBuilderConfig> RAINFOREST_CLIFFS = register("rainforest_cliffs", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.TERRACOTTA, SurfaceBuilder.CONFIG_GRASS));
|
||||
public static final ConfiguredSurfaceBuilder<SurfaceBuilderConfig> STONE_BASIN = register("stone_basin", new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, BOPSurfaceBuilders.BASIN_SURFACE));
|
||||
public static final ConfiguredSurfaceBuilder<SurfaceBuilderConfig> ORIGIN_VALLEY = register("origin_valley", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.ORIGIN_VALLEY, BOPSurfaceBuilders.ORIGIN_GRASS_SURFACE));
|
||||
public static final ConfiguredSurfaceBuilder<SurfaceBuilderConfig> TROPIC_BEACH = register("tropic_beach", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.TROPICS, BOPSurfaceBuilders.WHITE_SAND_SURFACE));
|
||||
public static final ConfiguredSurfaceBuilder<SurfaceBuilderConfig> TROPICS = register("tropics", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.TROPICS, SurfaceBuilder.CONFIG_GRASS));
|
||||
|
|
|
@ -32,6 +32,7 @@ public class BOPSurfaceBuilders
|
|||
public static final SurfaceBuilderConfig BLACK_SAND_SURFACE = new SurfaceBuilderConfig(BOPBlocks.black_sand.defaultBlockState(), BOPBlocks.black_sand.defaultBlockState(), BOPBlocks.black_sand.defaultBlockState());
|
||||
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 SurfaceBuilderConfig BASIN_SURFACE = new SurfaceBuilderConfig(Blocks.AIR.defaultBlockState(), Blocks.STONE.defaultBlockState(), Blocks.GRAVEL.defaultBlockState());
|
||||
|
||||
public static final SurfaceBuilder<SurfaceBuilderConfig> DRYLAND = register("dryland", new DrylandSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable()));
|
||||
public static final SurfaceBuilder<SurfaceBuilderConfig> HIGHLAND_CRAG = register("highland_crag", new HighlandCragSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable()));
|
||||
|
@ -50,6 +51,7 @@ public class BOPSurfaceBuilders
|
|||
public static final SurfaceBuilder<SurfaceBuilderConfig> TROPICS = register("tropics", new TropicsSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable()));
|
||||
public static final SurfaceBuilder<SurfaceBuilderConfig> LUSH_DESERT = register("lush_desert", new LushDesertSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable()));
|
||||
public static final SurfaceBuilder<SurfaceBuilderConfig> BLACK_SAND = register("black_sand", new BlackSandSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable()));
|
||||
public static final SurfaceBuilder<SurfaceBuilderConfig> COLD_DESERT = register("cold_desert", new ColdDesertSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable()));
|
||||
|
||||
private static <C extends ISurfaceBuilderConfig, F extends SurfaceBuilder<C>> F register(String key, F builder)
|
||||
{
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
/*******************************************************************************
|
||||
* 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 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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -61,7 +61,7 @@ public enum BOPShoreLayer implements ICastleTransformer
|
|||
return MUSHROOM_FIELD_SHORE;
|
||||
}
|
||||
}
|
||||
else if (biome != null && biome.getBiomeCategory() == Biome.Category.JUNGLE && biomeId != getBiomeIdIfPresent(BOPBiomes.rainforest, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.rainforest_floodplain, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.rainforest_cliffs, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.fungal_jungle, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.fungal_field, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.overgrown_fungal_jungle, biomeId))
|
||||
else if (biome != null && biome.getBiomeCategory() == Biome.Category.JUNGLE && biomeId != getBiomeIdIfPresent(BOPBiomes.rainforest, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.rainforest_floodplain, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.rainforest_cliffs, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.fungal_jungle, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.fungal_field, biomeId))
|
||||
{
|
||||
if (!isJungleCompatible(northBiomeId) || !isJungleCompatible(eastBiomeId) || !isJungleCompatible(southBiomeId) || !isJungleCompatible(westBiomeId))
|
||||
{
|
||||
|
|
|
@ -37,7 +37,7 @@ public class ClientProxy extends CommonProxy
|
|||
@Override
|
||||
public void init()
|
||||
{
|
||||
addClassicPack();
|
||||
//addClassicPack();
|
||||
|
||||
BlockColors blockColors = Minecraft.getInstance().getBlockColors();
|
||||
ItemColors itemColors = Minecraft.getInstance().getItemColors();
|
||||
|
@ -45,7 +45,7 @@ public class ClientProxy extends CommonProxy
|
|||
//Grass Coloring
|
||||
blockColors.register((state, world, pos, tintIndex) ->
|
||||
world != null && pos != null ? BiomeColors.getAverageGrassColor(world, pos) : GrassColors.get(0.5D, 1.0D),
|
||||
BOPBlocks.sprout, BOPBlocks.watergrass, BOPBlocks.potted_sprout);
|
||||
BOPBlocks.sprout, BOPBlocks.clover, BOPBlocks.huge_clover_petal, BOPBlocks.watergrass, BOPBlocks.potted_sprout, BOPBlocks.potted_clover);
|
||||
|
||||
//Foliage Coloring
|
||||
blockColors.register((state, world, pos, tintIndex) ->
|
||||
|
@ -62,8 +62,8 @@ public class ClientProxy extends CommonProxy
|
|||
itemColors.register((stack, tintIndex) -> {
|
||||
BlockState BlockState = ((BlockItem)stack.getItem()).getBlock().defaultBlockState();
|
||||
return blockColors.getColor(BlockState, null, null, tintIndex); },
|
||||
BOPBlocks.sprout, BOPBlocks.bush, BOPBlocks.flowering_oak_leaves, BOPBlocks.mahogany_leaves,
|
||||
BOPBlocks.palm_leaves, BOPBlocks.willow_leaves, BOPBlocks.willow_vine);
|
||||
BOPBlocks.sprout, BOPBlocks.bush, BOPBlocks.clover, BOPBlocks.huge_clover_petal, BOPBlocks.flowering_oak_leaves,
|
||||
BOPBlocks.mahogany_leaves, BOPBlocks.palm_leaves, BOPBlocks.willow_leaves, BOPBlocks.willow_vine);
|
||||
}
|
||||
|
||||
public static void addClassicPack()
|
||||
|
|
|
@ -150,6 +150,7 @@ public class ModBiomes
|
|||
registerBiome(new BayouBiome(), "bayou");
|
||||
registerBiome(new BurntForestBiome(), "burnt_forest");
|
||||
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");
|
||||
|
@ -163,6 +164,8 @@ public class ModBiomes
|
|||
registerBiome(new FungalFieldBiome(), "fungal_field");
|
||||
registerBiome(new FungalJungleBiome(), "fungal_jungle");
|
||||
registerBiome(new GoldenPrairieBiome(), "golden_prairie");
|
||||
registerBiome(new GrasslandBiome(), "grassland");
|
||||
registerBiome(new GrasslandCloverPatchBiome(), "grassland_clover_patch");
|
||||
registerBiome(new GroveBiome(), "grove");
|
||||
registerBiome(new GroveClearingBiome(), "grove_clearing");
|
||||
registerBiome(new GroveLakesBiome(), "grove_lakes");
|
||||
|
@ -170,7 +173,6 @@ public class ModBiomes
|
|||
registerBiome(new HighlandCragBiome(), "highland_crag");
|
||||
registerBiome(new HighlandMoorBiome(), "highland_moor");
|
||||
registerBiome(new JadeCliffsBiome(), "jade_cliffs");
|
||||
registerBiome(new JadeGrasslandBiome(), "jade_grassland");
|
||||
registerBiome(new LavenderFieldBiome(), "lavender_field");
|
||||
registerBiome(new LavenderForestBiome(), "lavender_forest");
|
||||
registerBiome(new LushDesertBiome(), "lush_desert");
|
||||
|
@ -179,13 +181,11 @@ public class ModBiomes
|
|||
registerBiome(new MeadowBiome(), "meadow");
|
||||
registerBiome(new MeadowForestBiome(), "meadow_forest");
|
||||
registerBiome(new MuskegBiome(), "muskeg");
|
||||
registerBiome(new MushroomyMuskegBiome(), "mushroomy_muskeg");
|
||||
registerBiome(new MysticGroveBiome(), "mystic_grove");
|
||||
registerBiome(new MysticPlainsBiome(), "mystic_plains");
|
||||
registerBiome(new OminousWoodsBiome(), "ominous_woods");
|
||||
registerBiome(new OminousMireBiome(), "ominous_mire");
|
||||
registerBiome(new OriginValleyBiome(), "origin_valley");
|
||||
registerBiome(new OvergrownFungalJungleBiome(), "overgrown_fungal_jungle");
|
||||
registerBiome(new PrairieBiome(), "prairie");
|
||||
registerBiome(new RainbowHillsBiome(), "rainbow_hills");
|
||||
registerBiome(new RainforestBiome(), "rainforest");
|
||||
|
@ -197,14 +197,13 @@ public class ModBiomes
|
|||
registerBiome(new SeasonalForestBiome(), "seasonal_forest");
|
||||
registerBiome(new SeasonalOrchardBiome(), "seasonal_orchard");
|
||||
registerBiome(new SeasonalPumpkinPatchBiome(), "seasonal_pumpkin_patch");
|
||||
registerBiome(new ShroomyWetlandBiome(), "shroomy_wetland");
|
||||
registerBiome(new ShrublandBiome(), "shrubland");
|
||||
registerBiome(new ShrublandHillsBiome(), "shrubland_hills");
|
||||
registerBiome(new SilkgladeBiome(), "silkglade");
|
||||
registerBiome(new SilkgladeNestBiome(), "silkglade_nest");
|
||||
registerBiome(new SnowyConiferousForestBiome(), "snowy_coniferous_forest");
|
||||
registerBiome(new SnowyMapleForestBiome(), "snowy_maple_forest");
|
||||
registerBiome(new SnowyFirClearingBiome(), "snowy_fir_clearing");
|
||||
registerBiome(new TropicPlainsBiome(), "tropic_plains");
|
||||
registerBiome(new TallDeadForestBiome(), "tall_dead_forest");
|
||||
registerBiome(new TropicsBiome(), "tropics");
|
||||
registerBiome(new TundraBiome(), "tundra");
|
||||
registerBiome(new TundraBasinBiome(), "tundra_basin");
|
||||
|
@ -214,7 +213,6 @@ public class ModBiomes
|
|||
registerBiome(new WetlandBiome(), "wetland");
|
||||
registerBiome(new WetlandForestBiome(), "wetland_forest");
|
||||
registerBiome(new WoodedScrublandBiome(), "wooded_scrubland");
|
||||
registerBiome(new WoodedWastelandBiome(), "wooded_wasteland");
|
||||
registerBiome(new WoodlandBiome(), "woodland");
|
||||
|
||||
//Nether Biomes
|
||||
|
@ -235,12 +233,14 @@ public class ModBiomes
|
|||
registerSubBiome(coniferous_forest, fir_clearing, 0.75F, 100);
|
||||
registerSubBiome(coniferous_forest, coniferous_lakes, 1.0F, 100);
|
||||
|
||||
registerSubBiome(dead_forest, tall_dead_forest, 0.75F, 100);
|
||||
registerSubBiome(dead_forest, burnt_forest, 0.6F, 100);
|
||||
|
||||
registerSubBiome(dryland, dry_boneyard, 0.75F, 100);
|
||||
|
||||
registerSubBiome(fungal_jungle, fungal_field, 0.9F, 100);
|
||||
registerSubBiome(fungal_jungle, overgrown_fungal_jungle, 0.65F, 100);
|
||||
|
||||
registerSubBiome(grassland, grassland_clover_patch, 1.0F, 100);
|
||||
|
||||
registerSubBiome(grove, grove_clearing, 1.0F, 100);
|
||||
registerSubBiome(grove, grove_lakes, 1.0F, 100);
|
||||
|
@ -248,8 +248,6 @@ public class ModBiomes
|
|||
registerSubBiome(highland, highland_crag, 1.25F, 100);
|
||||
registerSubBiome(highland, highland_moor, 0.75F, 100);
|
||||
|
||||
registerSubBiome(jade_cliffs, jade_grassland, 0.85F, 100);
|
||||
|
||||
registerSubBiome(lavender_field, lavender_forest, 0.6F, 100);
|
||||
|
||||
registerSubBiome(lush_desert, lush_savanna, 0.65F, 100);
|
||||
|
@ -259,8 +257,6 @@ public class ModBiomes
|
|||
registerSubBiome(meadow, flower_meadow, 1.0F, 100);
|
||||
registerSubBiome(meadow, meadow_forest, 1.0F, 100);
|
||||
|
||||
registerSubBiome(muskeg, mushroomy_muskeg, 0.75F, 100);
|
||||
|
||||
registerSubBiome(mystic_grove, mystic_plains, 0.75F, 100);
|
||||
|
||||
registerSubBiome(ominous_woods, ominous_mire, 0.75F, 100);
|
||||
|
@ -279,19 +275,14 @@ public class ModBiomes
|
|||
|
||||
registerSubBiome(shrubland, shrubland_hills, 0.75F, 100);
|
||||
|
||||
registerSubBiome(silkglade, silkglade_nest, 0.45F, 100);
|
||||
|
||||
registerSubBiome(snowy_coniferous_forest, snowy_fir_clearing, 0.75F, 100);
|
||||
registerSubBiome(snowy_coniferous_forest, snowy_maple_forest, 1.25F, 100);
|
||||
|
||||
registerSubBiome(tropics, tropic_plains, 0.75F, 100);
|
||||
|
||||
registerSubBiome(tundra, tundra_basin, 1.5F, 100);
|
||||
registerSubBiome(tundra, tundra_bog, 2.0F, 100);
|
||||
|
||||
registerSubBiome(wasteland, wooded_wasteland, 0.85F, 100);
|
||||
|
||||
registerSubBiome(wetland, wetland_forest, 1.0F, 100);
|
||||
registerSubBiome(wetland, wetland_forest, 1.5F, 100);
|
||||
registerSubBiome(wetland, shroomy_wetland, 1.5F, 100);
|
||||
|
||||
registerSubBiome(woodland, dense_woodland, 0.9F, 100);
|
||||
|
||||
|
@ -359,6 +350,7 @@ public class ModBiomes
|
|||
registerBiomeToDictionary(bayou_mangrove, Type.OVERWORLD, Type.HOT, Type.WET, Type.SWAMP);
|
||||
registerBiomeToDictionary(burnt_forest, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.DRY, Type.DEAD, Type.RARE, Type.FOREST);
|
||||
registerBiomeToDictionary(cherry_blossom_grove, Type.OVERWORLD, Type.WET, Type.LUSH, Type.RARE, Type.FOREST);
|
||||
registerBiomeToDictionary(cold_desert, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.SNOWY, Type.DRY);
|
||||
registerBiomeToDictionary(coniferous_forest, Type.OVERWORLD, Type.DENSE, Type.CONIFEROUS, Type.FOREST);
|
||||
registerBiomeToDictionary(coniferous_lakes, Type.OVERWORLD, Type.SPARSE, Type.CONIFEROUS, Type.FOREST);
|
||||
registerBiomeToDictionary(dead_forest, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.DEAD, Type.RARE, Type.FOREST);
|
||||
|
@ -373,6 +365,8 @@ public class ModBiomes
|
|||
registerBiomeToDictionary(fungal_jungle, Type.OVERWORLD, Type.HOT, Type.WET, Type.JUNGLE, Type.LUSH, Type.MUSHROOM, Type.RARE);
|
||||
registerBiomeToDictionary(golden_prairie, Type.OVERWORLD, Type.DRY, Type.PLAINS);
|
||||
registerBiomeToDictionary(gravel_beach, Type.OVERWORLD, Type.SPARSE, Type.BEACH);
|
||||
registerBiomeToDictionary(grassland, Type.OVERWORLD, Type.SPARSE, Type.PLAINS, Type.WET);
|
||||
registerBiomeToDictionary(grassland_clover_patch, Type.OVERWORLD, Type.DENSE, Type.PLAINS, Type.WET);
|
||||
registerBiomeToDictionary(grove, Type.OVERWORLD, Type.FOREST, Type.HILLS);
|
||||
registerBiomeToDictionary(grove_clearing, Type.OVERWORLD, Type.SPARSE, Type.PLAINS);
|
||||
registerBiomeToDictionary(grove_lakes, Type.OVERWORLD, Type.SPARSE);
|
||||
|
@ -380,7 +374,6 @@ public class ModBiomes
|
|||
registerBiomeToDictionary(highland_crag, Type.OVERWORLD, Type.SPARSE, Type.MOUNTAIN, Type.WASTELAND);
|
||||
registerBiomeToDictionary(highland_moor, Type.OVERWORLD, Type.SPARSE, Type.WET, Type.MOUNTAIN, Type.SWAMP);
|
||||
registerBiomeToDictionary(jade_cliffs, Type.OVERWORLD, Type.CONIFEROUS, Type.MAGICAL, Type.RARE, Type.FOREST, Type.MOUNTAIN);
|
||||
registerBiomeToDictionary(jade_grassland, Type.OVERWORLD, Type.SPARSE, Type.CONIFEROUS, Type.MAGICAL, Type.RARE, Type.PLAINS);
|
||||
registerBiomeToDictionary(lavender_field, Type.OVERWORLD, Type.LUSH, Type.PLAINS);
|
||||
registerBiomeToDictionary(lavender_forest, Type.OVERWORLD, Type.DENSE, Type.LUSH, Type.FOREST);
|
||||
registerBiomeToDictionary(lush_desert, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.SAVANNA, Type.LUSH, Type.RARE, Type.SANDY);
|
||||
|
@ -389,14 +382,12 @@ public class ModBiomes
|
|||
registerBiomeToDictionary(meadow, Type.OVERWORLD, Type.WET, Type.CONIFEROUS, Type.FOREST);
|
||||
registerBiomeToDictionary(meadow_forest, Type.OVERWORLD, Type.WET, Type.CONIFEROUS, Type.FOREST);
|
||||
registerBiomeToDictionary(muskeg, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.WET, Type.DEAD, Type.RARE, Type.SWAMP, Type.SNOWY);
|
||||
registerBiomeToDictionary(mushroomy_muskeg, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.WET, Type.DEAD, Type.RARE, Type.MUSHROOM, Type.SWAMP, Type.SNOWY);
|
||||
registerBiomeToDictionary(mystic_grove, Type.OVERWORLD, Type.WET, Type.LUSH, Type.MAGICAL, Type.RARE, Type.FOREST);
|
||||
registerBiomeToDictionary(mystic_plains, Type.OVERWORLD, Type.SPARSE, Type.WET, Type.LUSH, Type.MAGICAL, Type.RARE, Type.PLAINS);
|
||||
registerBiomeToDictionary(ominous_mire, Type.OVERWORLD, Type.COLD, Type.WET, Type.CONIFEROUS, Type.SPOOKY, Type.RARE, Type.FOREST, Type.SWAMP);
|
||||
registerBiomeToDictionary(ominous_woods, Type.OVERWORLD, Type.COLD, Type.WET, Type.CONIFEROUS, Type.SPOOKY, Type.RARE, Type.FOREST);
|
||||
registerBiomeToDictionary(orchard, Type.OVERWORLD, Type.SPARSE, Type.LUSH, Type.FOREST, Type.PLAINS);
|
||||
registerBiomeToDictionary(origin_valley, Type.OVERWORLD, Type.RARE);
|
||||
registerBiomeToDictionary(overgrown_fungal_jungle, Type.OVERWORLD, Type.HOT, Type.DENSE, Type.WET, Type.JUNGLE, Type.LUSH, Type.MUSHROOM, Type.RARE, Type.FOREST);
|
||||
registerBiomeToDictionary(prairie, Type.OVERWORLD, Type.SPARSE, Type.DRY, Type.PLAINS);
|
||||
registerBiomeToDictionary(rainbow_hills, Type.OVERWORLD, Type.DENSE, Type.WET, Type.LUSH, Type.MAGICAL, Type.FOREST, Type.HILLS);
|
||||
registerBiomeToDictionary(rainforest, Type.OVERWORLD, Type.HOT, Type.DENSE, Type.WET, Type.JUNGLE, Type.LUSH, Type.FOREST);
|
||||
|
@ -409,15 +400,14 @@ public class ModBiomes
|
|||
registerBiomeToDictionary(seasonal_forest, Type.OVERWORLD, Type.FOREST);
|
||||
registerBiomeToDictionary(seasonal_orchard, Type.OVERWORLD, Type.FOREST);
|
||||
registerBiomeToDictionary(seasonal_pumpkin_patch, Type.OVERWORLD, Type.SPARSE, Type.FOREST);
|
||||
registerBiomeToDictionary(shroomy_wetland, Type.OVERWORLD, Type.WET, Type.FOREST, Type.SWAMP, Type.MUSHROOM);
|
||||
registerBiomeToDictionary(shrubland, Type.OVERWORLD, Type.SPARSE, Type.PLAINS);
|
||||
registerBiomeToDictionary(shrubland_hills, Type.OVERWORLD, Type.PLAINS, Type.HILLS);
|
||||
registerBiomeToDictionary(silkglade, Type.OVERWORLD, Type.DRY, Type.SPOOKY, Type.RARE, Type.FOREST);
|
||||
registerBiomeToDictionary(silkglade_nest, Type.OVERWORLD, Type.DENSE, Type.DRY, Type.SPOOKY, Type.RARE, Type.FOREST);
|
||||
registerBiomeToDictionary(snowy_coniferous_forest, Type.OVERWORLD, Type.COLD, Type.CONIFEROUS, Type.FOREST, Type.SNOWY);
|
||||
registerBiomeToDictionary(snowy_fir_clearing, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.CONIFEROUS, Type.FOREST, Type.SNOWY);
|
||||
registerBiomeToDictionary(snowy_maple_forest, Type.OVERWORLD, Type.COLD, Type.DENSE, Type.CONIFEROUS, Type.FOREST, Type.SNOWY);
|
||||
registerBiomeToDictionary(tall_dead_forest, Type.OVERWORLD, Type.COLD, Type.DEAD, Type.RARE, Type.FOREST);
|
||||
registerBiomeToDictionary(tropic_beach, Type.OVERWORLD, Type.HOT, Type.WET, Type.JUNGLE, Type.LUSH, Type.RARE, Type.BEACH, Type.SANDY);
|
||||
registerBiomeToDictionary(tropic_plains, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.WET, Type.JUNGLE, Type.LUSH, Type.RARE, Type.PLAINS);
|
||||
registerBiomeToDictionary(tropics, Type.OVERWORLD, Type.HOT, Type.WET, Type.JUNGLE, Type.LUSH, Type.RARE);
|
||||
registerBiomeToDictionary(tundra, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.DEAD, Type.PLAINS);
|
||||
registerBiomeToDictionary(tundra_basin, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.DRY, Type.DEAD, Type.WASTELAND);
|
||||
|
@ -428,7 +418,6 @@ public class ModBiomes
|
|||
registerBiomeToDictionary(wetland, Type.OVERWORLD, Type.WET, Type.FOREST, Type.SWAMP);
|
||||
registerBiomeToDictionary(wetland_forest, Type.OVERWORLD, Type.WET, Type.DENSE, Type.FOREST, Type.SWAMP);
|
||||
registerBiomeToDictionary(wooded_scrubland, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.SAVANNA);
|
||||
registerBiomeToDictionary(wooded_wasteland, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.DRY, Type.SAVANNA, Type.DEAD, Type.RARE, Type.WASTELAND);
|
||||
registerBiomeToDictionary(woodland, Type.OVERWORLD, Type.FOREST);
|
||||
|
||||
//Nether Biomes
|
||||
|
@ -447,6 +436,7 @@ public class ModBiomes
|
|||
registerVillagerType(bayou_mangrove, VillagerType.SWAMP);
|
||||
registerVillagerType(burnt_forest, VillagerType.TAIGA);
|
||||
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);
|
||||
|
@ -460,6 +450,8 @@ public class ModBiomes
|
|||
registerVillagerType(fungal_field, VillagerType.JUNGLE);
|
||||
registerVillagerType(fungal_jungle, VillagerType.JUNGLE);
|
||||
registerVillagerType(golden_prairie, VillagerType.PLAINS);
|
||||
registerVillagerType(grassland, VillagerType.PLAINS);
|
||||
registerVillagerType(grassland_clover_patch, VillagerType.PLAINS);
|
||||
registerVillagerType(gravel_beach, VillagerType.PLAINS);
|
||||
registerVillagerType(grove, VillagerType.PLAINS);
|
||||
registerVillagerType(grove_clearing, VillagerType.PLAINS);
|
||||
|
@ -468,7 +460,6 @@ public class ModBiomes
|
|||
registerVillagerType(highland_crag, VillagerType.PLAINS);
|
||||
registerVillagerType(highland_moor, VillagerType.PLAINS);
|
||||
registerVillagerType(jade_cliffs, VillagerType.PLAINS);
|
||||
registerVillagerType(jade_grassland, VillagerType.PLAINS);
|
||||
registerVillagerType(lavender_field, VillagerType.PLAINS);
|
||||
registerVillagerType(lavender_forest, VillagerType.PLAINS);
|
||||
registerVillagerType(lush_desert, VillagerType.SAVANNA);
|
||||
|
@ -477,14 +468,12 @@ public class ModBiomes
|
|||
registerVillagerType(meadow, VillagerType.TAIGA);
|
||||
registerVillagerType(meadow_forest, VillagerType.TAIGA);
|
||||
registerVillagerType(muskeg, VillagerType.SNOW);
|
||||
registerVillagerType(mushroomy_muskeg, VillagerType.SNOW);
|
||||
registerVillagerType(mystic_grove, VillagerType.PLAINS);
|
||||
registerVillagerType(mystic_plains, VillagerType.PLAINS);
|
||||
registerVillagerType(ominous_mire, VillagerType.SWAMP);
|
||||
registerVillagerType(ominous_woods, VillagerType.SWAMP);
|
||||
registerVillagerType(orchard, VillagerType.PLAINS);
|
||||
registerVillagerType(origin_valley, VillagerType.PLAINS);
|
||||
registerVillagerType(overgrown_fungal_jungle, VillagerType.JUNGLE);
|
||||
registerVillagerType(prairie, VillagerType.PLAINS);
|
||||
registerVillagerType(rainbow_hills, VillagerType.PLAINS);
|
||||
registerVillagerType(rainforest, VillagerType.JUNGLE);
|
||||
|
@ -497,15 +486,14 @@ public class ModBiomes
|
|||
registerVillagerType(seasonal_forest, VillagerType.PLAINS);
|
||||
registerVillagerType(seasonal_orchard, VillagerType.PLAINS);
|
||||
registerVillagerType(seasonal_pumpkin_patch, VillagerType.PLAINS);
|
||||
registerVillagerType(shroomy_wetland, VillagerType.SWAMP);
|
||||
registerVillagerType(shrubland, VillagerType.PLAINS);
|
||||
registerVillagerType(shrubland_hills, VillagerType.PLAINS);
|
||||
registerVillagerType(silkglade, VillagerType.SWAMP);
|
||||
registerVillagerType(silkglade_nest, VillagerType.SWAMP);
|
||||
registerVillagerType(snowy_coniferous_forest, VillagerType.SNOW);
|
||||
registerVillagerType(snowy_fir_clearing, VillagerType.SNOW);
|
||||
registerVillagerType(snowy_maple_forest, VillagerType.SNOW);
|
||||
registerVillagerType(tall_dead_forest, VillagerType.TAIGA);
|
||||
registerVillagerType(tropic_beach, VillagerType.JUNGLE);
|
||||
registerVillagerType(tropic_plains, VillagerType.JUNGLE);
|
||||
registerVillagerType(tropics, VillagerType.JUNGLE);
|
||||
registerVillagerType(tundra, VillagerType.TAIGA);
|
||||
registerVillagerType(tundra_basin, VillagerType.TAIGA);
|
||||
|
@ -516,7 +504,6 @@ public class ModBiomes
|
|||
registerVillagerType(wetland, VillagerType.SWAMP);
|
||||
registerVillagerType(wetland_forest, VillagerType.SWAMP);
|
||||
registerVillagerType(wooded_scrubland, VillagerType.SAVANNA);
|
||||
registerVillagerType(wooded_wasteland, VillagerType.DESERT);
|
||||
registerVillagerType(woodland, VillagerType.PLAINS);
|
||||
}
|
||||
|
||||
|
|
|
@ -297,11 +297,15 @@ public class ModBlocks
|
|||
goldenrod = registerBlock(new TallFlowerBlockBOP(AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "goldenrod");
|
||||
|
||||
//Vines
|
||||
willow_vine = registerBlock(new VineBlock(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).noCollission().randomTicks().strength(0.2F).sound(SoundType.GRASS)), "willow_vine");
|
||||
willow_vine = registerBlock(new VineBlock(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).randomTicks().noCollission().strength(0.2F).sound(SoundType.GRASS)), "willow_vine");
|
||||
spanish_moss = registerBlock(new SpanishMossBottomBlock(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).randomTicks().noCollission().instabreak().sound(SoundType.GRASS)), "spanish_moss");
|
||||
spanish_moss_plant = registerBlockNoGroup(new SpanishMossBlock(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "spanish_moss_plant");
|
||||
|
||||
//Plants
|
||||
sprout = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "sprout");
|
||||
bush = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "bush");
|
||||
clover = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "clover");
|
||||
huge_clover_petal = registerBlock(new HugeCloverPetalBlock(AbstractBlock.Properties.of(Material.PLANT).strength(0.2F).sound(SoundType.GRASS)), "huge_clover_petal");
|
||||
dune_grass = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT, MaterialColor.TERRACOTTA_LIGHT_GREEN).noCollission().instabreak().sound(SoundType.GRASS)), "dune_grass");
|
||||
desert_grass = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT, MaterialColor.TERRACOTTA_ORANGE).noCollission().instabreak().sound(SoundType.GRASS)), "desert_grass");
|
||||
dead_grass = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT, MaterialColor.WOOD).noCollission().instabreak().sound(SoundType.GRASS)), "dead_grass");
|
||||
|
@ -348,6 +352,7 @@ public class ModBlocks
|
|||
potted_wilted_lily = registerBlockNoGroup(new FlowerPotBlock(wilted_lily, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_wilted_lily");
|
||||
potted_burning_blossom = registerBlockNoGroup(new FlowerPotBlock(burning_blossom, AbstractBlock.Properties.of(Material.DECORATION).instabreak().lightLevel((state) -> 7)), "potted_burning_blossom");
|
||||
potted_sprout = registerBlockNoGroup(new FlowerPotBlock(sprout, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_sprout");
|
||||
potted_clover = registerBlockNoGroup(new FlowerPotBlock(clover, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_clover");
|
||||
potted_toadstool = registerBlockNoGroup(new FlowerPotBlock(toadstool, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_toadstool");
|
||||
potted_glowshroom = registerBlockNoGroup(new FlowerPotBlock(glowshroom, AbstractBlock.Properties.of(Material.DECORATION).instabreak().lightLevel((state) -> 6)), "potted_glowshroom");
|
||||
|
||||
|
@ -408,8 +413,12 @@ public class ModBlocks
|
|||
RenderTypeLookup.setRenderLayer(blue_hydrangea, cutoutRenderType);
|
||||
RenderTypeLookup.setRenderLayer(goldenrod, cutoutRenderType);
|
||||
RenderTypeLookup.setRenderLayer(willow_vine, cutoutRenderType);
|
||||
RenderTypeLookup.setRenderLayer(spanish_moss, cutoutRenderType);
|
||||
RenderTypeLookup.setRenderLayer(spanish_moss_plant, cutoutRenderType);
|
||||
RenderTypeLookup.setRenderLayer(sprout, cutoutRenderType);
|
||||
RenderTypeLookup.setRenderLayer(bush, cutoutRenderType);
|
||||
RenderTypeLookup.setRenderLayer(clover, cutoutRenderType);
|
||||
RenderTypeLookup.setRenderLayer(huge_clover_petal, cutoutRenderType);
|
||||
RenderTypeLookup.setRenderLayer(dune_grass, cutoutRenderType);
|
||||
RenderTypeLookup.setRenderLayer(desert_grass, cutoutRenderType);
|
||||
RenderTypeLookup.setRenderLayer(dead_grass, cutoutRenderType);
|
||||
|
@ -452,6 +461,7 @@ public class ModBlocks
|
|||
RenderTypeLookup.setRenderLayer(potted_wilted_lily, cutoutRenderType);
|
||||
RenderTypeLookup.setRenderLayer(potted_burning_blossom, cutoutRenderType);
|
||||
RenderTypeLookup.setRenderLayer(potted_sprout, cutoutRenderType);
|
||||
RenderTypeLookup.setRenderLayer(potted_clover, cutoutRenderType);
|
||||
RenderTypeLookup.setRenderLayer(potted_toadstool, cutoutRenderType);
|
||||
RenderTypeLookup.setRenderLayer(potted_glowshroom, cutoutRenderType);
|
||||
|
||||
|
|
|
@ -130,8 +130,12 @@ public class ModVanillaCompat
|
|||
registerFlammable(BOPBlocks.blue_hydrangea, 60, 100);
|
||||
registerFlammable(BOPBlocks.goldenrod, 60, 100);
|
||||
registerFlammable(BOPBlocks.willow_vine, 15, 100);
|
||||
registerFlammable(BOPBlocks.spanish_moss, 60, 100);
|
||||
registerFlammable(BOPBlocks.spanish_moss_plant, 60, 100);
|
||||
registerFlammable(BOPBlocks.sprout, 60, 100);
|
||||
registerFlammable(BOPBlocks.bush, 60, 100);
|
||||
registerFlammable(BOPBlocks.clover, 60, 100);
|
||||
registerFlammable(BOPBlocks.huge_clover_petal, 60, 100);
|
||||
registerFlammable(BOPBlocks.dune_grass, 60, 100);
|
||||
registerFlammable(BOPBlocks.desert_grass, 60, 100);
|
||||
registerFlammable(BOPBlocks.dead_grass, 60, 100);
|
||||
|
@ -220,9 +224,13 @@ public class ModVanillaCompat
|
|||
registerCompostable(0.65F, BOPBlocks.goldenrod);
|
||||
|
||||
registerCompostable(0.5F, BOPBlocks.willow_vine);
|
||||
registerCompostable(0.5F, BOPBlocks.spanish_moss);
|
||||
registerCompostable(0.5F, BOPBlocks.spanish_moss_plant);
|
||||
|
||||
registerCompostable(0.5F, BOPBlocks.sprout);
|
||||
registerCompostable(0.5F, BOPBlocks.bush);
|
||||
registerCompostable(0.5F, BOPBlocks.clover);
|
||||
registerCompostable(0.5F, BOPBlocks.huge_clover_petal);
|
||||
registerCompostable(0.5F, BOPBlocks.dune_grass);
|
||||
registerCompostable(0.5F, BOPBlocks.desert_grass);
|
||||
registerCompostable(0.5F, BOPBlocks.dead_grass);
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"variants": {
|
||||
"": { "model": "biomesoplenty:block/clover" }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"variants": {
|
||||
"facing=east": { "model": "biomesoplenty:block/huge_clover_petal", "y": 90 },
|
||||
"facing=south": { "model": "biomesoplenty:block/huge_clover_petal", "y": 180 },
|
||||
"facing=west": { "model": "biomesoplenty:block/huge_clover_petal", "y": 270 },
|
||||
"facing=north": { "model": "biomesoplenty:block/huge_clover_petal", "y": 0 }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"variants": {
|
||||
"": { "model": "biomesoplenty:block/potted_clover" }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"variants": {
|
||||
"": {
|
||||
"model": "biomesoplenty:block/spanish_moss"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"variants": {
|
||||
"": {
|
||||
"model": "biomesoplenty:block/spanish_moss_plant"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -29,6 +29,8 @@
|
|||
"biome.biomesoplenty.fungal_field": "Fungal Field",
|
||||
"biome.biomesoplenty.fungal_jungle": "Fungal Jungle",
|
||||
"biome.biomesoplenty.golden_prairie": "Golden Prairie",
|
||||
"biome.biomesoplenty.grassland": "Grassland",
|
||||
"biome.biomesoplenty.grassland_clover_patch": "Grassland Clover Patch",
|
||||
"biome.biomesoplenty.gravel_beach": "Gravel Beach",
|
||||
"biome.biomesoplenty.grove": "Grove",
|
||||
"biome.biomesoplenty.grove_clearing": "Grove Clearing",
|
||||
|
@ -37,7 +39,6 @@
|
|||
"biome.biomesoplenty.highland_crag": "Highland Crag",
|
||||
"biome.biomesoplenty.highland_moor": "Highland Moor",
|
||||
"biome.biomesoplenty.jade_cliffs": "Jade Cliffs",
|
||||
"biome.biomesoplenty.jade_grassland": "Jade Grassland",
|
||||
"biome.biomesoplenty.lavender_field": "Lavender Field",
|
||||
"biome.biomesoplenty.lavender_forest": "Lavender Forest",
|
||||
"biome.biomesoplenty.lush_desert": "Lush Desert",
|
||||
|
@ -46,14 +47,12 @@
|
|||
"biome.biomesoplenty.meadow": "Meadow",
|
||||
"biome.biomesoplenty.meadow_forest": "Meadow Forest",
|
||||
"biome.biomesoplenty.muskeg": "Muskeg",
|
||||
"biome.biomesoplenty.mushroomy_muskeg": "Mushroomy Muskeg",
|
||||
"biome.biomesoplenty.mystic_grove": "Mystic Grove",
|
||||
"biome.biomesoplenty.mystic_plains": "Mystic Plains",
|
||||
"biome.biomesoplenty.ominous_mire": "Ominous Mire",
|
||||
"biome.biomesoplenty.ominous_woods": "Ominous Woods",
|
||||
"biome.biomesoplenty.orchard": "Orchard",
|
||||
"biome.biomesoplenty.origin_valley": "Origin Valley",
|
||||
"biome.biomesoplenty.overgrown_fungal_jungle": "Overgrown Fungal Jungle",
|
||||
"biome.biomesoplenty.prairie": "Prairie",
|
||||
"biome.biomesoplenty.rainbow_hills": "Rainbow Hills",
|
||||
"biome.biomesoplenty.rainforest": "Rainforest",
|
||||
|
@ -66,15 +65,14 @@
|
|||
"biome.biomesoplenty.seasonal_forest": "Seasonal Forest",
|
||||
"biome.biomesoplenty.seasonal_orchard": "Seasonal Orchard",
|
||||
"biome.biomesoplenty.seasonal_pumpkin_patch": "Seasonal Pumpkin Patch",
|
||||
"biome.biomesoplenty.shroomy_wetland": "Shroomy Wetland",
|
||||
"biome.biomesoplenty.shrubland": "Shrubland",
|
||||
"biome.biomesoplenty.shrubland_hills": "Shrubland Hills",
|
||||
"biome.biomesoplenty.silkglade": "Silkglade",
|
||||
"biome.biomesoplenty.silkglade_nest": "Silkglade Nest",
|
||||
"biome.biomesoplenty.snowy_coniferous_forest": "Snowy Coniferous Forest",
|
||||
"biome.biomesoplenty.snowy_fir_clearing": "Snowy Fir Clearing",
|
||||
"biome.biomesoplenty.snowy_maple_forest": "Snowy Maple Forest",
|
||||
"biome.biomesoplenty.tall_dead_forest": "Tall Dead Forest",
|
||||
"biome.biomesoplenty.tropic_beach": "Tropic Beach",
|
||||
"biome.biomesoplenty.tropic_plains": "Tropic Plains",
|
||||
"biome.biomesoplenty.tropics": "Tropics",
|
||||
"biome.biomesoplenty.tundra": "Tundra",
|
||||
"biome.biomesoplenty.tundra_basin": "Tundra Basin",
|
||||
|
@ -88,7 +86,6 @@
|
|||
"biome.biomesoplenty.wetland_forest": "Wetland Forest",
|
||||
"biome.biomesoplenty.withered_abyss": "Withered Abyss",
|
||||
"biome.biomesoplenty.wooded_scrubland": "Wooded Scrubland",
|
||||
"biome.biomesoplenty.wooded_wasteland": "Wooded Wasteland",
|
||||
"biome.biomesoplenty.woodland": "Woodland",
|
||||
|
||||
"item.biomesoplenty.bop_icon": "BOP Icon",
|
||||
|
@ -133,6 +130,7 @@
|
|||
"block.biomesoplenty.cherry_wall_sign": "Cherry Wall Sign",
|
||||
"block.biomesoplenty.cherry_wood": "Cherry Wood",
|
||||
"block.biomesoplenty.chiseled_black_sandstone": "Chiseled Black Sandstone",
|
||||
"block.biomesoplenty.clover": "Clover",
|
||||
"block.biomesoplenty.cut_black_sandstone": "Cut Black Sandstone",
|
||||
"block.biomesoplenty.cut_black_sandstone_slab": "Cut Black Sandstone Slab",
|
||||
"block.biomesoplenty.chiseled_orange_sandstone": "Chiseled Orange Sandstone",
|
||||
|
@ -198,6 +196,7 @@
|
|||
"block.biomesoplenty.hellbark_trapdoor": "Hellbark Trapdoor",
|
||||
"block.biomesoplenty.hellbark_wall_sign": "Hellbark Wall Sign",
|
||||
"block.biomesoplenty.hellbark_wood": "Hellbark Wood",
|
||||
"block.biomesoplenty.huge_clover_petal": "Huge Clover Petal",
|
||||
"block.biomesoplenty.jacaranda_button": "Jacaranda Button",
|
||||
"block.biomesoplenty.jacaranda_door": "Jacaranda Door",
|
||||
"block.biomesoplenty.jacaranda_fence": "Jacaranda Fence",
|
||||
|
@ -285,6 +284,7 @@
|
|||
"block.biomesoplenty.pink_daffodil": "Pink Daffodil",
|
||||
"block.biomesoplenty.pink_hibiscus": "Pink Hibiscus",
|
||||
"block.biomesoplenty.potted_burning_blossom": "Potted Burning Blossom",
|
||||
"block.biomesoplenty.potted_clover": "Potted Clover",
|
||||
"block.biomesoplenty.potted_dead_sapling": "Potted Dead Sapling",
|
||||
"block.biomesoplenty.potted_fir_sapling": "Potted Fir Sapling",
|
||||
"block.biomesoplenty.potted_flowering_oak_sapling": "Potted Flowering Oak Sapling",
|
||||
|
@ -343,6 +343,8 @@
|
|||
"block.biomesoplenty.smooth_white_sandstone": "Smooth White Sandstone",
|
||||
"block.biomesoplenty.smooth_white_sandstone_slab": "Smooth White Sandstone Slab",
|
||||
"block.biomesoplenty.smooth_white_sandstone_stairs": "Smooth White Sandstone Stairs",
|
||||
"block.biomesoplenty.spanish_moss": "Spanish Moss",
|
||||
"block.biomesoplenty.spanish_moss_plant": "Spanish Moss Plant",
|
||||
"block.biomesoplenty.sprout": "Sprout",
|
||||
"block.biomesoplenty.stripped_cherry_log": "Stripped Cherry Log",
|
||||
"block.biomesoplenty.stripped_cherry_wood": "Stripped Cherry Wood",
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"ambientocclusion": false,
|
||||
"textures": {
|
||||
"plant": "biomesoplenty:block/clover",
|
||||
"stem": "biomesoplenty:block/clover_stem",
|
||||
"particle": "#plant"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [0, 7, 0],
|
||||
"to": [16, 7, 16],
|
||||
"faces": {
|
||||
"up": {"uv": [0, 0, 16, 16], "texture": "#plant", "tintindex": 0},
|
||||
"down": {"uv": [0, 0, 16, 16], "texture": "#plant", "rotation": 270, "tintindex": 0}
|
||||
}
|
||||
},
|
||||
{ "from": [ 0.8, 0, 8 ],
|
||||
"to": [ 15.2, 16, 8 ],
|
||||
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true },
|
||||
"shade": false,
|
||||
"faces": {
|
||||
"north": { "uv": [ 0, 0, 16, 16 ], "texture": "#stem", "tintindex": 0 },
|
||||
"south": { "uv": [ 0, 0, 16, 16 ], "texture": "#stem", "tintindex": 0 }
|
||||
}
|
||||
},
|
||||
{ "from": [ 8, 0, 0.8 ],
|
||||
"to": [ 8, 16, 15.2 ],
|
||||
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true },
|
||||
"shade": false,
|
||||
"faces": {
|
||||
"west": { "uv": [ 0, 0, 16, 16 ], "texture": "#stem", "tintindex": 0 },
|
||||
"east": { "uv": [ 0, 0, 16, 16 ], "texture": "#stem", "tintindex": 0 }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
"ambientocclusion": false,
|
||||
"textures": {
|
||||
"petal": "biomesoplenty:block/huge_clover_petal",
|
||||
"stem": "biomesoplenty:block/huge_clover_stem",
|
||||
"stem_back": "biomesoplenty:block/huge_clover_stem_back",
|
||||
"particle": "#petal"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [0, 15, 0],
|
||||
"to": [16, 15, 16],
|
||||
"faces": {
|
||||
"up": {"uv": [0, 0, 16, 16], "texture": "#petal", "tintindex": 0},
|
||||
"down": {"uv": [0, 0, 16, 16], "texture": "#petal", "rotation": 270, "tintindex": 0}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [0, 0, 8],
|
||||
"to": [16, 16, 8],
|
||||
"shade": false,
|
||||
"rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8], "rescale": true},
|
||||
"faces": {
|
||||
"north": {"uv": [0, 0, 16, 16], "texture": "#stem_back", "tintindex": 0},
|
||||
"south": {"uv": [0, 0, 16, 16], "texture": "#stem", "tintindex": 0}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,83 @@
|
|||
{
|
||||
"ambientocclusion": false,
|
||||
"textures": {
|
||||
"particle": "minecraft:block/flower_pot",
|
||||
"flowerpot": "minecraft:block/flower_pot",
|
||||
"dirt": "minecraft:block/dirt",
|
||||
"plant": "biomesoplenty:block/clover_stem",
|
||||
"planttop": "biomesoplenty:block/clover"
|
||||
},
|
||||
"elements": [
|
||||
{ "from": [ 5, 0, 5 ],
|
||||
"to": [ 6, 6, 11 ],
|
||||
"faces": {
|
||||
"down": { "uv": [ 5, 5, 6, 11 ], "texture": "#flowerpot", "cullface": "down" },
|
||||
"up": { "uv": [ 5, 5, 6, 11 ], "texture": "#flowerpot" },
|
||||
"north": { "uv": [ 10, 10, 11, 16 ], "texture": "#flowerpot" },
|
||||
"south": { "uv": [ 5, 10, 6, 16 ], "texture": "#flowerpot" },
|
||||
"west": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" },
|
||||
"east": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" }
|
||||
}
|
||||
},
|
||||
{ "from": [ 10, 0, 5 ],
|
||||
"to": [ 11, 6, 11 ],
|
||||
"faces": {
|
||||
"down": { "uv": [ 10, 5, 11, 11 ], "texture": "#flowerpot", "cullface": "down" },
|
||||
"up": { "uv": [ 10, 5, 11, 11 ], "texture": "#flowerpot" },
|
||||
"north": { "uv": [ 5, 10, 6, 16 ], "texture": "#flowerpot" },
|
||||
"south": { "uv": [ 10, 10, 11, 16 ], "texture": "#flowerpot" },
|
||||
"west": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" },
|
||||
"east": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" }
|
||||
}
|
||||
},
|
||||
{ "from": [ 6, 0, 5 ],
|
||||
"to": [ 10, 6, 6 ],
|
||||
"faces": {
|
||||
"down": { "uv": [ 6, 10, 10, 11 ], "texture": "#flowerpot", "cullface": "down" },
|
||||
"up": { "uv": [ 6, 5, 10, 6 ], "texture": "#flowerpot" },
|
||||
"north": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" },
|
||||
"south": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" }
|
||||
}
|
||||
},
|
||||
{ "from": [ 6, 0, 10 ],
|
||||
"to": [ 10, 6, 11 ],
|
||||
"faces": {
|
||||
"down": { "uv": [ 6, 5, 10, 6 ], "texture": "#flowerpot", "cullface": "down" },
|
||||
"up": { "uv": [ 6, 10, 10, 11 ], "texture": "#flowerpot" },
|
||||
"north": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" },
|
||||
"south": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" }
|
||||
}
|
||||
},
|
||||
{ "from": [ 6, 0, 6 ],
|
||||
"to": [ 10, 4, 10 ],
|
||||
"faces": {
|
||||
"down": { "uv": [ 6, 6, 10, 10 ], "texture": "#flowerpot", "cullface": "down" },
|
||||
"up": { "uv": [ 6, 6, 10, 10 ], "texture": "#dirt" }
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [0, 9.3, 0],
|
||||
"to": [16, 9.3, 16],
|
||||
"faces": {
|
||||
"up": {"uv": [0, 0, 16, 16], "texture": "#planttop", "tintindex": 0},
|
||||
"down": {"uv": [0, 0, 16, 16], "texture": "#planttop", "rotation": 270, "tintindex": 0}
|
||||
}
|
||||
},
|
||||
{ "from": [ 2.6, 4, 8 ],
|
||||
"to": [ 13.4, 16, 8 ],
|
||||
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true },
|
||||
"faces": {
|
||||
"north": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 },
|
||||
"south": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 }
|
||||
}
|
||||
},
|
||||
{ "from": [ 8, 4, 2.6 ],
|
||||
"to": [ 8, 16, 13.4 ],
|
||||
"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true },
|
||||
"faces": {
|
||||
"west": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 },
|
||||
"east": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:block/cross",
|
||||
"textures": {
|
||||
"cross": "biomesoplenty:block/spanish_moss"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:block/cross",
|
||||
"textures": {
|
||||
"cross": "biomesoplenty:block/spanish_moss_plant"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "biomesoplenty:block/clover"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "biomesoplenty:item/huge_clover_petal"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "minecraft:item/flower_pot"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "biomesoplenty:block/spanish_moss_plant"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "biomesoplenty:block/spanish_moss_plant"
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 401 B |
After Width: | Height: | Size: 195 B |
Before Width: | Height: | Size: 532 B After Width: | Height: | Size: 571 B |
Before Width: | Height: | Size: 483 B After Width: | Height: | Size: 470 B |
Before Width: | Height: | Size: 350 B After Width: | Height: | Size: 462 B |
After Width: | Height: | Size: 417 B |
After Width: | Height: | Size: 175 B |
After Width: | Height: | Size: 185 B |
After Width: | Height: | Size: 500 B |
After Width: | Height: | Size: 547 B |
After Width: | Height: | Size: 357 B |
After Width: | Height: | Size: 658 B |
After Width: | Height: | Size: 359 B |
After Width: | Height: | Size: 661 B |
After Width: | Height: | Size: 383 B |
After Width: | Height: | Size: 376 B |
After Width: | Height: | Size: 1,000 B |
After Width: | Height: | Size: 1 KiB |
After Width: | Height: | Size: 563 B |
|
@ -56,6 +56,12 @@
|
|||
"conditions": {
|
||||
"biome": "biomesoplenty:cherry_blossom_grove"
|
||||
}
|
||||
},
|
||||
"cold_desert": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:cold_desert"
|
||||
}
|
||||
},
|
||||
"coniferous_forest": {
|
||||
"trigger": "minecraft:location",
|
||||
|
@ -140,6 +146,18 @@
|
|||
"conditions": {
|
||||
"biome": "biomesoplenty:golden_prairie"
|
||||
}
|
||||
},
|
||||
"grassland": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:grassland"
|
||||
}
|
||||
},
|
||||
"grassland_clover_patch": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:grassland_clover_patch"
|
||||
}
|
||||
},
|
||||
"gravel_beach": {
|
||||
"trigger": "minecraft:location",
|
||||
|
@ -188,12 +206,6 @@
|
|||
"conditions": {
|
||||
"biome": "biomesoplenty:jade_cliffs"
|
||||
}
|
||||
},
|
||||
"jade_grassland": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:jade_grassland"
|
||||
}
|
||||
},
|
||||
"lavender_field": {
|
||||
"trigger": "minecraft:location",
|
||||
|
@ -242,12 +254,6 @@
|
|||
"conditions": {
|
||||
"biome": "biomesoplenty:muskeg"
|
||||
}
|
||||
},
|
||||
"mushroomy_muskeg": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:mushroomy_muskeg"
|
||||
}
|
||||
},
|
||||
"mystic_grove": {
|
||||
"trigger": "minecraft:location",
|
||||
|
@ -284,12 +290,6 @@
|
|||
"conditions": {
|
||||
"biome": "biomesoplenty:origin_valley"
|
||||
}
|
||||
},
|
||||
"overgrown_fungal_jungle": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:overgrown_fungal_jungle"
|
||||
}
|
||||
},
|
||||
"prairie": {
|
||||
"trigger": "minecraft:location",
|
||||
|
@ -362,6 +362,12 @@
|
|||
"conditions": {
|
||||
"biome": "biomesoplenty:seasonal_pumpkin_patch"
|
||||
}
|
||||
},
|
||||
"shroomy_wetland": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:shroomy_wetland"
|
||||
}
|
||||
},
|
||||
"shrubland": {
|
||||
"trigger": "minecraft:location",
|
||||
|
@ -374,18 +380,6 @@
|
|||
"conditions": {
|
||||
"biome": "biomesoplenty:shrubland_hills"
|
||||
}
|
||||
},
|
||||
"silkglade": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:silkglade"
|
||||
}
|
||||
},
|
||||
"silkglade_nest": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:silkglade_nest"
|
||||
}
|
||||
},
|
||||
"snowy_coniferous_forest": {
|
||||
"trigger": "minecraft:location",
|
||||
|
@ -404,6 +398,12 @@
|
|||
"conditions": {
|
||||
"biome": "biomesoplenty:snowy_maple_forest"
|
||||
}
|
||||
},
|
||||
"tall_dead_forest": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:tall_dead_forest"
|
||||
}
|
||||
},
|
||||
"tropic_beach": {
|
||||
"trigger": "minecraft:location",
|
||||
|
@ -411,12 +411,6 @@
|
|||
"biome": "biomesoplenty:tropic_beach"
|
||||
}
|
||||
},
|
||||
"tropic_plains": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:tropic_plains"
|
||||
}
|
||||
},
|
||||
"tropics": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
|
@ -494,12 +488,6 @@
|
|||
"conditions": {
|
||||
"biome": "biomesoplenty:wooded_scrubland"
|
||||
}
|
||||
},
|
||||
"wooded_wasteland": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:wooded_wasteland"
|
||||
}
|
||||
},
|
||||
"woodland": {
|
||||
"trigger": "minecraft:location",
|
||||
|
|
|
@ -55,6 +55,12 @@
|
|||
"conditions": {
|
||||
"biome": "biomesoplenty:cherry_blossom_grove"
|
||||
}
|
||||
},
|
||||
"cold_desert": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:cold_desert"
|
||||
}
|
||||
},
|
||||
"coniferous_forest": {
|
||||
"trigger": "minecraft:location",
|
||||
|
@ -139,6 +145,18 @@
|
|||
"conditions": {
|
||||
"biome": "biomesoplenty:golden_prairie"
|
||||
}
|
||||
},
|
||||
"grassland": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:grassland"
|
||||
}
|
||||
},
|
||||
"grassland_clover_patch": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:grassland_clover_patch"
|
||||
}
|
||||
},
|
||||
"gravel_beach": {
|
||||
"trigger": "minecraft:location",
|
||||
|
@ -187,12 +205,6 @@
|
|||
"conditions": {
|
||||
"biome": "biomesoplenty:jade_cliffs"
|
||||
}
|
||||
},
|
||||
"jade_grassland": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:jade_grassland"
|
||||
}
|
||||
},
|
||||
"lavender_field": {
|
||||
"trigger": "minecraft:location",
|
||||
|
@ -241,12 +253,6 @@
|
|||
"conditions": {
|
||||
"biome": "biomesoplenty:muskeg"
|
||||
}
|
||||
},
|
||||
"mushroomy_muskeg": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:mushroomy_muskeg"
|
||||
}
|
||||
},
|
||||
"mystic_grove": {
|
||||
"trigger": "minecraft:location",
|
||||
|
@ -283,12 +289,6 @@
|
|||
"conditions": {
|
||||
"biome": "biomesoplenty:origin_valley"
|
||||
}
|
||||
},
|
||||
"overgrown_fungal_jungle": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:overgrown_fungal_jungle"
|
||||
}
|
||||
},
|
||||
"prairie": {
|
||||
"trigger": "minecraft:location",
|
||||
|
@ -361,6 +361,12 @@
|
|||
"conditions": {
|
||||
"biome": "biomesoplenty:seasonal_pumpkin_patch"
|
||||
}
|
||||
},
|
||||
"shroomy_wetland": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:shroomy_wetland"
|
||||
}
|
||||
},
|
||||
"shrubland": {
|
||||
"trigger": "minecraft:location",
|
||||
|
@ -373,18 +379,6 @@
|
|||
"conditions": {
|
||||
"biome": "biomesoplenty:shrubland_hills"
|
||||
}
|
||||
},
|
||||
"silkglade": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:silkglade"
|
||||
}
|
||||
},
|
||||
"silkglade_nest": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:silkglade_nest"
|
||||
}
|
||||
},
|
||||
"snowy_coniferous_forest": {
|
||||
"trigger": "minecraft:location",
|
||||
|
@ -403,6 +397,12 @@
|
|||
"conditions": {
|
||||
"biome": "biomesoplenty:snowy_fir_clearing"
|
||||
}
|
||||
},
|
||||
"tall_dead_forest": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:tall_dead_forest"
|
||||
}
|
||||
},
|
||||
"tropic_beach": {
|
||||
"trigger": "minecraft:location",
|
||||
|
@ -410,12 +410,6 @@
|
|||
"biome": "biomesoplenty:tropic_beach"
|
||||
}
|
||||
},
|
||||
"tropic_plains": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:tropic_plains"
|
||||
}
|
||||
},
|
||||
"tropics": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
|
@ -493,12 +487,6 @@
|
|||
"conditions": {
|
||||
"biome": "biomesoplenty:wooded_scrubland"
|
||||
}
|
||||
},
|
||||
"wooded_wasteland": {
|
||||
"trigger": "minecraft:location",
|
||||
"conditions": {
|
||||
"biome": "biomesoplenty:wooded_wasteland"
|
||||
}
|
||||
},
|
||||
"woodland": {
|
||||
"trigger": "minecraft:location",
|
||||
|
@ -516,6 +504,7 @@
|
|||
"bayou_mangrove",
|
||||
"burnt_forest",
|
||||
"cherry_blossom_grove",
|
||||
"cold_desert",
|
||||
"coniferous_forest",
|
||||
"coniferous_lakes",
|
||||
"crystalline_chasm",
|
||||
|
@ -530,6 +519,8 @@
|
|||
"fungal_field",
|
||||
"fungal_jungle",
|
||||
"golden_prairie",
|
||||
"grassland",
|
||||
"grassland_clover_patch",
|
||||
"gravel_beach",
|
||||
"grove",
|
||||
"grove_clearing",
|
||||
|
@ -538,7 +529,6 @@
|
|||
"highland_crag",
|
||||
"highland_moor",
|
||||
"jade_cliffs",
|
||||
"jade_grassland",
|
||||
"lavender_field",
|
||||
"lavender_forest",
|
||||
"lush_desert",
|
||||
|
@ -547,14 +537,12 @@
|
|||
"meadow",
|
||||
"meadow_forest",
|
||||
"muskeg",
|
||||
"mushroomy_muskeg",
|
||||
"mystic_grove",
|
||||
"mystic_plains",
|
||||
"ominous_woods",
|
||||
"ominous_mire",
|
||||
"orchard",
|
||||
"origin_valley",
|
||||
"overgrown_fungal_jungle",
|
||||
"prairie",
|
||||
"rainbow_hills",
|
||||
"rainforest",
|
||||
|
@ -567,15 +555,14 @@
|
|||
"seasonal_forest",
|
||||
"seasonal_orchard",
|
||||
"seasonal_pumpkin_patch",
|
||||
"shroomy_wetland",
|
||||
"shrubland",
|
||||
"shrubland_hills",
|
||||
"silkglade",
|
||||
"silkglade_nest",
|
||||
"snowy_coniferous_forest",
|
||||
"snowy_fir_clearing",
|
||||
"snowy_maple_forest",
|
||||
"tall_dead_forest",
|
||||
"tropic_beach",
|
||||
"tropic_plains",
|
||||
"tropics",
|
||||
"tundra",
|
||||
"tundra_basin",
|
||||
|
@ -589,7 +576,6 @@
|
|||
"wetland_forest",
|
||||
"withered_abyss",
|
||||
"wooded_scrubland",
|
||||
"wooded_wasteland",
|
||||
"woodland"
|
||||
]
|
||||
]
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"type": "minecraft:block",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "biomesoplenty:clover"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:match_tool",
|
||||
"predicate": {
|
||||
"tag": "forge:shears"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"type": "minecraft:block",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "biomesoplenty:huge_clover_petal"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:match_tool",
|
||||
"predicate": {
|
||||
"tag": "forge:shears"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"type": "minecraft:block",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:flower_pot"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "biomesoplenty:clover"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -30,6 +30,7 @@
|
|||
"biomesoplenty:potted_wilted_lily",
|
||||
"biomesoplenty:potted_burning_blossom",
|
||||
"biomesoplenty:potted_sprout",
|
||||
"biomesoplenty:potted_clover",
|
||||
"biomesoplenty:potted_toadstool",
|
||||
"biomesoplenty:potted_glowshroom"
|
||||
]
|
||||
|
|