use of org.spongepowered.api.world.gen.populator.Forest in project SpongeCommon by SpongePowered.
the class MixinBiomeHills method buildPopulators.
@Override
public void buildPopulators(World world, SpongeBiomeGenerationSettings gensettings) {
super.buildPopulators(world, gensettings);
gensettings.getGroundCoverLayers().clear();
gensettings.getGroundCoverLayers().add(new GroundCoverLayer((stoneNoise) -> {
IBlockState result = Blocks.GRASS.getDefaultState();
if ((stoneNoise < -1.0D || stoneNoise > 2.0D) && this.type == BiomeHills.Type.MUTATED) {
result = Blocks.GRAVEL.getDefaultState();
} else if (stoneNoise > 1.0D && this.type != BiomeHills.Type.EXTRA_TREES) {
result = Blocks.STONE.getDefaultState();
}
return (BlockState) result;
}, SeededVariableAmount.fixed(1)));
gensettings.getGroundCoverLayers().add(new GroundCoverLayer((stoneNoise) -> {
IBlockState result = Blocks.DIRT.getDefaultState();
if ((stoneNoise < -1.0D || stoneNoise > 2.0D) && this.type == BiomeHills.Type.MUTATED) {
result = Blocks.GRAVEL.getDefaultState();
} else if (stoneNoise > 1.0D && this.type != BiomeHills.Type.EXTRA_TREES) {
result = Blocks.STONE.getDefaultState();
}
return (BlockState) result;
}, WorldGenConstants.GROUND_COVER_DEPTH));
BiomeDecorator theBiomeDecorator = this.decorator;
RandomBlock emerald = RandomBlock.builder().block((BlockState) Blocks.EMERALD_ORE.getDefaultState()).placementTarget(WorldGenConstants.STONE_LOCATION).perChunk(VariableAmount.baseWithRandomAddition(3, 6)).height(VariableAmount.baseWithRandomAddition(4, 28)).build();
gensettings.getPopulators().add(emerald);
Ore silverfish = Ore.builder().ore((BlockState) Blocks.MONSTER_EGG.getDefaultState().withProperty(BlockSilverfish.VARIANT, BlockSilverfish.EnumType.STONE)).perChunk(7).height(VariableAmount.baseWithRandomAddition(0, 64)).size(9).build();
gensettings.getPopulators().add(silverfish);
gensettings.getPopulators().removeAll(gensettings.getPopulators(Forest.class));
Forest.Builder forest = Forest.builder();
forest.perChunk(VariableAmount.baseWithOptionalAddition(theBiomeDecorator.treesPerChunk, 1, 0.1));
forest.type(BiomeTreeTypes.TALL_TAIGA.getPopulatorObject(), 20);
forest.type(BiomeTreeTypes.OAK.getPopulatorObject(), 9);
forest.type(BiomeTreeTypes.OAK.getLargePopulatorObject().get(), 1);
gensettings.getPopulators().add(0, forest.build());
}
use of org.spongepowered.api.world.gen.populator.Forest in project SpongeCommon by SpongePowered.
the class MixinBiomeJungle method buildPopulators.
@Override
public void buildPopulators(World world, SpongeBiomeGenerationSettings gensettings) {
super.buildPopulators(world, gensettings);
BiomeDecorator theBiomeDecorator = this.decorator;
for (Iterator<Populator> it = gensettings.getPopulators().iterator(); it.hasNext(); ) {
Populator next = it.next();
if (next instanceof Shrub) {
Shrub s = (Shrub) next;
if (s.getTypes().size() == 1) {
TableEntry<ShrubType> entry = s.getTypes().getEntries().get(0);
if (entry instanceof WeightedObject && ((WeightedObject<ShrubType>) entry).get() == ShrubTypes.TALL_GRASS) {
it.remove();
}
}
}
}
Shrub grass = Shrub.builder().perChunk(theBiomeDecorator.grassPerChunk * 128).type(ShrubTypes.FERN, 1).type(ShrubTypes.TALL_GRASS, 3).build();
gensettings.getPopulators().add(grass);
Melon melon = Melon.builder().perChunk(64).build();
gensettings.getPopulators().add(melon);
Vine vine = Vine.builder().perChunk(50).build();
gensettings.getPopulators().add(vine);
gensettings.getPopulators().removeAll(gensettings.getPopulators(Forest.class));
Forest.Builder forest = Forest.builder();
forest.perChunk(VariableAmount.baseWithOptionalAddition(theBiomeDecorator.treesPerChunk, 1, 0.1));
forest.type(BiomeTreeTypes.OAK.getLargePopulatorObject().get(), 1);
forest.type(BiomeTreeTypes.JUNGLE_BUSH.getPopulatorObject(), 4.5);
if (!this.isEdge) {
forest.type(BiomeTreeTypes.JUNGLE.getLargePopulatorObject().get(), 1.2);
forest.type(BiomeTreeTypes.JUNGLE.getPopulatorObject(), 3);
} else {
forest.type(BiomeTreeTypes.JUNGLE.getPopulatorObject(), 4.5);
}
gensettings.getPopulators().add(0, forest.build());
}
use of org.spongepowered.api.world.gen.populator.Forest in project SpongeCommon by SpongePowered.
the class MixinBiomeMesa method buildPopulators.
@Override
public void buildPopulators(World world, SpongeBiomeGenerationSettings gensettings) {
gensettings.getGenerationPopulators().add(new MesaBiomeGenerationPopulator(this.brycePillars, this.hasForest));
super.buildPopulators(world, gensettings);
String s = world.getWorldInfo().getGeneratorOptions();
ChunkGeneratorSettings settings;
if (s != null) {
settings = ChunkGeneratorSettings.Factory.jsonToFactory(s).build();
} else {
settings = ChunkGeneratorSettings.Factory.jsonToFactory("").build();
}
// Extra gold is generated in mesa biomes
Ore gold = Ore.builder().ore((BlockState) Blocks.GOLD_ORE.getDefaultState()).size(settings.goldSize).perChunk(20).height(VariableAmount.baseWithRandomAddition(32, 80 - 32)).build();
gensettings.getPopulators().add(gold);
BiomeDecorator theBiomeDecorator = this.decorator;
gensettings.getGroundCoverLayers().clear();
gensettings.getPopulators().removeAll(gensettings.getPopulators(Forest.class));
Forest.Builder forest = Forest.builder();
forest.perChunk(VariableAmount.baseWithOptionalAddition(theBiomeDecorator.treesPerChunk, 1, 0.1));
forest.type(BiomeTreeTypes.OAK.getPopulatorObject(), 1);
gensettings.getPopulators().add(0, forest.build());
gensettings.getPopulators().removeAll(gensettings.getPopulators(Cactus.class));
Cactus cactus = Cactus.builder().cactiPerChunk(VariableAmount.baseWithOptionalAddition(0, VariableAmount.baseWithRandomAddition(1, VariableAmount.baseWithOptionalAddition(2, 3, 0.25)), 0.4)).build();
gensettings.getPopulators().add(cactus);
}
use of org.spongepowered.api.world.gen.populator.Forest in project SpongeCommon by SpongePowered.
the class MixinBiomeSnow method buildPopulators.
@Override
public void buildPopulators(World world, SpongeBiomeGenerationSettings gensettings) {
if (this.superIcy) {
IceSpike spike = IceSpike.builder().spikesPerChunk(3).build();
gensettings.getPopulators().add(spike);
IcePath path = IcePath.builder().perChunk(2).radius(VariableAmount.baseWithRandomAddition(2, 2)).build();
gensettings.getPopulators().add(path);
}
super.buildPopulators(world, gensettings);
BiomeDecorator theBiomeDecorator = this.decorator;
gensettings.getPopulators().removeAll(gensettings.getPopulators(Forest.class));
Forest.Builder forest = Forest.builder();
forest.perChunk(VariableAmount.baseWithOptionalAddition(theBiomeDecorator.treesPerChunk, 2, 0.1));
forest.type(BiomeTreeTypes.TALL_TAIGA.getPopulatorObject(), 1);
gensettings.getPopulators().add(0, forest.build());
}
Aggregations