Генерация руд

Версия Minecraft
1.16+
API
Forge
Создаю мод. Есть руда. Нужно сделать её генерацию. Нашёл гайды на 1.12, 1.15 и другие, но на 1.16 нет ничего. Наверно я глупый и оно должно и на 1.16 работать, но у меня почему-то не работает. Помогите пожалуйста.
 
7,099
324
1,510
Я стилизовал это под мой мод, подскажите какой параметр отвечает за частоту генерации, а какой за высоту. Как я понял за высоту вот это:

Java:
int j = random.nextInt(16) + pos.getX();
int k = random.nextInt(16) + pos.getZ();
int l = random.nextInt(64) + 4;
return new BlockPos(j, l, k);
 
7,099
324
1,510
А так будет от 5 до 6. Так?
Java:
int l = random.nextInt(1) + 5;
Значение в аргументе рандома не включительное, почитай javadoc этого метода

Хорошо. Тогда ещё вопрос, как сделать 1 руду на весь чанк?
Генерировать в каждой координате чанка. У тебя там случайные значения, которые не будут заполнять все координаты
 
Генерировать в каждой координате чанка. У тебя там случайные значения, которые не будут заполнять все координаты
тогда скажите пожалуйста как генерировать 1 руду в чанке на высоте от 5 до 6.
 
7,099
324
1,510
Тот метод возвращает поток блокпозов. Сколько их будет в потоке - столько руды сгенерируется в чанке.
Поэтому нужен поток длиной 1.
Чтобы генерировать в заданном диапазоне высот можно юзать формулу y=startY+random.nextInt(endY-startY+1)
По горизонтали обычно берут слчайное число от 0 до 16(невключительно), прибпюавленное к координате начала чанка. Пример из моего делает именно это, так что возьми вычисление горизонтальных координат оттуда
 
Тот метод возвращает поток блокпозов. Сколько их будет в потоке - столько руды сгенерируется в чанке.
Поэтому нужен поток длиной 1.
Чтобы генерировать в заданном диапазоне высот можно юзать формулу y=startY+random.nextInt(endY-startY+1)
По горизонтали обычно берут слчайное число от 0 до 16(невключительно), прибпюавленное к координате начала чанка. Пример из моего делает именно это, так что возьми вычисление горизонтальных координат оттуда
Вот так?

Java:
 public Stream<BlockPos> getPositions(Random random, NoPlacementConfig config, BlockPos pos) {
                            return IntStream.range(1, 1).mapToObj((count) -> {
                                int j = random.nextInt(16) + pos.getX();
                                int k = random.nextInt(16) + pos.getZ();
                                int startY = 5;
                                int endY = 6;
                                int l = startY+random.nextInt(endY-startY+1);
                                return new BlockPos(j, l, k);
                            });
                        }
 
7,099
324
1,510
Да, но в данном случае можно проще:
Java:
 public Stream<BlockPos> getPositions(Random random, NoPlacementConfig config, BlockPos pos) {
     int j = random.nextInt(16) + pos.getX();
     int k = random.nextInt(16) + pos.getZ();
     int startY = 5;
     int endY = 6;
     int l = startY+random.nextInt(endY-startY+1);
     return Stream.of(new BlockPos(j, l, k));
 }
 
Сверху