Вопрос Генерация мира.

Версия Minecraft
1.18.X

necko1

Пользователь
Сообщения
140
Решения
2
У меня есть идея написать собственную генерацию мира.
можете дать мне совет типа теории или ссылок на обсуждения/ресурсы, где обсуждают или рассказывают о том, как пошагово работает генерация и что можно изменить?

все, что я мог сделать, это изменить генерацию самого мира (ничего больше, кроме шума), но не биомов.
также, как я понял, сначала обрабатываются биомы, потом шум мира по биомам, а дальше я не понял. ниже я оставлю код своих стараний (ЛОЛ)



Java:
import org.bukkit.Material;
import org.bukkit.generator.ChunkGenerator;
import org.bukkit.generator.WorldInfo;
import org.jetbrains.annotations.NotNull;

import java.util.Random;

public class ChunkGeneration extends ChunkGenerator {

    public void generateNoise(@NotNull WorldInfo worldInfo, @NotNull Random random, int chunkX, int chunkZ, @NotNull ChunkGenerator.ChunkData chunkData) {
        for (int X = 0; X < 16; X++) {
            for (int Z = 0; Z < 16; Z++) {
                int absX = chunkX * 16 + X;
                int absZ = chunkZ * 16 + Z;

                double value = OpenSimplex2S.noise2(worldInfo.getSeed(), absX * 0.005, absZ * 0.005); // Simplex noise
                int height = (int) (80 * value + 80);

                for (int Y = -64; Y < height; Y++) {
                    chunkData.setBlock(X, Y, Z, Material.STONE);
                }
            }
        }
    }

    public void generateSurface(@NotNull WorldInfo worldInfo, @NotNull Random dontCareRandom, int chunkX, int chunkZ, @NotNull ChunkGenerator.ChunkData chunkData) {

    }

    public void generateBedrock(@NotNull WorldInfo worldInfo, @NotNull Random random, int chunkX, int chunkZ, @NotNull ChunkGenerator.ChunkData chunkData) {

    }

    public void generateCaves(@NotNull WorldInfo worldInfo, @NotNull Random random, int chunkX, int chunkZ, @NotNull ChunkGenerator.ChunkData chunkData) {

    }

}
Java:
import org.bukkit.generator.ChunkGenerator;
import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public final class WorldGen extends JavaPlugin {

    @Override
    public void onEnable() {}

    @Override
    public void onDisable() {}

    @Override
    public @NotNull ChunkGenerator getDefaultWorldGenerator(@NotNull String worldName, @Nullable String id) {
        return new ChunkGeneration();
    }
  
}

Вам необходимо зарегистрироваться для просмотра изображений-вложений
Вам необходимо зарегистрироваться для просмотра изображений-вложений
 
1)
2)
3)
4) (закоментирован гайд)
5)
6) (там ещё снизу есть ссылки на другие статьи и API)
 
У меня есть идея написать собственную генерацию мира.
можете дать мне совет типа теории или ссылок на обсуждения/ресурсы, где обсуждают или рассказывают о том, как пошагово работает генерация и что можно изменить?

все, что я мог сделать, это изменить генерацию самого мира (ничего больше, кроме шума), но не биомов.
также, как я понял, сначала обрабатываются биомы, потом шум мира по биомам, а дальше я не понял. ниже я оставлю код своих стараний (ЛОЛ)



Java:
import org.bukkit.Material;
import org.bukkit.generator.ChunkGenerator;
import org.bukkit.generator.WorldInfo;
import org.jetbrains.annotations.NotNull;

import java.util.Random;

public class ChunkGeneration extends ChunkGenerator {

    public void generateNoise(@NotNull WorldInfo worldInfo, @NotNull Random random, int chunkX, int chunkZ, @NotNull ChunkGenerator.ChunkData chunkData) {
        for (int X = 0; X < 16; X++) {
            for (int Z = 0; Z < 16; Z++) {
                int absX = chunkX * 16 + X;
                int absZ = chunkZ * 16 + Z;

                double value = OpenSimplex2S.noise2(worldInfo.getSeed(), absX * 0.005, absZ * 0.005); // Simplex noise
                int height = (int) (80 * value + 80);

                for (int Y = -64; Y < height; Y++) {
                    chunkData.setBlock(X, Y, Z, Material.STONE);
                }
            }
        }
    }

    public void generateSurface(@NotNull WorldInfo worldInfo, @NotNull Random dontCareRandom, int chunkX, int chunkZ, @NotNull ChunkGenerator.ChunkData chunkData) {

    }

    public void generateBedrock(@NotNull WorldInfo worldInfo, @NotNull Random random, int chunkX, int chunkZ, @NotNull ChunkGenerator.ChunkData chunkData) {

    }

    public void generateCaves(@NotNull WorldInfo worldInfo, @NotNull Random random, int chunkX, int chunkZ, @NotNull ChunkGenerator.ChunkData chunkData) {

    }

}
Java:
import org.bukkit.generator.ChunkGenerator;
import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public final class WorldGen extends JavaPlugin {

    @Override
    public void onEnable() {}

    @Override
    public void onDisable() {}

    @Override
    public @NotNull ChunkGenerator getDefaultWorldGenerator(@NotNull String worldName, @Nullable String id) {
        return new ChunkGeneration();
    }
 
}

Вам необходимо зарегистрироваться для просмотра изображений-вложений
Вам необходимо зарегистрироваться для просмотра изображений-вложений

Рекомендую ознакомиться с Этой статьей от Liahim, и копаться в ванильных исходниках майна

 
Назад
Сверху Снизу