protected async Task GenerateOre(IWorld world, ChunkWorldPos chunkWorldPos, GeneratorSettings settings) { var oreGenerator = GrainFactory.GetGrain <IMinableGenerator>(0); await oreGenerator.Generate(world, chunkWorldPos, BlockStates.Dirt(), settings.DirtCount, settings.DirtSize, settings.DirtMinHeight, settings.DirtMaxHeight); await oreGenerator.Generate(world, chunkWorldPos, BlockStates.Gravel(), settings.GravelCount, settings.GravelSize, settings.GravelMinHeight, settings.GravelMaxHeight); await oreGenerator.Generate(world, chunkWorldPos, BlockStates.Granite(), settings.GraniteCount, settings.GraniteSize, settings.GraniteMinHeight, settings.GraniteMaxHeight); await oreGenerator.Generate(world, chunkWorldPos, BlockStates.Diorite(), settings.DioriteCount, settings.DioriteSize, settings.DioriteMinHeight, settings.DioriteMaxHeight); await oreGenerator.Generate(world, chunkWorldPos, BlockStates.Andesite(), settings.AndesiteCount, settings.AndesiteSize, settings.AndesiteMinHeight, settings.AndesiteMaxHeight); await oreGenerator.Generate(world, chunkWorldPos, BlockStates.CoalOre(), settings.CoalCount, settings.CoalSize, settings.CoalMinHeight, settings.CoalMaxHeight); await oreGenerator.Generate(world, chunkWorldPos, BlockStates.IronOre(), settings.IronCount, settings.IronSize, settings.IronMinHeight, settings.IronMaxHeight); await oreGenerator.Generate(world, chunkWorldPos, BlockStates.GoldOre(), settings.GoldCount, settings.GoldSize, settings.GoldMinHeight, settings.GoldMaxHeight); await oreGenerator.Generate(world, chunkWorldPos, BlockStates.DiamondOre(), settings.DiamondCount, settings.DiamondSize, settings.DiamondMinHeight, settings.DiamondMaxHeight); await oreGenerator.Generate(world, chunkWorldPos, BlockStates.RedstoneOre(), settings.RedstoneCount, settings.RedstoneSize, settings.RedstoneMinHeight, settings.RedstoneMaxHeight); await oreGenerator.Generate(world, chunkWorldPos, BlockStates.LapisLazuliOre(), settings.LapisCount, settings.LapisSize, settings.LapisCenterHeight - settings.LapisSpread, settings.LapisCenterHeight + settings.LapisSpread); }
public Biome(BiomeProperties properties, GeneratorSettings genSettings) { _genSettings = genSettings; _name = properties.BiomeName; _biomeId = properties.BiomeId; _baseHeight = properties.BaseHeight; _heightVariation = properties.HeightVariation; _temperature = properties.Temperature; _rainfall = properties.Rainfall; _waterColor = properties.WaterColor; _enableSnow = properties.EnableSnow; _enableRain = properties.EnableRain; _dirtGen = new MinableGenerator( BlockStates.Dirt(), genSettings.DirtSize); _gravelOreGen = new MinableGenerator( BlockStates.Gravel(), genSettings.GravelSize); _graniteGen = new MinableGenerator( BlockStates.Stone(StoneType.Granite), genSettings.GraniteSize); _dioriteGen = new MinableGenerator( BlockStates.Stone(StoneType.Diorite), genSettings.DioriteSize); _andesiteGen = new MinableGenerator( BlockStates.Stone(StoneType.Andesite), genSettings.AndesiteSize); _coalGen = new MinableGenerator( BlockStates.CoalOre(), genSettings.CoalSize); _ironGen = new MinableGenerator( BlockStates.IronOre(), genSettings.IronSize); _goldGen = new MinableGenerator( BlockStates.GoldOre(), genSettings.GoldSize); _redstoneGen = new MinableGenerator( BlockStates.RedstoneOre(), genSettings.RedstoneSize); _diamondGen = new MinableGenerator( BlockStates.DiamondOre(), genSettings.DiamondSize); _lapisGen = new MinableGenerator( BlockStates.LapisLazuliOre(), genSettings.LapisSize); _treesPerChunk = 0; // mc 0 _extraTreeChance = 0.05F; // mc 0.05F _grassPerChunk = 10; _flowersPerChunk = 4; _mushroomsPerChunk = 0; _deadBushPerChunk = 2; _reedsPerChunk = 50; _cactiPerChunk = 10; }
public override void GenerateBiomeTerrain(int seaLevel, Random rand, ChunkColumnStorage chunk, int chunk_x, int chunk_z, int x_in_chunk, int z_in_chunk, double noiseVal) { _topBlock = BlockStates.GrassBlock(); _fillerBlock = BlockStates.Dirt(); if ((noiseVal < -1.0D || noiseVal > 2.0D) && _type == BiomeHillType.Mutated) { _topBlock = BlockStates.Gravel(); _fillerBlock = BlockStates.Gravel(); } else if (noiseVal > 0.0D && _type != BiomeHillType.ExtraTrees) { _topBlock = BlockStates.Stone(); _fillerBlock = BlockStates.Stone(); } base.GenerateBiomeTerrain(seaLevel, rand, chunk, chunk_x, chunk_z, x_in_chunk, z_in_chunk, noiseVal); }
// ��������Ⱥϵ���еķ��� public virtual void GenerateBiomeTerrain(int seaLevel, Random rand, ChunkColumnStorage chunk, int chunk_x, int chunk_z, int x_in_chunk, int z_in_chunk, double noiseVal) { BlockState topBlockstate = _topBlock; BlockState fillerBlockstate = _fillerBlock; int surfaceFlag = -1; int surfaceDepth = (int)(noiseVal / 3.0D + 3.0D + rand.NextDouble() * 0.25D); for (int y = 255; y >= 0; --y) { if (y <= rand.Next(5)) { chunk[x_in_chunk, y, z_in_chunk] = BlockStates.Bedrock(); } else { BlockState iblockstate = chunk[x_in_chunk, y, z_in_chunk]; if (iblockstate.IsAir()) { surfaceFlag = -1; } else if (iblockstate == BlockStates.Stone()) { // ������ʯͷ��������Ⱥϵ�滻 if (surfaceFlag == -1) { if (surfaceDepth <= 0) { topBlockstate = BlockStates.Air(); fillerBlockstate = BlockStates.Stone(); } else if (y >= seaLevel - 4 && y <= seaLevel + 1) { topBlockstate = _topBlock; fillerBlockstate = _fillerBlock; } // TODO �����¶ȱ仯����ˮ��״̬ surfaceFlag = surfaceDepth; if (y >= seaLevel - 1) { chunk[x_in_chunk, y, z_in_chunk] = topBlockstate; } else if (y < seaLevel - 7 - surfaceDepth) { topBlockstate = BlockStates.Air(); fillerBlockstate = BlockStates.Stone(); chunk[x_in_chunk, y, z_in_chunk] = BlockStates.Gravel(); } else { chunk[x_in_chunk, y, z_in_chunk] = fillerBlockstate; } } else if (surfaceFlag > 0) { --surfaceFlag; chunk[x_in_chunk, y, z_in_chunk] = fillerBlockstate; } } } } }