Search in sources :

Example 6 with Forest

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());
}
Also used : WorldGenConstants(org.spongepowered.common.world.gen.WorldGenConstants) BiomeHills(net.minecraft.world.biome.BiomeHills) Blocks(net.minecraft.init.Blocks) SpongeBiomeGenerationSettings(org.spongepowered.common.world.biome.SpongeBiomeGenerationSettings) BiomeTreeTypes(org.spongepowered.api.world.gen.type.BiomeTreeTypes) World(net.minecraft.world.World) BiomeDecorator(net.minecraft.world.biome.BiomeDecorator) Forest(org.spongepowered.api.world.gen.populator.Forest) GroundCoverLayer(org.spongepowered.api.world.biome.GroundCoverLayer) SeededVariableAmount(org.spongepowered.api.util.weighted.SeededVariableAmount) VariableAmount(org.spongepowered.api.util.weighted.VariableAmount) Final(org.spongepowered.asm.mixin.Final) BlockState(org.spongepowered.api.block.BlockState) IBlockState(net.minecraft.block.state.IBlockState) Ore(org.spongepowered.api.world.gen.populator.Ore) Mixin(org.spongepowered.asm.mixin.Mixin) RandomBlock(org.spongepowered.api.world.gen.populator.RandomBlock) Shadow(org.spongepowered.asm.mixin.Shadow) BlockSilverfish(net.minecraft.block.BlockSilverfish) RandomBlock(org.spongepowered.api.world.gen.populator.RandomBlock) IBlockState(net.minecraft.block.state.IBlockState) Ore(org.spongepowered.api.world.gen.populator.Ore) Forest(org.spongepowered.api.world.gen.populator.Forest) GroundCoverLayer(org.spongepowered.api.world.biome.GroundCoverLayer) BiomeDecorator(net.minecraft.world.biome.BiomeDecorator)

Example 7 with Forest

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());
}
Also used : ShrubType(org.spongepowered.api.data.type.ShrubType) Vine(org.spongepowered.api.world.gen.populator.Vine) WeightedObject(org.spongepowered.api.util.weighted.WeightedObject) Shrub(org.spongepowered.api.world.gen.populator.Shrub) Forest(org.spongepowered.api.world.gen.populator.Forest) Populator(org.spongepowered.api.world.gen.Populator) BiomeDecorator(net.minecraft.world.biome.BiomeDecorator) Melon(org.spongepowered.api.world.gen.populator.Melon)

Example 8 with Forest

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);
}
Also used : MesaBiomeGenerationPopulator(org.spongepowered.common.world.gen.populators.MesaBiomeGenerationPopulator) Ore(org.spongepowered.api.world.gen.populator.Ore) Cactus(org.spongepowered.api.world.gen.populator.Cactus) Forest(org.spongepowered.api.world.gen.populator.Forest) ChunkGeneratorSettings(net.minecraft.world.gen.ChunkGeneratorSettings) BiomeDecorator(net.minecraft.world.biome.BiomeDecorator)

Example 9 with Forest

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());
}
Also used : IceSpike(org.spongepowered.api.world.gen.populator.IceSpike) Forest(org.spongepowered.api.world.gen.populator.Forest) IcePath(org.spongepowered.api.world.gen.populator.IcePath) BiomeDecorator(net.minecraft.world.biome.BiomeDecorator)

Aggregations

BiomeDecorator (net.minecraft.world.biome.BiomeDecorator)9 Forest (org.spongepowered.api.world.gen.populator.Forest)9 BlockState (org.spongepowered.api.block.BlockState)3 GroundCoverLayer (org.spongepowered.api.world.biome.GroundCoverLayer)3 DoublePlant (org.spongepowered.api.world.gen.populator.DoublePlant)3 Ore (org.spongepowered.api.world.gen.populator.Ore)3 Shrub (org.spongepowered.api.world.gen.populator.Shrub)3 IBlockState (net.minecraft.block.state.IBlockState)2 ChunkGeneratorSettings (net.minecraft.world.gen.ChunkGeneratorSettings)2 ShrubType (org.spongepowered.api.data.type.ShrubType)2 WeightedObject (org.spongepowered.api.util.weighted.WeightedObject)2 Cactus (org.spongepowered.api.world.gen.populator.Cactus)2 Flower (org.spongepowered.api.world.gen.populator.Flower)2 RandomBlock (org.spongepowered.api.world.gen.populator.RandomBlock)2 BlockSilverfish (net.minecraft.block.BlockSilverfish)1 Blocks (net.minecraft.init.Blocks)1 World (net.minecraft.world.World)1 BiomeForest (net.minecraft.world.biome.BiomeForest)1 BiomeHills (net.minecraft.world.biome.BiomeHills)1 ChanceTable (org.spongepowered.api.util.weighted.ChanceTable)1