Проверка на биом

Версия Minecraft
1.12.2
2,932
44
598
Доброго времени суток Земляне и Чужие!
Сегодня у меня появился вопрос: Как в 1.12.2 идёт проверка на биом? В той же 1.7.10 это можно было сделать так: if (world.getBiomeGenForCoords(x, z).biomeID == BiomeGenBase.extremeHills.biomeID
В 1.12.2 там же биомы изменили, и как теперь можно на 1.12.2 сделать такую проверку на биом?
 
Последнее редактирование:
2,932
44
598
Спасибо огромное! Всё работает.
Java:
private void generateSurface(World world, Random random, int x, int z) {
        if(world.getBiome(new BlockPos(x, z, 0)) == RegBiome.BURNEDWOOD) {   
        for (int y = 60; y < world.provider.getHeight(); y++) {
            int x1 = 8 + (x + random.nextInt(8));
            int z1 = 8 + (z + random.nextInt(8));
            for (int j = 0; j < 16; j++) {
                for (int x2 = -2; x2 <= 2; ++x2) {
                    for (int z2 = -2; z2 <= 2; ++z2) {
                        if (world.getBlockState(new BlockPos(x1 + x2, y - 1, z1 + z2)) == RegBlocks.blockburntgrass
                                .getDefaultState() && world.isAirBlock(new BlockPos(x1 + x2, y - 1, z1 + z2))); {
                            if (random.nextInt(25) == 5) {
                                world.setBlockState(new BlockPos(x1 + x2, y - 1, z1 + z2),
                                        RegBlocks.ash.getDefaultState(), 3);
                            }
                        }
                    }
                }
            }
        }
    }
}
}
 
2,932
44
598
3,005
192
592
Что за бред вообще? ты проверяешь одно и тоже место сначала на свой блок, потом на воздух? Стоп. Это проверка вообще не работает
Удаляй все.
1529408927750.png
 
Какая разница? речь идет не о тысячи мегабайт, а о сотых долях того же самого мегабайта. Да и новичку не понятно.
В одиночных случаях это даже больше мусорит чем финальный позишион.
 
917
22
332
Полностью согласен с @Dahaka.
Не знаю, что ты генерируешь, поэтому просто изменил твой код с использованием BlockPos.MutableBlockPos:
Java:
    private void generateSurface(World world, Random random, int x, int z) {
        if(world.getBiome(new BlockPos(x, 0, z)) == RegBiome.BURNEDWOOD) { 
            BlockPos.MutableBlockPos mpos = new BlockPos.MutableBlockPos();
            for (int y = 60; y < world.provider.getHeight(); y++) {
                int x1 = 8 + (x + random.nextInt(8));
                int z1 = 8 + (z + random.nextInt(8));
                for (int j = 0; j < 16; j++) {
                    for (int x2 = -2; x2 <= 2; ++x2) {
                        for (int z2 = -2; z2 <= 2; ++z2) {
                            //А что ты тут делал, для меня загадка, однако я предположил, что ты проверяешь
                            //на -1 твой блок травы, а на месте установки - блок воздуха и заменил
                            //"world.getBlockState(mpos.setPos(x1 + x2, y - 1, z1 + z2)) == RegBlocks.blockburntgrass.getDefaultState()"
                            //на
                            //"world.getBlockState(mpos.setPos(x1 + x2, y - 2, z1 + z2)) == RegBlocks.blockburntgrass.getDefaultState()"
                            //Надеюсь я прав.
                            if (world.getBlockState(mpos.setPos(x1 + x2, y - 2, z1 + z2)) == RegBlocks.blockburntgrass.getDefaultState() && world.isAirBlock(mpos.setPos(x1 + x2, y - 1, z1 + z2))); {
                                if (random.nextInt(25) == 5) {
                                    world.setBlockState(mpos.setPos(x1 + x2, y - 1, z1 + z2), RegBlocks.ash.getDefaultState(), 3);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
 
2,505
81
397
Какая разница? речь идет не о тысячи мегабайт, а о сотых долях того же самого мегабайта
Зачем мусорить, если можно не мусорить?


Да и новичку не понятно.
Причем тут новичек? Или ты про Гарика? То что он за год ничему не научился это лишь его проблемы. И это не повод писать код хуже.
 
Сверху