- 13
- 1
Создаю мод. Есть руда. Нужно сделать её генерацию. Нашёл гайды на 1.12, 1.15 и другие, но на 1.16 нет ничего. Наверно я глупый и оно должно и на 1.16 работать, но у меня почему-то не работает. Помогите пожалуйста.
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);
int l = random.nextInt(1) + 5;
return IntStream.range(1, 1).mapToObj((count) -> {
int j = random.nextInt(16) + pos.getX();
int k = random.nextInt(16) + pos.getZ();
int l = random.nextInt(5) + 6;
return new BlockPos(j, l, k);
});
Значение в аргументе рандома не включительное, почитай javadoc этого методаА так будет от 5 до 6. Так?
Java:int l = random.nextInt(1) + 5;
Генерировать в каждой координате чанка. У тебя там случайные значения, которые не будут заполнять все координатыХорошо. Тогда ещё вопрос, как сделать 1 руду на весь чанк?
тогда скажите пожалуйста как генерировать 1 руду в чанке на высоте от 5 до 6.Генерировать в каждой координате чанка. У тебя там случайные значения, которые не будут заполнять все координаты
y=startY+random.nextInt(endY-startY+1)
Вот так?Тот метод возвращает поток блокпозов. Сколько их будет в потоке - столько руды сгенерируется в чанке.
Поэтому нужен поток длиной 1.
Чтобы генерировать в заданном диапазоне высот можно юзать формулуy=startY+random.nextInt(endY-startY+1)
По горизонтали обычно берут слчайное число от 0 до 16(невключительно), прибпюавленное к координате начала чанка. Пример из моего делает именно это, так что возьми вычисление горизонтальных координат оттуда
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);
});
}
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));
}