Как работает параметр "chancesToSpawn" - Шанс генерации блоков на чанк?

Версия Minecraft
1.7.10
2,932
44
598
Доброго времени суток Земляне и Чужие!
Сегодня у меня появился новый вопрос: Как работает параметр "chancesToSpawn" - Шанс генерации блоков на чанк? Получается разработчик(я) выставляет значение(число) которое является степенью (относительную мерою, количественную оценку) возможности генераций руды на чанк! Так вот как работать со степенью? Какая степень у 100% генерацией? Какая степень будет у самой маленького шанса на генерацией руды в чанке?
 

Eifel

Модератор
1,624
79
609
Чет написал такое, аж страшно стало. Я лично нифига не понял. Кто знает как работает твоя переменная, тут код надо видеть, как ты ее используешь, куда передаешь... Если это параметр, то в каком он методе
 
Последнее редактирование:
2,932
44
598
Чет написал такое, аж страшно стало. Я лично нифига не понял. Кто знает как работает твоя переменная, тут код надо видеть, как ты ее используешь, куда передаешь...
Ну вот например код:
Java:
public void generateOverworld(World world, Random random, int x, int z) {
        
        // Vanilla
        this.addOreSpawn(OresRegister.oreQuartz, world, random, x, z, 1, 1, 7 + random.nextInt(14), 1, 5, 65);
        this.addOreSpawn(Blocks.coal_ore, world, random, x, z, 1, 1, 1 + random.nextInt(4), 1, 5, 65);
        this.addOreSpawn(Blocks.redstone_ore, world, random, x, z, 1, 1, 1 + random.nextInt(15), 1, 5, 20);
        this.addOreSpawn(Blocks.diamond_ore, world, random, x, z, 1, 1, 1 + random.nextInt(6), 1, 5, 15);
        this.addOreSpawn(Blocks.emerald_ore, world, random, x, z, 1, 1, 1 + random.nextInt(7), 1, 5, 12);
        this.addOreSpawn(Blocks.gold_ore, world, random, x, z, 1, 1, 1 + random.nextInt(8), 1, 5, 50);
        this.addOreSpawn(Blocks.iron_ore, world, random, x, z, 1, 1, 1 + random.nextInt(9), 1, 5, 65);
        this.addOreSpawn(Blocks.lapis_ore, world, random, x, z, 1, 1, 1 + random.nextInt(10), 1, 5, 65);
        // Mehanism
        this.addOreSpawn(OresRegister.oreCopper, world, random, x, z, 1, 1, 1 + random.nextInt(5), 1, 5, 65);
        this.addOreSpawn(OresRegister.oreTin, world, random, x, z, 1, 1, 1 + random.nextInt(17), 1, 5, 65);
        this.addOreSpawn(OresRegister.oreOsmium, world, random, x, z, 1, 1, 1 + random.nextInt(13), 1, 5, 35);
        // ImmersiveEngineering
        this.addOreSpawn(OresRegister.oreLead, world, random, x, z, 1, 1, 1 + random.nextInt(11), 1, 5, 55);
        this.addOreSpawn(OresRegister.oreNickel, world, random, x, z, 1, 1, 1 + random.nextInt(12), 1, 5, 55);
        this.addOreSpawn(OresRegister.oreSilver, world, random, x, z, 1, 1, 1 + random.nextInt(16), 1, 5, 55);
        // TConstruct
        this.addOreSpawn(OresRegister.oreArdite, world, random, x, z, 1, 1, 1 + random.nextInt(1), 1, 5, 10);
        this.addOreSpawn(OresRegister.oreAluminum, world, random, x, z, 1, 1, 1 + random.nextInt(2), 1, 5, 65);
        this.addOreSpawn(OresRegister.oreCobalt, world, random, x, z, 1, 1, 1 + random.nextInt(18), 1, 4, 5);
    }

    public void addOreSpawn(Block block, World world, Random random, int blockXPos, int blockZPos, int maxX, int maxZ, int maxVeinSize, int chancesToSpawn, int minY, int maxY) {
        int diffBtwnMinMaxY = maxY - minY;
        for (int x = 0; x < chancesToSpawn; x++) {
             int posX = blockXPos + random.nextInt(maxX);
            int posY = minY + random.nextInt(diffBtwnMinMaxY);
            int posZ = blockZPos + random.nextInt(maxZ);
            (new WorldGenMinable(block, maxVeinSize)).generate(world, random, posX, posY, posZ);
        }
    }
У меня руда почти всегда генерируется в чанке: (Скриншот с вк, включи впн)
88jWiVx4dVM.jpg

И мне надо уменьшить шанс её генераций! Как воть ето сдэлать?
 
2,932
44
598
Наверное, уменьшить chancesToSpawn
Так он и так уже 1! При том что шанс очень маленький она всё равно генерируется в чанке! Или может это не я понял как работает параметр: "chancesToSpawn" ?
Может ты размер жилы уменьшить хочешь?
Нет! Именно шанс генераций!
 
Последнее редактирование:
5,018
47
783
1,976
68
220
Скриншот с вк, включи впн
Они нормально и без ВПН грузятся поскольку pp.userapi.com не заблокирован.
[минуткарекламы]
Алсо вконтакт - это вечное медиахранилище, которое НИКОГДА не удалит ваши фото - им проще купить новых дисков, чем разбираться с фрагментацией существующих.
[/минуткарекламы]

Гарик, я кому метод генерации присылал?! Там шанс спауна именно в процентах.
А ты что используешь, твою-налево?!
 
числа с плавающей точкой
Вот это я понимаю - число с плавающей точкой!
------------------
chancesToSpawn - это сколько раз у тебя в чанке будет генерироваться руда. Если поставишь 10 - у тебя будет 10 руды каждого типа в чанке, 2 -2 руды, и т.д. Чтобы сделать меньше, тебе придется создать еще одну переменную рандома(или использовать существующую), получать оттуда nextInt(3), и если этот инт >1, то генерировать....
Ну вот например код:
Java:
public void addOreSpawn(Block block, World world, Random random, int blockXPos, int blockZPos, int maxX, int maxZ, int maxVeinSize, int chancesToSpawn, int minY, int maxY) {
       if(random.nextInt(4) >= 2) return;
       int diffBtwnMinMaxY = maxY - minY;
        for (int x = 0; x < chancesToSpawn; x++) {
             int posX = blockXPos + random.nextInt(maxX);
            int posY = minY + random.nextInt(diffBtwnMinMaxY);
            int posZ = blockZPos + random.nextInt(maxZ);
            (new WorldGenMinable(block, maxVeinSize)).generate(world, random, posX, posY, posZ);
        }
    }
На работоспособность не проверял.
 
5,018
47
783
Не понял? На то и рассчитывалось, что гарик не догадается что можно сделать float и установить число меньше единицы. А попался ты, хыхы.
 
Не понял? На то и рассчитывалось, что гарик не догадается что можно сделать float и установить число меньше единицы. А попался ты, хыхы.
Цикл с дробным числом??? или ты меня так троллишь??
 
Сверху