Помогите Генерация гор в ChunkGenerator.

Статус
Закрыто для дальнейших ответов.

Lisenochek

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Lisenochek
Всем привет. Сделал свою генерацию мира, используя класс ChunkGenerator, но столкнулся с такой проблемой, что я не могу сгенерировать банальную гору. При попытках получалось, что гора создавалась ТОЛЬКО на чанке во входящем аргументе. Также пробовал создать горы в биоме, но выходила та же петрушка. Как можно создать гору на множествах чанках?

Прошерстил весь интернет и практически нет никаких статей об ChunkData, но есть кучу гайдов об генерации чанков с помощью байт-кода, который щас устарел. Есть гайд, по которому я и написал код ниже, но я так и не понял, как создавать разные шумы и уровни генерации.

Код.

Код:
        @Override
        public ChunkData generateChunkData(World world, Random random, int chunkX, int chunkZ, BiomeGrid biome) {

            SimplexOctaveGenerator generator = new SimplexOctaveGenerator(new Random(world.getSeed()), 8);
            ChunkData chunk = createChunkData(world);
            generator.setScale(0.01D);

            List<Biome> biomes = Arrays.asList(Biome.TAIGA, Biome.FOREST, Biome.PLAINS);

            for (int x = 0; x < 16; x++) {
                for (int z = 0; z < 16; z++) {

                    if (!biomes.contains(biome.getBiome(x, z))) biome.setBiome(x, z, Biome.PLAINS);

                    currentHeight = (int) (generator.noise(chunkX * 16 + x, chunkZ * 16 + z, 0.6D, 0.6D) * 15D + 70D);

                    if (biome.getBiome(x, z) == Biome.TAIGA) {
                        currentHeight = (int) (generator.noise(chunkX * 16 + x, chunkZ * 16 + z, 0.6D, 0.6D) * 15D + 80D);
                        chunk.setBlock(x, currentHeight, z, Material.SNOW_BLOCK);
                        for (int i = currentHeight - 1; i > 0; i--) chunk.setBlock(x, i, z, Material.STONE);
                        continue;
                    }

                    chunk.setBlock(x, currentHeight, z, Material.GRASS);
                    chunk.setBlock(x, currentHeight - 1, z, Material.DIRT);
                    for (int i = currentHeight - 2; i > 0; i--) chunk.setBlock(x, i, z, Material.STONE);
                    chunk.setBlock(x, 0, z, Material.BEDROCK);
                }
            }
            return chunk;
        }
 
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.
Назад
Верх