Search in sources :

Example 6 with Ore

use of org.spongepowered.api.world.gen.populator.Ore 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 7 with Ore

use of org.spongepowered.api.world.gen.populator.Ore in project SpongeForge by SpongePowered.

the class SpongeChunkGeneratorForge method checkForgeEvent.

private boolean checkForgeEvent(Populator populator, IChunkGenerator chunkProvider, int chunkX, int chunkZ, List<String> flags, Chunk chunk) {
    boolean village_flag = flags.contains(WorldGenConstants.VILLAGE_FLAG);
    if (populator instanceof Ore && populator instanceof WorldGenerator) {
        BlockType type = ((Ore) populator).getOreBlock().getType();
        GenerateMinable.EventType otype = null;
        if (type.equals(BlockTypes.DIRT)) {
            otype = GenerateMinable.EventType.DIRT;
        } else if (type.equals(BlockTypes.GRAVEL)) {
            otype = GenerateMinable.EventType.GRAVEL;
        } else if (type.equals(BlockTypes.STONE)) {
            BlockState state = ((Ore) populator).getOreBlock();
            Optional<StoneType> stype;
            if ((stype = state.get(Keys.STONE_TYPE)).isPresent()) {
                StoneType stoneType = stype.get();
                if (stoneType.equals(StoneTypes.DIORITE)) {
                    otype = GenerateMinable.EventType.DIORITE;
                } else if (stoneType.equals(StoneTypes.ANDESITE)) {
                    otype = GenerateMinable.EventType.ANDESITE;
                } else if (stoneType.equals(StoneTypes.GRANITE)) {
                    otype = GenerateMinable.EventType.GRANITE;
                } else {
                    return true;
                }
            }
        } else if (type.equals(BlockTypes.COAL_ORE)) {
            otype = GenerateMinable.EventType.COAL;
        } else if (type.equals(BlockTypes.IRON_ORE)) {
            otype = GenerateMinable.EventType.IRON;
        } else if (type.equals(BlockTypes.GOLD_ORE)) {
            otype = GenerateMinable.EventType.GOLD;
        } else if (type.equals(BlockTypes.REDSTONE_ORE)) {
            otype = GenerateMinable.EventType.REDSTONE;
        } else if (type.equals(BlockTypes.DIAMOND_ORE)) {
            otype = GenerateMinable.EventType.DIAMOND;
        } else if (type.equals(BlockTypes.LAPIS_ORE)) {
            otype = GenerateMinable.EventType.LAPIS;
        } else if (type.equals(BlockTypes.QUARTZ_ORE)) {
            otype = GenerateMinable.EventType.QUARTZ;
        } else if (type.equals(BlockTypes.EMERALD_ORE)) {
            otype = GenerateMinable.EventType.EMERALD;
        } else if (type.equals(BlockTypes.MONSTER_EGG)) {
            otype = GenerateMinable.EventType.SILVERFISH;
        }
        return otype == null || TerrainGen.generateOre((World) chunk.getWorld(), this.rand, (WorldGenerator) populator, VecHelper.toBlockPos(chunk.getBlockMin()), otype);
    }
    Populate.EventType etype = this.getForgeEventTypeForPopulator(populator, chunk);
    boolean populate = TerrainGen.populate(chunkProvider, (net.minecraft.world.World) chunk.getWorld(), this.rand, chunkX, chunkZ, village_flag, etype);
    Decorate.EventType detype = this.getForgeDecorateEventTypeForPopulator(populator, chunk);
    boolean decorate = TerrainGen.decorate((World) chunk.getWorld(), this.rand, VecHelper.toBlockPos(chunk.getBlockMin()), detype);
    // TODO May need to separate this..
    return populate && decorate;
}
Also used : WorldGenerator(net.minecraft.world.gen.feature.WorldGenerator) Ore(org.spongepowered.api.world.gen.populator.Ore) StoneType(org.spongepowered.api.data.type.StoneType) Decorate(net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate) World(net.minecraft.world.World) BlockState(org.spongepowered.api.block.BlockState) BlockType(org.spongepowered.api.block.BlockType) Populate(net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate) GenerateMinable(net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable)

Aggregations

Ore (org.spongepowered.api.world.gen.populator.Ore)7 IBlockState (net.minecraft.block.state.IBlockState)3 BiomeDecorator (net.minecraft.world.biome.BiomeDecorator)3 BlockState (org.spongepowered.api.block.BlockState)3 Forest (org.spongepowered.api.world.gen.populator.Forest)3 RandomBlock (org.spongepowered.api.world.gen.populator.RandomBlock)3 World (net.minecraft.world.World)2 ChunkGeneratorSettings (net.minecraft.world.gen.ChunkGeneratorSettings)2 ChanceTable (org.spongepowered.api.util.weighted.ChanceTable)2 GroundCoverLayer (org.spongepowered.api.world.biome.GroundCoverLayer)2 Cactus (org.spongepowered.api.world.gen.populator.Cactus)2 MushroomType (org.spongepowered.api.world.gen.type.MushroomType)2 BlockSilverfish (net.minecraft.block.BlockSilverfish)1 Blocks (net.minecraft.init.Blocks)1 BiomeHills (net.minecraft.world.biome.BiomeHills)1 WorldGenMinable (net.minecraft.world.gen.feature.WorldGenMinable)1 WorldGenerator (net.minecraft.world.gen.feature.WorldGenerator)1 Decorate (net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate)1 GenerateMinable (net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable)1 Populate (net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate)1