Океан в кастомном мире

Версия Minecraft
1.12.2
5,018
47
783
Здравствуйте. Сделал я значит свой мир более-менее, начал делать всякие биомы, хорошо вроде все шло... Но когда я добавил океан и сетнул ему высоту -1(как в ванилле, к слову), то вместо него стал спавнится какой то дефолтный ванильный биом. То есть написано что биом мой, но вот высоту -1 он точно никак не имеет. Вровень с остальными биомчиками...

Кто знает, в чем дело, почему не сетается высота?

Не знаю точно какой код в этом виноват поэтому напишите что вам угодно посмотреть, я скину.
 
Решение
Во, я только сейчас заметил свою ошибку и уже исправил тот пост, где выкладывал Test_Dimension.rar
По факту у тебя всегда биомы генерировались "не на своих местах", просто ты этого не заметил.

Ошибка у тебя в этом коде:
Java:
return new GenLayer[] { genlayer, genlayer };
Если что, генерация самой поверхности происходит по другому массиву, который меньше. Код нужно исправить. Вместо
Java:
genlayer = new GenLayerFuzzyZoom(2002L, genlayer);
       
genlayer = new GenLayerVoronoiZoom(10L, genlayer);
genlayer.initWorldGenSeed(seed);
return new GenLayer[] { genlayer, genlayer };
Вставь этот
Java:
GenLayer genlayer_pre = new GenLayerFuzzyZoom(2002L, genlayer);

genlayer = new GenLayerVoronoiZoom(10L, genlayer_pre)...
102
3
77
Сделал я значит свой мир более-менее, начал делать всякие биомы, хорошо вроде все шло...
Алгоритм генерации биомов.
Но когда я добавил океан и сетнул ему высоту -1(как в ванилле, к слову)
И как определяешь свой океан.
то вместо него стал спавнится какой то дефолтный ванильный биом
Написал бы какой, но думаю по ходу станет ясно.
 
5,018
47
783
Алгоритм генерации биомов.
Твой, который ты кидал мне в TestDimension
P.S Пришлось конечно структуру немного переделать, так как у тебя миллион классов на каждый метод, что овернеудобно, но каждому свое. Но суть кода я не менял.
Java:
public class GenLayerBiomes extends GenLayer {

    private int ocean = Biome.getIdForBiome(RegBiomes.OCEAN);
    private int metamorphic_hills = Biome.getIdForBiome(RegBiomes.METAMORPHIC_HILLS);
    private int metamorphic_plains = Biome.getIdForBiome(RegBiomes.METAMORPHIC_PLAINS);
    private int magmatic_hills = Biome.getIdForBiome(RegBiomes.MAGMATIC_HILLS);
    private int magmatic_plains = Biome.getIdForBiome(RegBiomes.MAGMATIC_PLAINS);
    private int sedimentary_knoll = Biome.getIdForBiome(RegBiomes.SEDIMENTARY_KNOLL);
    private int sedimentary_plains = Biome.getIdForBiome(RegBiomes.SEDIMENTARY_PLAINS);

    public final int[] all_biomes = {ocean,metamorphic_hills, metamorphic_plains, magmatic_hills, magmatic_plains, sedimentary_knoll, sedimentary_plains };

    public GenLayerBiomes(long seed) {
        super(seed);
    }

    @Override
    public int[] getInts(int x, int z, int width, int height) {
        int[] dest = IntCache.getIntCache(width * height);

        for (int dz = 0; dz < height; dz++) {
            for (int dx = 0; dx < width; dx++) {
                initChunkSeed(dx + x, dz + z);
                dest[(dx + dz * width)] = this.all_biomes[nextInt(this.all_biomes.length)];
            }
        }

        return dest;
    }
}

Написал бы какой, но думаю по ходу станет ясно.
Я немного некорректо вопрос задалю. Дефолтный биом всегда равнина.
Собственно не в этом даже дело то, а в том что не сетается высота.

И как определяешь свой океан.
Java:
public static final Biome OCEAN = new OceanBiome(new Biome.BiomeProperties("r_ocean").setBaseHeight(-1F).setHeightVariation(0.1F).setTemperature(0.2F).setRainfall(0.6F), null, OceanBiome.Type.OCEAN);
 
102
3
77
Твой, который ты кидал мне в TestDimension
P.S Пришлось конечно структуру немного переделать, так как у тебя миллион классов на каждый метод, что овернеудобно, но каждому свое. Но суть кода я не менял.
Нет, ты кинул мне всего лишь один слой. Кинь весь алгоритм (метод, где переопределяешь по цепочке слой GenLayer).
 
5,018
47
783
Аа, понял.. да тут чисто увеличивал размеры то

Java:
    public GenLayer[] getModdedBiomeGenerators(WorldType worldType, long seed, GenLayer[] original)
    {
        GenLayer genlayer = new GenLayerBiomes(1L);
        genlayer = new GenLayerZoom(1001L, genlayer);
        genlayer = new GenLayerZoom(1002L, genlayer);
        genlayer = new GenLayerZoom(1003L, genlayer);
        genlayer = new GenLayerZoom(1004L, genlayer);
        genlayer = new GenLayerFuzzyZoom(2000L, genlayer);
        genlayer = new GenLayerFuzzyZoom(2001L, genlayer);
        genlayer = new GenLayerFuzzyZoom(2002L, genlayer);
        
        genlayer = new GenLayerVoronoiZoom(10L, genlayer);
        genlayer.initWorldGenSeed(seed);
        return new GenLayer[] { genlayer, genlayer };
    }
 
102
3
77
Во, я только сейчас заметил свою ошибку и уже исправил тот пост, где выкладывал Test_Dimension.rar
По факту у тебя всегда биомы генерировались "не на своих местах", просто ты этого не заметил.

Ошибка у тебя в этом коде:
Java:
return new GenLayer[] { genlayer, genlayer };
Если что, генерация самой поверхности происходит по другому массиву, который меньше. Код нужно исправить. Вместо
Java:
genlayer = new GenLayerFuzzyZoom(2002L, genlayer);
       
genlayer = new GenLayerVoronoiZoom(10L, genlayer);
genlayer.initWorldGenSeed(seed);
return new GenLayer[] { genlayer, genlayer };
Вставь этот
Java:
GenLayer genlayer_pre = new GenLayerFuzzyZoom(2002L, genlayer);

genlayer = new GenLayerVoronoiZoom(10L, genlayer_pre);
genlayer_pre.initWorldGenSeed(seed);
genlayer.initWorldGenSeed(seed);
return new GenLayer[] { genlayer_pre, genlayer };
Думаю теперь все должно быть нормально. Если что, тут тоже выложу исходники.
 

Вложения

  • Test_Dimension.rar
    9.2 KB · Просмотры: 2
102
3
77
Вообще в этом чанке океан
9 GenLayerVoronoiZoom 16x16.png
В радиусе 5 чанков тоже океан
9 GenLayerVoronoiZoom 80x80.png
На островах какой биом показывает?
 
Сверху